본문 바로가기
IT/머신러닝

머신러닝 데이터 전처리(Preprocessing)

by unicorn 2022. 5. 6.
728x90
반응형

데이터전처리 

1) 결손값 처리 (Null/ NaN 처리)

  1.데이터가 충분한 경우 - 값이 누락된 데이터를 제거함

  2. 데이터가 제한적일 경우 - 누락된 값을 추정해서 채움

2)데이터 인코딩(레이블, 원-핫 인코딩)

  • 머신러닝알고리즘은 문자열 데이터 속성을 입력값으로 받지않기 때문에 문자형이 아닌 숫자형으로 표현 되어야한다.
  • 레이블인코딩 - 남, 여 → 1, 0 , 숫자값이기 때문에 의도하지 않아도 1이 더크다는 의미로 영향을 받는 알고리즘이 있을수있다. 따라서 회귀에는 적용하지말고 tree 계열 ML 알고리즘은 적용가능 , 이러한 문제점을 해결하기위해 나온것이 원핫 인코딩이다.
    • 사이킷런의 LabelEncoder 클래스 , fit() 과 transform() 을 이용하여 변환
  • 원핫(One-hot) 인코딩 -feature 값의 유형에 따라 새로운 피처를 추가 해서 고유값에 해당하는 컬럼에만 1을 표시 하고 나머지 컬럼에는 0 을 표시 하는 방식이다. -성별_남(남자일때 1) ,성별_여 (여자일때 1)
    • 사이킷런의 OneHotEncoder 클래스 fit() 과 transform() 을 이용하여 숫자형으로 변환 - 인자로 이차원ndarray 입력 필요, Sparse 배열 형태로 변환되며 toarray() 를 적용하여 다시 Dense 형태로 변환 되어야함.
    • pd.get_dummies(DataFrame) 을 이용 하면 쉽게 원핫 인코딩 가능 

3)데이터스케일링

- 피처 스케일링과 정규화

  • 데이터 스케일(Scale) : 변수를 구성하는 값 들의 크기 , 규모, 범위를 의미
  • feacure scaling : 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업

Feature Scaling을 하는 이유는?

변수 값의 범위 또는 단위가 달라서 발생 가능한 문제를 예방할 수 있다. 머신러닝 모델이 특정 데이터의 편향성을 갖는 걸 방지할 수 있다. 즉 데이터 범위 크기에 따라 모델이 학습하는 데 있어서 bias(편향)가 달라질 수 있으므로 하나의 범위 크기로 통일해주는 작업이 필요할 수 있다.

Feature Scaling 종류

  • 표준화- 데이터의 피처 각각이 평균이 0 이고 분산이 1인 가우시안 정규분포를 가진 값으로 변환하는 것을 의미 (데이터분포의 중심을 0으로)
  • 정규화- 서로 다른 피처의 크기를 통일하기 위해 크기를 변환해주는 개념, 일반적으로 이상치 제거후 정규화
  • 사이킷 런에서
  • StandardScaler: Sklrean(사이킷런)에서 제공하는 표준화를 위한 클래스이며, 개별 변수를 평균이 0이고 분산이 1인 가우시안 정규 분포를 가질 수 있도록 값을 변환해준다.
    • StandardScaler 사용 시 주의할 점
      • Scaler에 의해 변환된 데이터는 ndarray 형식이므로 데이터 관리의 용이성을 위해 DataFrame 형식으로의 명시적 변환이 필요할 수 있다.
      • 변수의 최소값과 최대값 크기를 제한하지 않음 ,
        따라서 이상값(outlier) 있는 경우 평균과 표준편차에 영향을 미치기 때문에 데이터 분포 (확산)에 영향을 미침.
  • MinMaxScaler: 데이터값을 0과 1사이의 범위값으로 변환(음수값이 있으면 -1 에서 1값으로 변환) , 데이터 분포가 가우시안분포가 아닐경우 적용
  • 선형, 회기는 스케일링 해주는것이 좋고 tree 분류는 스케일링에 크게 영향을 받지 않는다.
  • 머신러닝 모델은 학습 데이터를 기반으로 학습되기 때문에 반드시 테스트 데이터는 학습데이터 스케일링 기반에 따라야 하고 테스트 데이터 에 다시 fit() 을 적용하면안되고 scaler 객체를 이용해 transform() 을 적용해야한다.

 

Scaler를 사용하는 이유:

데이터가 가진 크기과 편차가 다르기 때문에 한 피처의 특징을 너무 많이 반영하거나 패턴을 찾아내는데 문제가 발생하기 때문이다

 

 

4) 이상치 제거

이상치 데이터(Outlier) 전체 데이터의 패턴에서 벗어난 이상값을 가진 데이터.

이상치를 찾는방식 IQR (4분위 값의 편차를 이용하는 기법, 박스 플롯 방식으로 시각화가능)

Log 변환

  • 왜곡된(Skewed) 분포도를 가진 데이터를 정규 분포에 가깝게 변환해줄 수 있음

IQR

  • Inter Quantile Range
  • 4분위 수를 가지고 이상치를 제거하는 방법
  • 넘파이의 percentile() 이용
  • 이상치 판별 기준
    • Value > Q3 + 1.5 * (Q3-Q1)
    • Value < Q1 - 1.5 * (Q3-Q1)

언더 샘플링, 오버 샘플링

  • 레이블이 불균형한 분포를 가진 데이터를 학습 시, 이상 레이블을 가지는 데이터 건수가 너무 적어서 학습이 어려움
  • 또한 정상 레이블 건수만 많기에 치우친 학습을 하게됨

SMOTE

-SMOTE 를 적용할때는 반드시 학습 데이터 세트만 오버샘플링 되어야함.

  • imbalanced-learn 패키지의 SMOTE 클래스를 이용

5) Feature selection

 - 가지고있는 특성중에 훈련에 가장 유용한 특성 선택, 

1) Wrapper method- 가장 이상적인 Feature 의 조합을 찾는방식, Feature 를 다르게 조합 하여 모델학습진행             ex>Forward Selction, Backward Elimination, Stepwise Selection 

2) Filter Method - 모델에 적용하기전에 Feature 들을 걸러내는 방법 ex> 피어슨 상관분석, 카이제곱검정 등을 사용하여 상관관계를 파악

3) Embedded method - 모델의 학습 , 생성 과정에서 최적의 feature 선택 ex > LASSO ,  Ridge Regression 

 

 

 

728x90
반응형

댓글