[python] 이상치(outlier) 처리 방법

데이터 분석 또는 머신러닝 모델링을 할 때, 입력 데이터에 이상치가 포함되어 있으면 모델의 성능을 저하시킬 수 있습니다. 이상치는 일반적인 패턴에서 벗어난 값을 의미하며, 주로 잘못된 측정이나 데이터 수집 오류로 인해 발생합니다. 이상치는 데이터 분포를 왜곡시키므로, 머신러닝 모델은 이상치를 제대로 처리하지 못하고 올바른 예측을 수행할 수 없게 됩니다.

따라서, 이상치를 처리하는 방법은 데이터 정제 및 전처리 과정에서 중요한 단계입니다. 이상치를 처리하는 주요 방법에 대해 알아보겠습니다.

1. 통계적 방법

통계적 방법은 데이터의 통계적 특성을 이용하여 이상치를 탐지하고 처리하는 방법입니다.

1.1. 3-sigma rule

3시그마 규칙은 데이터가 정규 분포를 따른다고 가정할 때, 데이터의 평균과 표준 편차를 이용하여 이상치를 탐지하는 방법입니다. 일반적으로, 평균 ± 3*표준 편차를 벗어나는 값은 이상치로 간주합니다.

import numpy as np

def remove_outliers(data):
    mean = np.mean(data)
    std = np.std(data)
    threshold = 3 * std
    outliers = [x for x in data if abs(x - mean) > threshold]
    processed_data = [x for x in data if x not in outliers]
    return processed_data

1.2. Z-score

Z-score는 데이터 포인트가 평균으로부터 얼마나 멀리 떨어져 있는지를 나타내는 표준화 점수입니다. Z-score를 이용하여 데이터 포인트를 평균에서 어느 정도 떨어져 있는지 계산하고, 특정 경계값을 설정하여 이상치를 탐지할 수 있습니다.

def remove_outliers(data):
    mean = np.mean(data)
    std = np.std(data)
    threshold = 3
    z_scores = [(x - mean) / std for x in data]
    outliers = [x for x, z_score in zip(data, z_scores) if abs(z_score) > threshold]
    processed_data = [x for x in data if x not in outliers]
    return processed_data

2. 기타 방법

2.1. 사분위범위(IQR) 방법

IQR 방법은 데이터의 분포를 이용하여 이상치를 탐지하는 방법입니다. IQR은 데이터의 1사분위수(Q1)와 3사분위수(Q3)를 이용하여 계산됩니다. IQR 값에 1.5를 곱한 값보다 크거나 작은 데이터 포인트는 이상치로 간주합니다.

def remove_outliers(data):
    q1 = np.percentile(data, 25)
    q3 = np.percentile(data, 75)
    iqr = q3 - q1
    threshold = 1.5 * iqr
    outliers = [x for x in data if abs(x - np.median(data)) > threshold]
    processed_data = [x for x in data if x not in outliers]
    return processed_data

2.2. 도메인 지식 활용

도메인 지식을 활용하여 이상치를 탐지하는 방법입니다. 데이터에 대한 도메인 지식을 가지고 있을 때, 일부 이상치를 직관적으로 식별하고 처리할 수 있습니다.

예를 들어, 키와 몸무게를 입력받아 성별을 예측하는 모델을 생성하는 경우, 키가 10cm 이하나 300cm 이상인 경우는 이상치로 간주하고 제거할 수 있습니다.

결론

이상치는 데이터 분석 및 머신러닝 모델링에 방해가 되는 요소이므로, 적절한 이상치 처리 방법을 선택하여 처리해야 합니다. 통계적 방법과 도메인 지식을 활용하여 이상치를 탐지하고, 필요한 경우 제거하는 접근법을 사용할 수 있습니다. 그러나 이상치 처리에는 주의가 필요하며, 데이터의 의도적인 변형이나 제거로 인해 잘못된 분석결과가 발생하지 않도록 유의해야 합니다.

참고 자료