[python] scikit-learn을 이용한 피처 선택 기법

데이터 과학 및 머신러닝에서는 피처 선택(feature selection)이라는 중요한 단계를 수행합니다. 피처 선택은 데이터의 속성 중에서 가장 유용한 피처를 선택하여 모델의 성능을 향상시키는 과정입니다. scikit-learn은 파이썬에서 머신러닝과 데이터 분석을 위한 툴킷으로, 다양한 피처 선택 기법을 제공합니다.

1. Univariate Feature Selection

Univariate Feature Selection은 각 피처를 개별적으로 평가하여 타겟 변수와의 상관관계를 계산합니다. 이후, 가장 상관관계가 높은 피처를 선택하는 방법입니다. scikit-learn에서는 SelectKBest 클래스를 사용하여 구현할 수 있습니다.

from sklearn.feature_selection import SelectKBest, f_classif

# 데이터 준비
X = # 입력 데이터
y = # 타겟 변수

# 피처 선택 수행
selector = SelectKBest(score_func=f_classif, k=5)
X_new = selector.fit_transform(X, y)

2. Recursive Feature Elimination

Recursive Feature Elimination은 모든 피처를 사용하여 모델을 학습한 후, 가장 중요하지 않은 피처를 제거하고 다시 학습을 반복하는 방법입니다. 이는 재귀적으로 반복되며, 모든 피처가 제거될 때까지 진행됩니다. scikit-learn에서는 RFECV 클래스를 사용하여 구현할 수 있습니다.

from sklearn.feature_selection import RFECV
from sklearn.linear_model import LogisticRegression

# 데이터 준비
X = # 입력 데이터
y = # 타겟 변수

# 피처 선택 수행
estimator = LogisticRegression()
selector = RFECV(estimator, cv=5)
X_new = selector.fit_transform(X, y)

3. Feature Importance

Feature Importance는 모델을 학습한 후 얻은 계수(coefficient)나 특징의 중요도(importance)를 기반으로 피처를 선택하는 방법입니다. scikit-learn에서는 다양한 모델에 대해 Feature Importance를 계산할 수 있습니다. 예를 들어, RandomForestClassifier 모델을 사용하여 Feature Importance를 계산할 수 있습니다.

from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestClassifier

# 데이터 준비
X = # 입력 데이터
y = # 타겟 변수

# 피처 선택 수행
estimator = RandomForestClassifier()
selector = SelectFromModel(estimator)
X_new = selector.fit_transform(X, y)

위에서는 scikit-learn의 몇 가지 피처 선택 기법에 대해 알아보았습니다. 이 외에도 다양한 피처 선택 알고리즘과 기법이 존재하며, scikit-learn의 공식 문서와 다른 참고 자료를 통해 더 자세한 정보를 얻을 수 있습니다.

참고 자료