[ML] Imputation

2024. 10. 5. 13:51·Programming/ML
728x90
728x90

https://junyanyao.github.io/Missing_data/

Imputation이란: 

Data Science와 ML에서 "impute"는

  • 누락된 데이터(missing data)를 (합리적인) 대체값으로 채우는 과정을 의미
  • 이는 '대체', '귀속', 또는 '채워넣기'로 번역될 수 있음.

Dataset을 다룰 때,

  • 누락된 데이터가 있는 전체 행이나 열을 제거하는 대신,
  • imputation은 다른 가용한 features 나 선행정보(prior)를 바탕으로 missing values를 추정하여 채워넣는 방법.
Imputation에서는
Training set 만을 사용하여
채워넣을 값을 구함.

 


종류

주요 imputation은 다음과 같음:

  • mean/median imputation:
    • 해당 특성의 mean이나 median으로 missing values을 대체
  • mode(최빈값) imputation:
    • 가장 빈번한 값을 사용하여 누락된 데이터를 채움
  • regression imputation:
    • 다른 변수들을 기반으로 누락된 값을 예측
    • regression model들이 사용됨.
  • multiple imputation:
    • 여러 개의 타당한 대체 데이터셋을 생성하고
    • 각각에서 얻은 결과를 적절히 결합 

Multiple Imputation의 간단한 예

더보기

100명의 학생들의 수학 시험 점수 데이터가 있다고 가정.

 

그 중 10명의 학생들의 점수가 누락된 경우 multiple imputation을 사용하면 다음과 같은 과정을 거침:

1. 여러 개의 대체 데이터셋 생성:
   예를 들어, 5개의 서로 다른 완전한 데이터셋을 생성.
   각 데이터셋에서 누락된 10개의 점수는 다른 학생들의 점수, 학년, 이전 성적 등을 고려하여 서로 다르게 추정.
2. 각 데이터셋 분석:
   5개의 각 데이터셋에 대해 원하는 분석(예: 평균 점수 계산)을 수행.
3. 결과 종합:
   5개의 분석 결과를 결합하여 최종 결과를 얻음.
   예를 들어, 5개의 평균 점수의 평균을 계산하고, 분산을 고려하여 신뢰 구간을 계산 등등.

이 방법을 통해,

  • 단순히 하나의 값(예: 전체 평균)으로 누락된 점수를 대체하는 것보다
  • 더 정확하고 신뢰할 수 있는 결과를 얻을 수 있음.
  • 또한, 결과의 불확실성도 함께 제시할 수 있다는 장점도 가짐.

sklearn.impute.SimpleImputer

SimpleImputer를 활용한 간단한 예제

import numpy as np
import pandas as pd
from sklearn.impute import SimpleImputer

# 샘플 데이터 (NaN 포함)
data = {
    "age": [25, np.nan, 28, 35, np.nan],
    "salary": [50000, 54000, np.nan, 58000, 62000]
}
df = pd.DataFrame(data)
print("원본 데이터:")
print(df)

# 평균(mean)으로 결측값 대체
imputer = SimpleImputer(strategy="mean")
df_imputed = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)

print("\n결측값 대체 후:")
print(df_imputed)
  • mean 이나 median과 같은 strategy는 numeric data에만 적용 가능함
  • 해당 columns로만 구성된 데이터에만 fit 가능.
  • 사용가능한 strategy는 다음과 같음:
    • "mean" : 각 column의 평균값으로 NaN 대체
    • "median" : median으로 대체
    • "most_frequent" : numeric data가 아닌 categorical data column에도 적용가능함.
    • "constant" : fill_value 파라미터에 채울 상수를 지정해야 함 (기본은 0). numeric data가 아닌 categorical data에도 적용가능.
  • 많이 애용되는 attributes는 다음과 같음:
    • statistics_ : 계산된 통계치들. column의 수만큼의 요소를 가지는 ndarray 객체임.
    • strategy : 사용된 imputation 방식.
    • feature_names_in_ : fit에 주어진 데이터의 column들의 라벨 (DataFrame객체에 대해 fit한 경우 설정됨)
underscore( _ , 밑줄)로 끝나는 attribute는
fit() 이후에 생기는 학습 결과(추정된 값, learned parameter) 를 의미
728x90

'Programming > ML' 카테고리의 다른 글

[ML] Yeast Dataset  (0) 2024.10.05
[ML] kNN Classifier (k-Nearest Neighbors Classifier)  (0) 2024.10.05
[ML] scikit-learn: FunctionTransformer  (0) 2024.10.03
[ML] scikit-learn: Pipeline 사용법  (0) 2024.10.03
[ML] scikit-learn: ColumnTransformer  (0) 2024.10.03
'Programming/ML' 카테고리의 다른 글
  • [ML] Yeast Dataset
  • [ML] kNN Classifier (k-Nearest Neighbors Classifier)
  • [ML] scikit-learn: FunctionTransformer
  • [ML] scikit-learn: Pipeline 사용법
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (787)
      • Private Life (15)
      • Programming (206)
        • DIP (116)
        • ML (35)
      • Computer (120)
        • CE (54)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (368)
        • Signals and Systems (115)
        • Math (176)
        • Linear Algebra (33)
        • Physics (43)
        • 인성세미나 (1)
      • 정리필요. (61)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (7)
        • PET Study 2009 (1)
        • 방사선 장해방호 (5)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    function
    random
    Programming
    ML
    opencv
    cv2
    Python
    Term
    signal_and_system
    fourier transform
    인허가제도
    Vector
    linear algebra
    Probability
    SS
    SIGNAL
    signals_and_systems
    numpy
    math
    Optimization
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[ML] Imputation
상단으로

티스토리툴바