[python] 피처 선택(Feature Selection) 방법

머신 러닝 모델을 만들 때, 데이터셋에 있는 모든 피처를 사용하는 것이 항상 최선의 방법은 아닙니다. 오히려, 중요한 피처들을 선택하여 모델을 구축하는 것이 더 나은 결과를 얻을 수 있습니다. 이를 위해 사용되는 방법이 바로 “피처 선택(Feature Selection)”입니다.

1. 피처 선택의 필요성

데이터셋에는 수많은 피처가 있을 수 있습니다. 그러나 피처가 많다고 해서 항상 좋은 결과를 얻을 수 있는 것은 아닙니다. 피처가 많을 경우 다음과 같은 문제가 발생할 수 있습니다.

따라서, 피처 선택은 올바른 모델을 만들기 위해 필수적인 단계입니다.

2. 피처 선택 방법

다양한 피처 선택 방법이 있지만, 여기에서는 주요 방법 몇 가지를 살펴보겠습니다.

2.1 상관관계 기반 선택

상관관계 기반 선택은 피처 간의 상관관계를 측정하여 중요한 피처를 선택합니다. 이 방법은 예측 변수와 목표 변수 간의 상관 관계가 높은 피처를 선택하는데 사용됩니다.

import pandas as pd
import numpy as np

# 데이터셋 불러오기
df = pd.read_csv('dataset.csv')

# 상관계수 계산
corr_matrix = df.corr()

# 목표 변수와의 상관계수 확인
corr_with_target = abs(corr_matrix['target_variable'])

# 상관계수를 기준으로 상위 n개의 피처 선택
n = 10
selected_features = corr_with_target.sort_values(ascending=False)[:n].index.tolist()

2.2 재귀적 피처 제거

재귀적 피처 제거는 모든 피처를 사용하여 모델을 학습한 후, 중요하지 않은 피처를 하나씩 제거해가며 모델의 성능을 평가합니다. 이 방법은 가장 덜 중요한 피처를 하나씩 제거하면서 모델의 성능을 모니터링하는 방식으로 작동합니다.

from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression

# 데이터셋 불러오기
df = pd.read_csv('dataset.csv')

# 특성과 목표 변수 분리
X = df.drop('target_variable', axis=1)
y = df['target_variable']

# 선형 회귀 모델 생성
model = LinearRegression()

# 피처 선택
n_features = 10
rfe = RFE(estimator=model, n_features_to_select=n_features)
X_selected = rfe.fit_transform(X, y)

3. 결론

피처 선택은 머신 러닝 모델의 성능을 향상시키고, 인사이트를 얻기 위해 필요한 작업입니다. 상관관계 기반 선택과 재귀적 피처 제거는 널리 사용되는 피처 선택 방법 중 일부에 불과하며, 데이터셋의 특성과 목표에 따라 다른 방법을 적용해야 합니다. 피처 선택의 결과를 평가하고 다양한 방법을 실험해보는 것이 좋습니다.

References