[프로젝트 2 - 정형 데이터 분류] 2. 데이터 전처리

Jade·2021년 4월 13일
0

부스트캠프 AI Tech

목록 보기
40/54

프로젝트 2 - 데이터 전처리

  • 연속형 데이터 전처리
  • 범주형 데이터 전처리
  • 결측치 처리
  • 이상치 처리

sklearn boston 데이터셋

[연속형 데이터 전처리]

  • Scaling
    데이터의 단위나 분포를 변경하는 것. 선형 기반의 회귀 모델인 경우 변수들 간의 스케일을 꼭 맞춰야 한다. 스케일링을 하면 feature 값들이 비슷한 범위에 있게 되어 계산이 빠르고 결과 모델의 에러도 줄어든다.

min max scaling
x_new = (x_i-min(x)) / (max(x)-min(x))

standard scaling
x_new = x-뮤(평균) / 시그마(표준편차)

robust scaling
x_new = (x_i-x_med) / (x_75-x_25)
이상치에 영향을 덜 받는다.

  • Scaling+Distribution
    변수의 분포를 변경하면 target과 featrue의 관계를 더 명확하게 볼 수 있다.

Log transformation : feature 값의 분포가 한쪽으로 치우쳐 있는 경우에 정규분포 형태로 변환하기 위해서 사용한다.

Quantile transformation : 어떤 분포가 들어와도 정규분포 형태로 변환할 수 있다.

Binning : 연속형 변수를 범주형 변수로 바꾸는 작업. (찾아볼 것)


[범주형 데이터 전처리]

범주형 데이터는 대개 문자열로 이루어져 있어서 모델에 바로 넣을 수가 없다. 수치형으로 바꾸는 인코딩 작업을 해 줘야 한다.

one hot encoding
n개 카테고리 중 feature가 해당하는 카테고리만 값을 1로 두고 나머지를 전부 0으로 채운 벡터를 만든다. 모델이 feature의 특징을 명확하게 이해할 수 있지만 카테고리가 매우 많은 경우 데이터 차원이 너무 커져 공간을 많이 먹고 모델 계산도 어려워진다.

label encoding
카테고리마다 다른 숫자를 부여한다. 하나의 차원으로 데이터를 인코딩할 수 있지만 모델이 카테고리의 순서를 특징으로 인식할 수도 있다.

embedding (entity embedding)
Word2Vec 모델을 사용해서 인코딩하는 방법이다.


[결측치 처리]

결측치가 발생한 데이터 자체를 제거)
데이터가 많을 때는 상관 없지만 데이터가 적은 경우에는 소중한 데이터를 날려버리는 것이라 좋은 방법이 아닐 수 있다. 또, 테스트 데이터에 결측치가 발생한 경우에는 해당 데이터를 날려버릴 수 없다.

결측치가 발생한 변수를 제거)
특정 변수에 결측치가 유독 많이 발생했다면 어차피 학습에 별 영향을 안 줄 테니 삭제해버려도 괜찮다.

평균값, 중위값, 상수값 삽입)
값을 막 삽입하면 모델의 분포가 흐트러질 수 있다.

결측치 분석 후 삽입)
회귀분석이나 머신러닝 모델 등을 이용해 결측치와 유사한 데이터를 분석해 채울 수 있다. 결측치가 너무 많을 때는 제대로 동작하지 않아 적합한 방법이 아니다.

데이터의 의미를 파악하고 삽입)
강수량에서 결측치가 발생했다면 해당 기간의 평균 강수량을 삽입하거나 특정 도시의 인구에서 결측치가 발생했다면 해당 도시의 인구를 알아내 삽입하는 등 데이터를 보고 결측치를 삽입하는 방법이다.


[이상치 처리]

몇 개의 outlier(데이터들이 주로 분포하는 영역에서 크게 벗어나 있는 데이터) 데이터로 인해 target과 feature 간의 상관관계가 왜곡될 수 있다. 큰 스케일로 봤을 때는 상관관계가 높은 것 같지만 outlier 데이터를 제거하고 보면 상관관계가 거의 없는 경우도 있고, 원래 상관관계가 높았지만 outlier 데이터 때문에 상관관계가 없는 것처럼 보이기도 한다.

profile
반가워용

0개의 댓글