자동적으로 최선의 특성을 선택하고 싶을 때 사용할 수 있는 feature selection 방법. 재귀적으로 특성을 제거하여 최적의 변수만을 남겨 가장 좋은 특성들만을 남길 수 있다.
from sklearn.feature_selection import RFE
rfe = RFE(estimator=ols, n_features_to_select=3)
rfe.fit(features, target)
rfe.transform(features)
재귀적 특성 제거 (RFE : Recursive Feature Elemination)를 교차검증(CV)으로 수행 모델 성능이 나빠질 때까지 특성을 제거하면서 반복적으로 모델 훈련
CV사용 → RFE 과정에서 남길 특성의 최적 개수 찾을 수 있음
# import
from sklearn.datasets import make_regression
from sklearn.feature_selection import RFECV
from sklearn import datasets, linear_model
# 특성 행렬과 타깃 벡터를 생성
features, target = make_regression(n_samples = 10000,
n_features = 100,
n_informative = 2,
random_state = 1)
# 모델 생성
ols = linear_model.LinearRegression()
# RFECV를 사용하여 특성 제거
rfecv = RFECV(estimator=ols, step=1, scoring="neg_mean_squared_error")
rfecv.fit(features, target)
rfecv.transform(features)
parameter | Description |
---|---|
estimator | 특성을 선택할 모델 |
step | 매 스텝 제거될 feature 수 (default=1) |
min_features_to_select | 선택될 최소한의 feature 수 (default=1) |
cv | cross validation (default=5) (version 0.22부터 default가 3에서 5로 바뀜) |
attribute | Description |
---|---|
estimator_ | feature를 고르는 데 사용된 모델 |
n_features_ | 최적의 feature 수 |
ranking_ | feature의 순위 |
support_ | 선택된 feature 특성이 표시된 boolean mask |
[참고]
https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFECV.html
파이썬을 활용한 머신러닝 쿡북 (한빛미디어, 2019)