본문 바로가기
데이터 분석

[머신러닝] 데이터 전처리 - 변수 추가/제거

by 데이널 2023. 9. 4.

1. 변수 추가

지금까지는 원자료를 기준으로 데이터를 전처리 했다면 이번에는 새로운 변수를 추가하는 기법입니다. 새로운 변수를 추가한다는 것은 기존 변수보다 의미있는 특성을 찾아 낸다는 점에서 아이디어가 필요한 작업입니다. 역시 비지니스를 분석과 데이터의 형태 분석이 중요한 요소입니다.

 

 

물론 변수를 추가하는 것이 어떤 경우던 효과가 좋은 것은 아닙니다. 기존 변수와 상관도가 너무 높은 변수를 추가하게 된다면 다중공선성에 의해 더 좋지 않은 모델을 만들 수 도 있습니다.  

  • 다중공선성(Multicollinearity)은 통계학에서 변수들 간에 강한 상관관계가 나타나는 경우 입니다. 일반적으로 회귀분석에서 사용되는 용어이며 변수간의 선형 독립이 아닌 경우 모델에 부정적인 영향을 미치는 현상을 말합니다.

변수를 추가하는 목적은 수집한 원자료보다 더 중요도 높은 변수를 얻으려고 하는 것입니다. 변수 경쟁력이 없으면 의미가 없습니다. 

통계(요약) 변수

변수 추가하는 유형 중에 가장 기본 적인 방법이 수집된 변수를 이용하여 통계(aggregate) 적인 변수를 추가하는 것입니다. 이 방법은 데이터를 요약해서 나온 정보이기 때문에 요약 변수라고도 합니다. 많이 사용되는 방법으로 년소득 차이값, 전년도 온도와 현재 온도의 차이 등 편차를 계산하여 추가하는 방법입니다. 또 다른 방법으로 추이값이나 증감여부도 생각해 볼 수 있습니다. 변수의 기울기를 이용하면 새로운 변수를 추가할 수 있습니다. 

 

단순한 방법으로는 시계열 통계 변수를 추가할 수 있습니다. 요일 통계, 시간 통계, 특정기간 횟수/빈도 등 시계열적인 요소가 영향도가 큰 경우는 이러한 변수 들이 유효합니다. 특정 변수의 최소값(min), 최대값(max), 합계(sum), 평균(avg) 도 추가하여 활용할 수 있습니다. 경우에 따라 이런 단순한 통계 변수도 모델에 좋은 영향을 주기도 합니다. 

 

데이터 전처리 변수 추가
데이터 전처리 변수 추가

파생 변수

파생 변수의 경우는 데이터 분석가의 Insight가 필요합니다. 분석가가 특정 조건을 만족하는 의미 부여가 가능한 변수를 추가하는 방식입니다. 예를 들어, 변수의 속성을 분리 할 수도 있습니다. '나이' 변수가 있었다면 그룹핑한 변수인 연령대 변수를 추가할 수 있습니다. 그리고 주민등록번호의 경우도 의미적으로 성별 변수를 만들 수도 있습니다. 


파생 변수 생성을 위한 모델을 만들 수도 있습니다. 유사군집, 분류 방법을 통해 변수를 추가하는 방법 입니다. 예를 들어,  과목들을 군집하여 전공분류라는 추가 변수를 만들 수도 있습니다. 

 

고려사항

변수를 추가할 때는 기존 변수와의 상관성에 대해 확인이 필요합니다. 상관성 높다면 다중공선성 문제는 없는지 확인 필요합니다. 신규로 추가흔 변수가 모델에 의미있게 활용되는지 확인 해야 합니다. 방법은 기존 변수로 모델 생성하고 파생 변수 추가하여 모델 생성 후 서로 비교해 보면 됩니다. 만약 파생 변수를 추가한 모델이 더 성능이 낮다면 파생 변수는 의미가 없다는 것을 알 수 있습니다. 이렇게 추가한 변수별로 모델 테스트를 해 보면 최적의 변수를 추가할 수 있습니다. 

 

2. 변수 제거

위에서 변수 추가한 내용을 다루웠습니다. 반대로 변수 제거 방법도 데이터 전처리에서 중요한 기법입니다. 변수 제거라고 하면 일반적으로 차원 축소를 말하는데, 이번 포스팅에서는 이상치 제거까지 같이 이야기 하도록 하겠습니다.

 

이상치 제거(극단치, Outlier)

이상치를 제거 하는 방법을 업무 도메인 별로 다양한 방법이 있을 수 있습니다. 일반적인 방법으로는 Z-score(표준편차) 값을 구해서 +3, -3 표준편차 밖은 이상치로 간주하고 제거하는 방법입니다. 또 다른 방법으로 IQR(Inter Quantile Range) 방식이 있습니다. 이 방식은 데이터 값을 4등분(25%, 50%, 75%, 100%)으로 나누고 75% 지점의 값과 25% 지점의 값의 차이를 IQR이라고 합니다. +- 1.5 IQR 보다 밖에 있는 데이터는 제거합니다. IQR에 대한 더 자세한 설명은 링크를 참고해 주세요. 

 

다시 한번 강조하지만 이상치 제거 판단은 도메인 마다 다릅니다. 그래서 해당 업무에 분석과 도메인날리지 중요 합니다.  경우에 따라 실제 업무 담당자의 인터뷰를 통해 확인 받기는 것도 방법입니다. 데이터 시작화를 통해 확인 후 제거하는 방법도 많이 사용합니다. 시각화를 하면 제거해야 할 대상이 명확이 보이는 장점이 있습니다. 

 

이상치 제거
이상치 제거

차원 축소

차원 축소를 하는 이유는 변수가 많으면 복잡도나 높고 과적합 발생할 수 있습니다. 또 변수를 많기 때문에 계산량이 올라가 알고리즘 생성 속도가 느려지는 단점이 있습니다. 특정 피처에 종속성이 강한 불필요한 피처는 아예 제거하는 것이 차원 축소 입니다.

 

딥러닝에서는 차원 축소를 보통은 하지 않습니다. 하지만 업무적으로 확실한 변수를 제거하는 것은 딥러닝에서도 계산량을 줄여 모델 생성 속도를 단축할 수 있습니다. 차원 축소에는 두가지 방법이 있습니다. 특성 선택(Feature selection)과 특성 추출(feature extraction) 입니다. 

 

1) Feature Selection

데이터의 특징을 잘 나타내는 주요 피처만 선택하는 방법을 말합니다. feature selection을 위해 보통 타겟값(Y)과 상관분석을 진행합니다. 상관도가 낮은 X변수를 기준으로 제거합니다. 일부 데이터가 제거 되기 때문에 데이터 특성의 소실이 발생하는 단점이 있습니다. feature selection에 대한 자세한 방법은 링크를 참고하세요. 

 

2) Feature Extraction 

몇개의 요인을 분석을 통해 4~5개 요인 점수 가지고 예측하는 방식입니다. 최종적으로 몇개의 차원으로 줄이는 방법으로 특성들을 아에 제거하지 않고 압축했기 때문에 데이터의 특성의 소실이 적다는 장점이 있습니다. 단, 추출된 특성들의 의미를 해석하기는 어렵습니다. 주성분 분석(PCA), LDA 등의 기법이 있습니다. 

전처리에 의해 변수 제거(차원축소, 이상치제거) 모형과 제거 안된 모형을 비교하는 방법을 통해 변수 제거가 의미 있는지 결과 분석을 할 수 있습니다.