소개
이 실습에서는 scikit-learn 을 사용하여 교차 검증을 통한 재귀적 특징 제거 (RFECV) 를 단계별로 구현하는 과정을 살펴볼 것입니다. RFECV 는 모델 구축에 사용할 관련 특징의 하위 집합을 선택하는 특징 선택 (feature selection) 에 사용됩니다. 15 개의 특징 중 3 개는 정보적이고, 2 개는 중복되며, 10 개는 정보가 없는 특징을 사용하여 분류 작업을 수행할 것입니다.
VM 팁
VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근할 수 있습니다.
때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.
학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.
데이터 생성
scikit-learn 의 make_classification 함수를 사용하여 분류 작업을 생성할 것입니다. 15 개의 특징 중 3 개는 정보적이고, 2 개는 중복되며, 10 개는 정보가 없는 500 개의 샘플을 생성할 것입니다.
from sklearn.datasets import make_classification
X, y = make_classification(
n_samples=500,
n_features=15,
n_informative=3,
n_redundant=2,
n_repeated=0,
n_classes=8,
n_clusters_per_class=1,
class_sep=0.8,
random_state=0,
)
모델 학습 및 선택
RFECV 객체를 생성하고 교차 검증 점수를 계산할 것입니다. "정확도" 점수 전략은 올바르게 분류된 샘플의 비율을 최적화합니다. 로지스틱 회귀를 추정기로 사용하고 5 개의 폴드를 가진 계층적 k-겹 교차 검증을 사용할 것입니다.
from sklearn.feature_selection import RFECV
from sklearn.model_selection import StratifiedKFold
from sklearn.linear_model import LogisticRegression
min_features_to_select = 1 ## 고려할 최소 특징 수
clf = LogisticRegression()
cv = StratifiedKFold(5)
rfecv = RFECV(
estimator=clf,
step=1,
cv=cv,
scoring="accuracy",
min_features_to_select=min_features_to_select,
n_jobs=2,
)
rfecv.fit(X, y)
print(f"최적 특징 수: {rfecv.n_features_}")
특징 수 대 교차 검증 점수 플롯
선택된 특징 수와 교차 검증 점수를 플롯할 것입니다. 플롯 생성을 위해 matplotlib 를 사용할 것입니다.
import matplotlib.pyplot as plt
n_scores = len(rfecv.cv_results_["mean_test_score"])
plt.figure()
plt.xlabel("선택된 특징 수")
plt.ylabel("평균 테스트 정확도")
plt.errorbar(
range(min_features_to_select, n_scores + min_features_to_select),
rfecv.cv_results_["mean_test_score"],
yerr=rfecv.cv_results_["std_test_score"],
)
plt.title("상관 특징을 가진 재귀적 특징 제거")
plt.show()
요약
이 실험에서는 scikit-learn 을 사용하여 교차 검증을 포함한 재귀적 특징 제거 (RFECV) 를 구현하는 과정을 살펴보았습니다. 15 개의 특징을 가진 분류 작업을 생성했으며, 그중 3 개는 정보적, 2 개는 중복적, 10 개는 비정보적이었습니다. 로지스틱 회귀를 추정기로 사용하고 5 개의 폴드를 가진 계층적 k-겹 교차 검증을 사용했습니다. 선택된 특징 수와 교차 검증 점수를 플롯했습니다. 최적의 특징 수는 3 개였으며, 이는 실제 생성 모델과 일치했습니다. 또한 상관 특징의 도입으로 인해 선택된 특징이 3 개에서 5 개까지 동일한 점수의 플랫폼을 관찰했습니다.