MICE 성능 검증(Validation of MICE Imputation Reliability)

2한나·2025년 10월 11일

Image Exclusive Model 학습에 사용되는 수치형 테이블 데이터에는 일부 결측값이 존재한다.
이에 MICE(Multivariate Imputation by Chained Equations) 기법이 해당 결측값을 얼마나 신뢰성 있게 복원할 수 있는지를 정량적으로 검증해보고자 한다.
즉, MICE가 실제 결측 데이터에 적용되기 전에, 완전한 데이터셋에서 인위적으로 결측을 주입한 뒤 복원 성능을 측정함으로써,이 기법의 타당성을 평가한다.

사용 데이터셋

본 검증에는 Image Exclusive Model 학습용 테이블 데이터를 사용하였다.

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6058 entries, 0 to 6057
Data columns (total 19 columns):
 #   Column                Non-Null Count  Dtype  
---  ------                --------------  -----  
 0   ID                    6058 non-null   object 
 1   Phase                 6058 non-null   int64  
 2   color_Ur              6058 non-null   float64
 3   color_gr              6058 non-null   float64
 4   color_gi              6058 non-null   float64
 5   SFR_200Myr            6057 non-null   float64
 6   AxisRatio             5462 non-null   float64
 7   B_T                   4482 non-null   float64
 8   SurfaceBrightness     6058 non-null   float64
 9   EffectiveRadius       6058 non-null   float64
 10  AbsMag_U              6058 non-null   float64
 11  AbsMag_B              6058 non-null   float64
 12  AbsMag_V              6058 non-null   float64
 13  AbsMag_g              6058 non-null   float64
 14  AbsMag_r              6058 non-null   float64
 15  AbsMag_i              6058 non-null   float64
 16  StellarMass           6058 non-null   float64
 17  StellarMetallicity    6058 non-null   float64
 18  StellarVelDispersion  6058 non-null   float64
dtypes: float64(17), int64(1), object(1)
memory usage: 899.4+ KB
None

결측치 갯수

ID                         0
Phase                      0
color_Ur                   0
color_gr                   0
color_gi                   0
SFR_200Myr                 1
AxisRatio                596
B_T                     1576
SurfaceBrightness          0
EffectiveRadius            0
AbsMag_U                   0
AbsMag_B                   0
AbsMag_V                   0
AbsMag_g                   0
AbsMag_r                   0
AbsMag_i                   0
StellarMass                0
StellarMetallicity         0
StellarVelDispersion       0
dtype: int64

MICE 타당성 검증을 위해 이미 결측값이 존재하는 피처는 제외하고,
결측이 없는 나머지 피처들에서 인위적으로 결측치를 주입(MCAR) 하여 복원 성능을 측정하고자 한다.

검증 절차

1. 완전한 행(Complete Row) 추출
원본 데이터에서 결측이 전혀 없는 행만 선택하여 검증용 데이터셋(df_full)을 구성하였다.
이 단계는 이후 인위적으로 결측치를 주입했을 때 ground truth와의 직접적인 비교가 가능하도록 하기 위함이다.

df_full = df_all.dropna(axis=0, how='any').copy()

2. 인위적 결측 주입 (MCAR 방식)
각 피처에 대해 전체 샘플 중 일정 비율(MISSING_FRAC = 0.2)의 값을 무작위로 제거하였다.
이 방식은 MCAR (Missing Completely At Random) 가정 하에서 결측치를 생성하는 것으로,
실제 결측이 랜덤하게 발생한다고 가정하여 MICE의 복원 능력을 공정하게 평가하기 위한 목적이다.

def introduce_missing_values(df_in, col, frac=0.2, random_state=42):
    """특정 컬럼에 frac 비율만큼 결측치(MCAR) 주입"""
    df_tmp = df_in.copy()
    rng = np.random.default_rng(random_state)
    n = len(df_tmp)
    n_miss = max(1, int(n * frac))
    miss_idx = rng.choice(df_tmp.index.values, size=n_miss, replace=False)
    df_tmp.loc[miss_idx, col] = np.nan
    return df_tmp, miss_idx

3. MICE 복원
IterativeImputer를 이용하여 다변량 회귀 기반의 결측치 복원을 수행하였다.
MICE는 각 피처를 타 피처들의 회귀식으로 반복적으로 예측하여 결측값을 채우는 방식이다.
복원은 여러 피처의 상관관계를 고려해 순차적으로 진행되며, 반복(iteration)을 통해 수렴한다.

