변수 순열 중요도

Beginner

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

소개

이 실습에서는 예측 모델에서 특징의 중요도를 결정하는 데 사용되는 순열 특징 중요도 (Permutation Feature Importance) 방법에 대해 배웁니다. 이 방법은 해석하기 어려운 비선형 또는 불투명 모델에 특히 유용합니다.

가상 머신 팁

가상 머신 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 연습을 위해 Jupyter Notebook에 접근할 수 있는 Notebook 탭으로 전환합니다.

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

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

데이터 로드

먼저, 예측 모델을 학습하는 데 사용할 수 있는 데이터 세트를 로드해야 합니다. scikit-learn 의 당뇨병 데이터 세트를 사용할 것입니다. 이 데이터 세트는 당뇨병 환자에 대한 정보를 포함합니다.

from sklearn.datasets import load_diabetes

## 당뇨병 데이터 세트 로드
diabetes = load_diabetes()

## 데이터를 학습 및 검증 세트로 분할
X_train, X_val, y_train, y_val = train_test_split(diabetes.data, diabetes.target, random_state=0)

모델 학습

다음으로, 학습 데이터에 회귀 모델을 학습시키겠습니다. 이 예제에서는 Ridge 회귀 모델을 사용합니다.

from sklearn.linear_model import Ridge

## Ridge 회귀 모델 학습
model = Ridge(alpha=1e-2).fit(X_train, y_train)

모델 평가

이제 검증 세트를 사용하여 학습된 모델을 평가하겠습니다. 여기서 사용된 평가 지표는 R-제곱 점수입니다.

## 검증 세트에서 모델 평가
score = model.score(X_val, y_val)
print("검증 점수:", score)

변수 중요도 측정 (Permutation Feature Importance)

이제 scikit-learn 의 permutation_importance 함수를 사용하여 변수 중요도를 계산하겠습니다. 이 함수는 학습된 모델, 검증 세트, 변수를 셔플할 횟수를 입력으로 받습니다.

from sklearn.inspection import permutation_importance

## 변수 중요도 계산
result = permutation_importance(model, X_val, y_val, n_repeats=30, random_state=0)

## 변수 중요도 출력
for i in result.importances_mean.argsort()[::-1]:
    if result.importances_mean[i] - 2 * result.importances_std[i] > 0:
        print(f"{diabetes.feature_names[i]}: {result.importances_mean[i]:.3f} +/- {result.importances_std[i]:.3f}")

결과 해석

계산된 변수 중요도는 단일 변수 값이 무작위로 섞였을 때 모델 점수의 감소량을 나타냅니다. 중요도 값이 높은 변수는 모델이 예측에 그 변수를 더 많이 활용한다는 것을 의미합니다.

이 예제에서 모델 성능에 가장 큰 영향을 미치는 상위 변수는 "s5", "bmi", "bp", "sex"입니다.

요약

이 실습에서는 예측 모델에서 변수의 중요도를 평가하는 변수 순열 중요도 (Permutation Feature Importance) 방법에 대해 배웠습니다. 데이터 로드, 모델 학습, 모델 평가, 변수 중요도 계산, 결과 해석 등의 단계를 거쳤습니다. 이 방법은 어떤 변수가 가장 예측력이 높고 모델이 각 변수에 얼마나 의존하는지 이해하는 데 유용합니다.