이번 포스팅에서는 지난 MICE 기초 포스팅 내용에 이어,
Scikit-learn의 IterativeImputer를 활용해 MICE(Multivariate Imputation by Chained Equations) 방식으로 결측치를 대체하는 구체적인 내용에 대해 다뤄보도록 하겠다.
우선, 필자가 실제 데이터 분석에 사용했던 예시 코드는 아래와 같다.
imputer = IterativeImputer(random_state=42)
mice_result = imputer.fit_transform(mice_input_df)
MICE를 적용하기 위해 간단한 전처리(수치형 + 범주형 데이터 분리, 원핫인코딩 등)를 거친 mice_input_df 데이터에 MICE 방식의 결측치 대체를 적용한 뒤, mice_result라는 변수로 정의하는 코드이다.
01. IterativeImputer는 어떤 도구인가?
IterativeImputer는 여러 개의 변수들이 서로 영향을 주는 관계를 이용해 결측치를 보간하는 방법이다. MICE는 변수 하나씩 돌아가며 결측값을 예측하고, 그것을 반복(iterate)하면서 점점 더 정교한 값을 추정한다. 이름 그대로 "Chained Equations" — 변수들을 연쇄적으로 예측하는 방식을 의미한다.
IterativeImpurter의 주요 파라미터는 아래와 같다.
IterativeImputer(
estimator=None, # 사용할 예측 모델 (default: BayesianRidge)
max_iter=10, # 반복 횟수 (기본 10회)
initial_strategy='mean', # 초기 결측치 채움 방법
random_state=42 # 랜덤 시드
)
파라미터 | 설명 |
estimator | 어떤 모델로 결측치를 예측할지 지정(회귀 모델), default=BayesianRidge() |
initial_strategy | 첫 단계에서 결측치를 어떤 값으로 채울지 (‘mean’, ‘median’, ‘most_frequent’ 등), default=’mean’ |
max_iter | 전체 보간 과정을 몇 번 반복할지, default=10 |
random_state | 반복 결과 재현을 위한 시드, default=None |
※ 많은 결측치가 있는 변수에 대해서는 불안정할 수 있으며, 반복마다 예측이 바뀌기 때문에 random_state 고정 필수.
※ 더 다양한 하이퍼파라미터 참고 : https://scikit-learn.org/stable/modules/generated/sklearn.impute.IterativeImputer.html
02. MICE 진행 절차 (IterativeImputer의 로직 요약)
1. 초기값으로 결측치를 잠정 대체
: 평균, 중위수 등으로 일단 결측치를 채워서 예측 모델을 학습
2. 각 열을 타겟으로 지정하며 결측치 예측
: 결측치가 있는 A 열을 가장 먼저 타겟으로 두고
→ B, C(결측치가 없는 상태)열을 사용하여 회귀모델 학습
→ A열의 결측치였던 값들을 예측하여 대체
B를 타겟으로 지정
→ A(임시 보간된 값 포함), C를 이용하여 회귀모델 학습
→ B의 결측치 예측
마찬가지로 나머지 열들도 동일하게 진행
3. 위의 과정 반복
: 하이퍼파라미터 max_iter만큼 반복(기본값은 10)하며, 반복할수록 값이 수렴하고 더 정밀한 예측이 이루어짐.
4. 모델은 기본적으로 BayesianRidge (선형 회귀 기반)
: DecisionTree나 KNN 등으로 변경하는 것도 가능.
03. [ 정리 ] fit_transform() 호출 시 수행 과정
1. 초기값 채우기
2. 열마다 모델 학습 & 예측
3. 전체 반복 (max_iter의 수만큼)
4. 최종적으로 모든 결측치가 채워진 numpy 배열 반환 (단, 아래와 같은 코드를 사용하여 데이터프레임 형태로 반환 가능)
pd.DataFrame(mice_result, columns=mice_input_df.columns)
'통계' 카테고리의 다른 글
[통계] MICE 결측치 대체법: 다중대입법을 활용한 결측치 대체 (1) | 2025.06.28 |
---|---|
[통계] 시계열 분석과 회귀분석의 차이, 시계열 횡단면 데이터 분석, ARDL, LSTM 알아보기 (2) | 2024.10.10 |