ACAIT

[BDA 데분기] 4주차 - 보간법 보충, sklearn, statsmodels 본문

학회 활동/BDA 7기(데이터 분석 기초반)

[BDA 데분기] 4주차 - 보간법 보충, sklearn, statsmodels

831x99 2024. 1. 8. 23:05

1. 보간법 보충 자료

1-1. Sklearn impute

  • 결측치 보완 방법 여러 개. 아래는 다변량 보완 방법 코드.
  1. simplemputer: 간단하게 메우는 방식
  2. iterativeImputer: 오늘 할 예정
  3. KNNImputer: 거리
  4. MissingINdicator

1-2. Iterative Imputer

  • 결측치를 대체할 때 단순 선형 회귀 대치를 하면?
  • 예시) 연령과 소득 데이터에서 소득에만 결측치. 연령과 소득에 대한 관계로 선형관계가 있다면 상관성을 보고 둘의 회귀식을 관계로 단순하게 결측치를 대체하는 것. 연령이 높아지면 소득도 올라간다는 패턴으로 단순히 잡아가게 됨. 이런 식으로 할 수는 있으나 너무 단순함.

 

  • 확률적 회귀 대치법
  • 단순 접근이 아니라 회귀식에 확률 오차항 추가해서 확률적으로 회귀 대치 진행. 이것도 한계가 있긴 함.
  • 예시) 통계적으로 표본 오차 문제 등 여러 문제가 발생하게 됨. 해결하기 위해서 다중 대치법을 사용함.

 

  • 다중 대치법
  • 위의 방법들을 보완하기 위해 단순 대치를 여러번 수행하는 것.
  • 예시) 가상 데이터 샘플을 뽑아서 대치값을 통해 분석하고 결국 최종 결측치를 대체할 값을 선정하는 것.
  • 자료 좌측 그림 설명: 서로 다른 결측치를 대체할 수 있는 다른 변수들과 함께 데이터 표본 추출하고 진행.
  • 여기서 분석을 하게 된다는 것은?
  • 생성된 데이터들에서 통계적으로 모수를 추정하거나 추정치, 표준 오차 등 계산해서 가장 전체 각 데이터셋 추정치 표준오차가 계산된 n개의 데이터셋 중에 결합해서 최종 결측치 대치값을 산출하는 조건.

 

  • 몬테카를로 MCMC

 

2. 기존에 배운 내용 복습

  • 평균대치, 선형보간
  • sklearn interative imputer를 사용해서 실제 결측값 대체하고
  • 해당 결측값을 대체한 것을 회귀분석으로 mse 차이가 어떻게 나오는지 비교.
  • mse 오차에 대한 개념: 예측한 값과 실제 값의 차이

Q. 선형 보간의 경우는 결국 interpolate 기존 데이터 보고 결측 메우는 방식인데,

  해당 방식이 과연 정말 데이터의 올바른 결측치 대체 방법인지?

  이 내용을 확인하기 위해 코드 실행을 해 보겠습니다.

 

3. 대체 방법

3-1. 평균으로 대체

  • cylinders, displacement, horsepower, weight 열마다 29개의 Nan값이 생성됨.

 

3-2. 보간법 이용(선형 보간법)

 

3-3. sklearn 패키지 - iterativeImputer

  • 하이퍼 파라미터가 매우 다양
  • 모델링 할 때 여기 있는 모든 하이퍼 파라미터 배우는데
  • 공식 sklearn 홈페이지 보면서 하면 좋음

 

3-4. 이 지표를 가지고 어떻게 해석?

Q. 모든 데이터를 이런 식으로 sklearn 대치하면 되는 건가?

A. 아니다.

  • 단순하게 평균, 선형보간, iterative 등 어떤 게 가장 좋다고 할 수 없음.
  • 데이터 관계, 분포, 데이터에 대한 도메인 지식이 필수적으로 있어야 함.
  1. 데이터 분석가가 도메인 지식 없이 단순 수치로 싸우고 판단하면 한 쪽으로만 치우치는 경향
  2. 데이터 분석가가 해석 불가. 설득 불가.
  3. 해당 데이터에 why라는 질문에 답할 수 있으려면 질문을 찾을 수 있어야 함.
  • why를 어떤 식으로 설명? 기존 데이터의 분포와 관계 잘 이해하고 있어야 함.
  • 결측치를 대처하는 방법 자체가 위의 방법대로 진행하려면 해당 방법에 대한 로직 정확히 이해 필요.
  • 무엇보다 중요한 건 현재 데이터 분포에 대한 정확한 이해.
  • 평균으로만 대체하는 것이 오히려 로직상으로 맞을 수도 있음.
  • 서베이 데이터에 무응답 데이터는 다른 데이터와 관계로 대체가 아니라 무응답이므로 0으로 대체한다는 도메인 로직을 알아야 함.

 

※ 결측치 대체할 때

  • 꼭 도메인에 대한 지식 가지고 컬럼 바라보고
  • 각 컬럼간 데이터 분포와 '특히' y값 분포도 꼭 살펴보면서 어떤 결측치 대체 방법을 사용할지 고민하고 선택해야 함.