BookmarkSubscribeRSS Feed

[SAS 활용 노하우] EDA: 결측값 입력, 변수변환, 변수 선택

Started ‎01-31-2022 by
Modified ‎01-31-2022 by
Views 1,251

 

 

수집한 데이터가 들어왔을 때, 이를 다양한 각도에서 관찰하고 이해하는 과정이 필요합니다.

이를 EDA(Exploratory Data Analysis)라고 하며 다양한 방법으로 데이터를 이해할 수 있는 방법이 존재합니다. 그 중 결측값이 있을 시 결측값을 대체하는 방법, 또한 변수를 변환하는 방법 그리고 데이터 모델링에 높은 예측력을 위해 데이터 중 일부만 선택하는 변수 변환의 방법을 알아보겠습니다.

이번 게시글에 사용될 데이터는 BANK 데이터로 25개의 칼럼과 1,060,038 개의 행이 있습니다.

아래는 BANK 데이터의 25개의 칼럼에 대한 설명입니다.

 

image.png

 

image (16).png

 

 

데이터 일부를 살펴보면 결측값이 존재한다.

 

 

 image (17).png

 

 

1. 결측값 대체(IMPUTATION)

데이터의 결측값 문제는 항상 조심스레 다뤄야할 문제입니다.

데이터에 결측값이 존재하면, 분석결과에 데이터 편향이 (biasing the data) 일어나기 때문입니다.

완벽한 케이스 분석(Complete Case Analysis)는 오직 결측값이 없는 데이터에서 일어납니다.

결측값을 해결하기 위해서 일반적인 방법은 Imputation 입니다 . Imputation 은 결측값에 'reasonable'한 값을 대체하는 행위입니다.

reasonable 한 방법은 mean, median과 같은 요약 통계량을 기반으로 할 수도 있고, 예를 들어 결측량을 예측하기 위해 다른 입력을 사용하여 모형을 만들 수도 있는 보다 발전된 방법일 수도 있습니다.

이번 예제에서는 다양한 방법으로 결측값을 대체해보겠습니다 .

1) Impute Missing Values By Median _ 중위수 대체

 

proc varimpute data=mycaslib.bank;
 input demog_age rfm3 / ctech=mean;
 output out=mycaslib.bank_imputed copyvars=(_all_);
run;

 

 

2. Transforming Inputs _ 입력변수의 변환

 

 

입력변수의 변환은 일반적인 데이터 준비 EDA 작업 중 하나입니다.

입력변수의 변환으로 Heavy Tails 나 outliers 효과를 줄여줄 수 있습니다. 또한, 모델 예측의 편향을 줄여주거나 데이터가 일정하게 표준화 범위에 들어가게 해줍니다 .(reduce the bias predictions or standardize variables)

입력변수 변환은 Square, Square Root, Log, Inverse 변환 등을 통해 가능합니다 .

 

image (18).png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SAS Studio 에서는 [작업 및 유틸리티] > [작업] > [데이터] > [데이터 변환] 에서 입력변수의 변환이가능합니다.

 

image (19).png

 

 

[데이터 변환] 에서 변수를 추가하여 역 제곱, 제곱근, 역 변환을 실시하였습니다.

demo_age : 역제곱 변환

rfm5: 제곱근 변환

rfm9: 역변환

그러면,

 

SE-f365e9f3-f77b-4183-b833-35001bbc1c59.png

 

데이터를 지정하고 변수변환이 필요한 변수를 지정하면 오른쪽과 같이 변수 변환 코드가 자동으로 생성됩니다.

또한, 코드를 직접 작성하여 변수변환을 지정할 수 있습니다.

 

image_(6).png

 

[코드] > [편집]을 누르면 직접 코딩하여 변수변환을 진행할 수 있습니다.

 

 

sqrt_rfm12=sqrt(rfm12);

 

위와 같은 코드를 직접 넣어 변수변환을 진행하였습니다.

3. Variable Selection _ 변수 선택

 

데이터에서 모든 변수를 모델링에 사용하면 일반화되지 못하는 문제점이 발생합니다.

모든 예측 모델의 목적은 결국 새로운 데이터에 적용되는 것입니다. 모델이 하나의 데이터 소스에 과적합되면 동일한 데이터 소스에 대한 예측이 매우 정확할 수 있습니다. 새 데이터에 적용할 때 상당한 정확도를 잃을 수 있습니다. 사용 가능한 모든 변수를 사용하는 모델은 모델을 구성하는 데 사용된 데이터 세트에 과적합될 가능성이 높습니다. 이를 피하는 한 가지 방법은 최종 모델에서 모든 입력의 하위 집합만 사용하는 것입니다.

SAS Viya navogation pane에서 [Variable Selection]를 통해 간편하게 변수선택을 할 수 있습니다.

사용할 데이터는 Bank 데이터로

 

image (20).png

 

 

 

 

 

Roles 에 Supervised Variable Selection 을 선택합니다.

 

 

image (21).png

 

 

 

 

 

 

 

Target에는 b_tgt를 넣고 옵션으로 'Use a nominal target'을 클릭합니다.

입력변수에는 cnt_tgt, int_tgt를 제외한 모든 변수를 사용합니다.

 

 

 

 

image (22).png

 

 

 

 

 

 

 

Nominal Imput으로는 cat_imput1과 cat_imput2를 넣습니다.

 

 

image (23).png

 

Run을 클릭하면 아래와 같은 결과가 나옵니다.

 

image (24).png

 

 

 

설명된 분산의 비율 또는 기타 적합 통계를 분석하여 변수를 만듭니다. 결국,반복에 의해 설명된 분산을 볼 수 있습니다.

Version history
Last update:
‎01-31-2022 09:39 AM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags