모델 기반 및 순차적 특징 선택

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 모델 기반 및 순차적 특징 선택 두 가지 접근 방식을 보여줍니다. 목표는 주어진 데이터 세트에서 가장 중요한 특징을 선택하는 것입니다. 우리는 442 명의 당뇨병 환자로부터 수집된 10 개의 특징으로 구성된 당뇨병 데이터 세트를 사용합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

데이터 로드

scikit-learn 에서 당뇨병 데이터 세트를 로드하고 설명을 출력합니다.

from sklearn.datasets import load_diabetes

diabetes = load_diabetes()
X, y = diabetes.data, diabetes.target
print(diabetes.DESCR)

계수를 통한 특징 중요도

특징의 중요도를 파악하기 위해 RidgeCV 추정기를 사용합니다. 절댓값이 가장 큰 coef_ 값을 가진 특징이 가장 중요하다고 간주합니다.

from sklearn.linear_model import RidgeCV

ridge = RidgeCV(alphas=np.logspace(-6, 6, num=5)).fit(X, y)
importance = np.abs(ridge.coef_)
feature_names = np.array(diabetes.feature_names)
plt.bar(height=importance, x=feature_names)
plt.title("계수를 통한 특징 중요도")
plt.show()

중요도 기반 특징 선택

SelectFromModel을 사용하여 계수에 따른 가장 중요한 두 개의 특징을 선택합니다. SelectFromModelthreshold 매개변수를 받으며, 이 매개변수보다 중요도 (계수로 정의됨) 가 높은 특징을 선택합니다.

from sklearn.feature_selection import SelectFromModel

threshold = np.sort(importance)[-3] + 0.01

sfm = SelectFromModel(ridge, threshold=threshold).fit(X, y)
print(f"SelectFromModel 이 선택한 특징: {feature_names[sfm.get_support()]}")

순차적 특징 선택을 이용한 특징 선택

순차적 특징 선택기 (SFS) 를 사용하여 특징을 선택합니다. SFS 는 각 반복에서 교차 검증 점수를 기반으로 선택된 특징에 추가할 최상의 새로운 특징을 선택하는 탐욕적 절차입니다. 또한 역방향 (역방향 SFS) 으로 진행할 수 있습니다. 즉, 모든 특징으로 시작하여 하나씩 제거할 특징을 탐욕적으로 선택합니다.

from sklearn.feature_selection import SequentialFeatureSelector

sfs_forward = SequentialFeatureSelector(ridge, n_features_to_select=2, direction="forward").fit(X, y)
sfs_backward = SequentialFeatureSelector(ridge, n_features_to_select=2, direction="backward").fit(X, y)

print(f"순방향 순차적 선택으로 선택된 특징: {feature_names[sfs_forward.get_support()]}")
print(f"역방향 순차적 선택으로 선택된 특징: {feature_names[sfs_backward.get_support()]}")

요약

이 실험에서는 모델 기반 및 순차적 특징 선택 두 가지 접근 방식을 보여주었습니다. RidgeCV 추정기를 사용하여 특징의 중요도를 얻었고, SelectFromModel 을 사용하여 중요도를 기반으로 특징을 선택했습니다. 순차적 특징 선택기 (Sequential Feature Selector) 는 각 반복에서 교차 검증 점수를 기반으로 선택된 특징에 추가할 최상의 새로운 특징을 선택하는 탐욕적 절차입니다.