인프런 커뮤니티 질문&답변

shumiro님의 프로필 이미지

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

<신규> Permutation Importance 소개 및 실습

permutation importance 순서가 잘 이해가지 않습니다.

22.03.20 21:21 작성

·

210

1

안녕하세요. 강사님  아래 코드에서 이해가 안되는게 있어 질문드립니다.

#학습, 예측, R2 Score 평가 

model = Ridge(alpha=1e-2).fit(X_train, y_train)  # 릿지회귀로 학습을 시킨다.

y_pred = model.predict(X_val)

print('r2 score:', r2_score(y_val, y_pred))

r2 score: 0.35666062386954545

# 가장 평균 permutation importance가 높은 순으로 내림차순 정렬 후 평균 permutation importance값과 표준 편차 출력

for i in r.importances_mean.argsort()[::-1]:

    if r.importances_mean[i] - 2 * r.importances_std[i] > 0:

         print(diabetes.feature_names[i],"   ", np.round(r.importances_mean[i], 4), " +/- ", np.round(r.importances_std[i], 5))

 

이때 출력값이 

s5     0.2042  +/-  0.04965

bmi     0.1758  +/-  0.0484

bp     0.0884  +/-  0.03284

sex     0.0559  +/-  0.02319 인데요

 

여기에서  순서가 반대로 되야 하는게 아닌가요 (sex bp bmi s5 순서로)

예를 들어 s5 피쳐는 30번 랜덤 셔플해서 나온 성능이 0.2042이고

sex는 0.0059이면 원본 값의 r2 score가  0.3566 인경우 그 차이(원본에서 평균적으로 얼마나 성능이 감소했나)가 큰 피쳐가

영향을 더 준다고 이해했는데 그렇다면 순서가 반대가 되어야 하지 않나요. (원본 0.3566에서 sex를 뺀게 s5를 뺀것보다 큼)

강의 중에 s5 피쳐관련해서 1.5라는 값도 얘기하셨는데 잘 이해가 안가서 질문드립니다.

답변 1

1

권 철민님의 프로필 이미지
권 철민
지식공유자

2022. 03. 21. 20:35

안녕하십니까, 

이 부분은 좀 더 자세히 설명할 필요가 있었던것 같습니다. 

permutation_importance를 적용해 버리면, 바로 피처 중요도가 permutation importance 방식으로 적용해 버립니다.  

그러니까, permutation_importance.importances_mean 속성은 계산된 피처 중요도를 가지고 있습니다. 이중에서 높은 것부터 출력하면 됩니다. 

감사합니다. 

 

shumiro님의 프로필 이미지

작성한 질문수

질문하기