데이터 과학 및 머신러닝에서는 피처 선택(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의 공식 문서와 다른 참고 자료를 통해 더 자세한 정보를 얻을 수 있습니다.
참고 자료
- scikit-learn 공식 문서
- sklearn.feature_selection.SelectKBest
- sklearn.feature_selection.RFECV
- sklearn.feature_selection.SelectFromModel