매개변수 설정은 다음과 같다.

  • max_iter = 20: 최대 20회 반복하며 수렴할 때까지 복원 절차를 수행
  • sample_posterior = False: 확률적 샘플링 대신 평균 예측값으로 채움 → 결정적(deterministic) 복원
  • skip_complete = True: 결측이 없는 열은 계산을 생략하여 효율성 향상
def run_mice(df_in, random_state=42, max_iter=20):
    """IterativeImputer(MICE)로 결측 보간"""
    imputer = IterativeImputer(
        random_state=random_state,
        max_iter=max_iter,
        sample_posterior=False,
        skip_complete=True
    )
    arr_imp = imputer.fit_transform(df_in)
    return pd.DataFrame(arr_imp, columns=df_in.columns, index=df_in.index)

4. 성능 평가 지표

  • MAE (Mean Absolute Error)
    • 목적: 결측 위치에서의 점대점 복원 적확도
    • 계산 방법: 원본 vs 복원값의 절대오차 평균
    • 해석 방법: 낮을수록 복원 정확도가 높음을 의미
  • nMAE (Normalized MAE)
    - 목적: 피처별 단위/스케일 차이를 제거한 비교
    • 계산 방법: MAE를 IQR로 정규화
  • R^2 (Confficient of Determination)
    • 목적: 복원된 값의 선형 적합도
    • 계산 방법: 원본 분산 대비 복원 예측력
    • 해석 방법: 1에 가까울수록 복원 정확도가 높음을 의미 / 0이면 평균과 다르지 않음 / 음수이면 평균보다 나쁨
  • KS-test (Kolmogorov of Determination)
    • 목적: 전체 분포 유사도
    • 계산 방법: 원본 분포 vs 복원 분포의 통계적 차이
    • 해석 방법: p >= 0.05 이면 통계적으로 유의한 차이를 찾기 어렵다(=분포가 충분히 유사)

검증 결과

잘 예측된 물리량들

colorUr, color_gr, color_gi, AbsMag* 전반, EffectiveRadius

문제상황

  • [0,1] 범위 피처: AxisRatio, B_T에서 0 미만·1 초과 예측 존재, R²도 낮음/음수.
  • 비음수 물리량: StellarMass 등에서 음수 값이 소수 발생
  • StellarVelDispersion: R²<0

실험1

[0,1] 범위 피처 AxisRatio, B_T에 대해 로지트 변환(→MICE→시그모이드 역변환) 적용

적용 대상: AxisRatio, B_T
의도: 선형회귀에 적합하도록 확률공간을 실수선으로 펼친 뒤(MICE), 역변환으로 자동 [0,1] 보장.

개선 효과

  • B_T: MAE 0.1017 → 0.0945 ↓, R² −0.065 → 0.383 ↑, KS_stat 0.0413 → 0.0279 (분포 유사도 개선).
  • AxisRatio: MAE 0.0484 → 0.0447 ↓, KS_stat 0.0678 → 0.0491 ↓(개선). R²는 0.203 → 0.119로 소폭 하락(혼합 결과)이나, 범위 위반 사라짐 + 분포 유사도는 개선.



해결책2

비음수 물리량 EffectiveRadius, StellarMass, StellarVelDispersion, StellarMetallicity에 대해 MICE 출력 후 해당 피처들만 clip(0, ∞) 적용

개선 효과

  • StellarMass: MAE 1.156 → 0.745 크게 ↓, R² 0.422 → 0.584 ↑ (가장 큰 이득).
    → 음수 예측 제거로 분산 왜곡이 줄고 예측력이 유의하게 향상.
  • EffectiveRadius: MAE 0.406 → 0.395 ↓, R² 0.945 → 0.948 근소 ↑.
  • ellarVelDispersion: 변화 제한적(R² 여전히 <0).
    → 단순 비음수 제약만으로는 부족, 모형 구조 자체 개선 필요.
  • ellarMetallicity: 소폭 변화(이미 안정적 분포).


결론

  • seline MICE만으로도 색지수·절대등급 계열과 EffectiveRadius는 매우 양호.
  • 트/역로지트로 [0,1] 피처의 범위 위반 제거와 분포 적합성을 개선했고, 특히 B_T의 예측력(R²)이 크게 좋아졌다.
  • 수 클리핑으로 질량·반지름 등 양의 물리량의 MAE↓/R²↑가 확인되었고, StellarMass에서 가장 큰 실익이 있었다.
  • ellarVelDispersion은 여전히 난이도가 높아 모델링 변경(비선형 회귀기)이 요구된다.

0개의 댓글