관리 메뉴

jisoleil's coding good thing

AI 모델 해석 평가 2일차 본문

AIVLE/6주차

AI 모델 해석 평가 2일차

jisoleil 2023. 3. 13. 00:11
  • Shaply Value : 하나의 특성에 대한 중요도를 알기 위해 모든 가능한 조합에서, 예측값과 전체평균과의 각 차이에 각 feature가 얼마나 기여했는지 계산한값

 

  • SHAP(SHaply Additive exPlanations ): 모든 가능한 피처 순서쌍에 대해서 샘플링하고 평균 값을 계산
Tree 기반 알고리즘 TreeExplainer
Deep Learning     DeepExplainer
SVM     KernelExplainer
그외 일반 알고리즘   Explainer

             

1. 모델을 학습

model1 = RandomForestRegressor()
model1.fit(x_train, y_train)

2. 해석

explainer1 = shap.TreeExplainer(model1)
shap_values1 = explainer1.shap_values(x_train)

3. 시각화 예측값의 전체 평균을 중심으로 예측된 값에 어떠한 영향을 주었는지 변수별 확인가능

shap.initjs() # javascript 시각화 라이브러리 --> colab에서는 모든 셀에 포함시켜야 함.

# force_plot(전체평균, shapley_values, input)
shap.force_plot(explainer1.expected_value, shap_values1[0, :], x_train.iloc[0,:])

f(x): 예측값

base value: 전체평균

빨강색: 상승요인

파랑색: 하락요인

 

 

  • 기대가치 평가

-분류모델

ex)

-제 때 대출이자와 원금을 상황하는 고객으로부터 대출금의 약 4%(연) 이자 수익 발생

-제 때 상황하지 않는 고객으로 인해, 평균적으로 약 9%의 원금 손실(연)이 발생

-평균 대출 금액은 약 3200 달러, 평균 대출 기간은 2년

0.04*2(연) =0.08

0.09*2(연) =0.18

1.비즈니스 가치로 matrix로 만들기 

  y 예측값
0 1
실제 y 0 0
(어차피 못받을 걸 예상 잘 했으니 아무일 없음)
-0.18
(못 받을 사람인데 받을 수 있다고 했으니 손실)
1 -0.08
(받을 수 있었는데 예측을 잘 못했으니 손실)
0.08
(당연히 받을 돈이고 예측도 잘 했기 때문에 )
bv = np.array([[0,-0.18],[-0.08,0.08]])
2.
cm = confusion_matrix(y_val, pred)
3. 모델 기대가치 계산
cm1_p = cm1/np.sum(cm1)
np.sum(bv * cm1_p) * 3200 #평균 대출 금액은 약 3200 달러이므로 
 
 
-회귀 모델
어렵습니당
뭔소린지 잘 모르겠습니다.
넘어가겠습니당.
 
 
한주 힘들었다.
그래도 재밌게 놀기도 하고 공부도 열심히 했다
담주엔 열심히 공부도 하고 놀기도 해야지
 
 
 
나 폼 좀 미쳤는데?
 

'AIVLE > 6주차' 카테고리의 다른 글

AI 모델 해석 평가 1일차  (1) 2023.03.10
Comments