결측치 및 클래스 불균형 문제

2019-06-07

Data_Preprocessing_Studynotes_(20190605)

study program : https://www.fastcampus.co.kr/data_camp_ppc

[학습기록]

1. 결측치 문제의 유형 및 해결방법 플로우차트

1) 플로우차트

1

2) 결측치가 없는 레코드가 충분히 많은가?

  • 결측치가 없는 레코드가 충분히 많다면, 결측치가 있는 레코드를 삭제하는 방식으로 결측치를 처리

  • 효과적인 모델을 학습하는데 필요한 레코드 수는 활용모델, 변수개수, 문제난이도 등에 따라 크게 다르며, 분석적으로 정확히 알기는 어렵다.

  • 따라서 결측치가 없는 레코드가 충분히 많은지는 아래의 플로우차트를 참고 할 수 있다.

2

  • 러닝커브는 레코드 수를 늘려가면서 학습성능을 평가하는 그래프를 말한다. 러닝커브가 수렴하는 지점이 레코드가 충분하다고 말할 수 있는 양이다.

3

3) 대표값 활용

결츨치를 대체할 수 있는 대표값으로는 평균값, 최빈값, 중위수 등이 있으며, 일반적으로는 명목형 변수에 대해서는 최빈값을, 연속형 변수에 대해서는 평균값을 주로 사용함

4) 변수 및 레코드 삭제

하나의 변수에서 너무 많은 결측이 발생했고, 도메인 지식을 활용했을때 이 변수를 지워도 무방하다고 판단하는 경우에 해당 변수를 삭제

5) 기타 참고사항

  • 특정 변수 결측치가 50% 정도면 도메인 지식을 이용해서 판단한다.

  • 결측치 예측 모델은 모델링을 하는 것이기 때문에 중요한 변수에 대해서만 한다.

  • DataFrame.select_dtypes : 데이터 타입별로 select할 수 있는 기능

2. 결측치 문제 해결방법 비교

1) 레코드 삭제 & 변수삭제

  • 장점

가장 간단한 방법

결측치가 제대로 예측하지 못해서 발생하는 문제가 없음

  • 단점

결측치가 없는값도 지워지는 등 정보 손실이 존재

결측 레코드가 너무 많으면 적용할 수 없음

2) 대표값 활용

  • 장점

데이터 손실이 없는 방법 가운데 간단한 방법

데이터가 적을때 유용함

  • 단점

평균의 함정 등에 빠지기 쉬움

변수간의 관계를 완전히 무시

3) 시계열 예측

  • 장점

하나의 변수만 가지고도 모델링이 가능하여, 모델 사용기법 가운데 가장 효율적이고 효과적이다.

  • 단점

시계열 변수에만 적용가능

데이터가 적으면, 시계열의 계절성 등을 파악하지 못해 완전히 잘못된 결과를 낼 수 있음

4) 결측치 예측모델

실수형 변수는 다른 피쳐들을 이용해서 해당 변수를 선형회귀 하면되고, 범주형 변수는 다른 피쳐들을 이용해서 해당변수를 classification 하면된다.

  • 장점

어떠한 결측도 대응할 수 있음

  • 단점

매우 복잡한 작업으로 시간이 많이 소요됨

특정패턴으로 결측이 발생하는 경우, 편향된 모델이 만들어 질 수 있음

3. 변수 치우침 문제

  • 하나의 값으로 지나치케 치우쳐서, 모델이 편향되는 현상

  • 현실적으로 변수치우침 문제는 그래프를 그려서 확인하는 것보다는 기초통계를 활용해서 파악하는 것이 적절하다.

  • 정수형,연속형 변수의 치우침 판단기준

1) 1사분위수(최소 값) = 2사분위수 = 3사분위수 혹은 2사분위수 = 3사분위수 = 4사분위수 (최대 값) 인 경우

2) 1, 2, 3 사분위수 값이 비슷하지만 4사분위수는 차이가 큰 경우

3) 왜도의 절대값이 1.5보다 큰 경우

왜도는 분포의 비대칭정도를 나타내는 통계량이다.

왜도에서 좌편향은 왜도가 0보다 큰 경우이고, 우편향은 왜도가 0보다 작은 경우다.

4) 평균값에 비해 표준편차가 매우 작은 경우

5) 평균이 중앙값보다 매우 큰 경우

  • 변수 치우침 문제의 해결

민맥스 정규화와 표준화는 변수치우침을 해결하는 방법이 아니다.

기본적인 해결 아이디어는 변수가 가지는 값 간의 차이를 늘린다음에 스케일링을 해준다.

(X - X.min()) ** a (a는 1이상의 양수) : 전부 양수로 만든 뒤 a제곱을 해서 값 간의 차이를 늘려주는 공식. 이 공식을 적용후 스케일링을 해주면 된다.

단, 스큐가 극단적으로 심할 경우에는 위와 같은 방법으로도 변수치우침 문제를 해결할 수 없고 변수의 타입을 변경하는 것을 고려해야 한다.

4. 클래스 불균형 문제 해결 가이드라인 플로우차트

4