230703_머신러닝: 데이터 전처리 - 이상치 처리와 범주형/수치형 데이터의 인코딩 및 스케일링

안인균·2023년 7월 3일
0
post-thumbnail

데이터 전처리

이상치 (Outlier) 처리

의미 그대로 이상한 값, 튀는 값, 패턴을 벗어난 값으로 그 Feature를 가지는 대부분의 값들과는 동떨어진 값

  • 오류값
    • 잘못 수집된 값.
    • 결측치로 변환 후 처리한다.

  • 극단치 (분포에서 벗어난 값)
    • 정상적인 값이나 다른 값들과 다른 패턴을 가지고 있는 값
    • 극단적으로 크거나 작은 값
    • 처리 :
      1. 그 값을 그대로 유지
      2. 결측치로 변환 후 처리
      3. 다른 값으로 대체 : 보통 그 값이 가질 수 있는 Min/Max 값을 설정한 뒤 그 값으로 변경

이상치 확인하는 방법

  • 박스플롯 활용

👉 박스플롯 : 수치형 데이터 타입일 경우, 이를 통해 이상치 값들을 확인할 수 있다.

박스플롯에서의 범위 기준
: "(1분위수 - IQR*1.5)" ~ "(3사분위수 + IQR*1.5)"

이 범위를 벗어난 값들이 이상치
'1.5'는 파라미터로 이상치들의 범위를 설정할 수 있다.
'IQR' : Inter quartile range 1~3사분위수의 범위. -> Q3 - Q1


Feature 타입별 전처리

🚻 범주형(Categorical) 데이터

개별 값들이 이산적이고, 데이터가 가질 수 있는 값의 범주가 몇가지로 정해져 있는 데이터 타입

👉 인코딩 :
원본 형태를 다른 형태로 변환, 규칙성이 있어야함.
인코딩을 한 내용을 다시 디코딩 (원래 상태로 변환)할 수 있어야 한다.

1. 레이블 인코딩(Label Encoding)

  • 범주형 Feature의 고유값들 오름차순 정렬 후 0 부터 1씩 증가하는 값으로 변환

🚨 레이블 인코딩은 숫자 크기의 차이가 모델에 영향을 주지 않는 트리 계열 모델 (DecisionTree, RandomForest,...) 에 적용해야한다.
선형 계열 (Logistic Regressor, SVM,...)과 같은 숫자크기가 모델에 영향을 받는 모델들에는 사용하면 안된다.

🚨 인코딩할 때 항상 생각해야하는 것 :

여러 Feature들을 레이블 인코딩할 때, 레이블 인코딩은 한번에 실행하는 것이 어렵기 때문에 하나씩 해야한다. 반복문을 통해 해당 인코딩을 할 때, 인코딩하는 것만을 목적으로 생각해서는 안됩니다.
디코딩, 원본 형태로 다시 변환할 수 있는 것도 생각해야하 합니다.
인코딩만 생각하지말고 항상 디코딩을 하는 것도 생각해야한다.

2. 원핫 인코딩(One-Hot Encoding)

  • N개의 클래스를 N 차원의 One-Hot 벡터로 표현되도록 변환
    • 고유값들을 피처(컬럼)로 만들고 정답에 해당하는 열은 1로 나머진 0으로 표시한다..
  • 숫자의 크기 차이가 모델에 영향을 미치는 선형 계열 모델(로지스틱회귀, SVM, 신경망)에서 범주형 데이터 변환시 Label Encoding보다 One Hot Encoding을 사용한다.

🚨 레이블 인코딩은 1차원 형태의 리스트, 시리즈를 넣어야하고,
원핫 인코딩은 2차원 배열, 데이터프레임을 넣어야 한다.


🔢 수치형(Numerical) 데이터

숫자 데이터 타입, 보통 중복된 값이 없거나 적고 값으로 올수 있는 대상이 정해져 있지 않은 값. 이산형과 연속형 변수로 구성된다.

Feature Scaling(정규화)

  • 데이터의 속성인 각 feature들간의 값의 척도(Scale)를 같은 기준으로 통일한다.

  • 트리계열을 제외한 대부분의 머신러닝 알고리즘들이 feature간의 서로 다른 척도(Scale)에 영향을 받는다.

  • Scaling(정규화)은 train set으로 학습(fitting) 한다. test set, validation set 그리고 모델이 예측할 새로운 데이터는 train set으로 학습한 scaler를 사용해 변환만 한다.
    • test set과 validation set은 모델이 앞으로 예측할 새로운 데이터에 대해 어느 정도 성능을 가지는지를 평가하는 용으로 쓰인다. 그런데 새로운 데이터들이 모델링할 때 사용할 데이터셋(sample)의 scale과 같다라고 보장할 수 없으므로 전체 sample 데이터셋을 학습 시킨 뒤 train/validation/test 으로 나누는 것은 모델의 정확한 성능평가를 할 수 없다.

🚩🚩 연속형 데이터는 모델에 따라서 Feature Scaling 할 지, 말 지가 결정된다.
<-> 범주형 데이터의 경우, 모델에 따라서 Label encoding을 할지, One-hot encoding을 할지가 결정된다. (어찌됐든, encoding 과정은 무조건 거친다.)
그러나 연속형 데이터의 경우, Feature Scaling을 안하는 경우도 있다는 것.

  • 표준화(Standardization) Scaling
    • StandardScaler 사용
  • Min Max Scaling
    • MinMaxScaler 사용

0개의 댓글