이전 시간에는 특성을 기준으로 모델을 해석했다. 이번에는 한 케이스에 대한 정보만을 포함하는 행(분석단위, 데이터포인트)을 기준으로 본다.
1. Individual Conditional Expectation(ICE) plot
특정 분석단위에서 하나의 특정 특성이 변하면 예측값은 어떻게 달라질까? 그 양상을 확인하는 것이 ICE plot이다.
예를 들어 한 사람의 나이, 학력, 국가, 직업에 대한 특성이 있고 그 사람의 연봉을 기록한 타겟이 있다. 이때 나이가 적어지거나 많아지면 연봉의 예측값이 달라질 것이다.
# 확인하고자 하는 분석단위 가져오기
one_datapoint = X_val_encoded.iloc[[3]].copy()
# age 변화 범위 정하기
age_test_range = range(X_val_encoded["age"].min(), X_val_encoded["age"].max() + 1)
# for문으로
results = []
for age in age_test_range:
one_datapoint["age"] = age # age값 바꾸기
one_datapoint_pred_proba = boosting.predict(one_datapoint)[:, 1]
# 바뀐 age 데이터를 통한 예측
results.append(one_datapoint_pred_proba.item())
results = np.array(results)
results -= results[0]
# 나이가 최소일 때의 예측값을 기준으로 하고 그 변화값을 관찰한다
# 시각화
import matplotlib.pyplot as plt
plt.plot(age_test_range, results)
plt.xlabel("age")
plt.ylabel("$\Delta$ pred_proba")
위 이미지에 따르면 해당 분석단위에서는 age가 60에 이르기까지 꾸준히 연봉이 오른 후 줄어들 것으로 예측한다
2. Partial Dependence Plot(PDP)
PDP란 ICE plot을 모든 분석단위에 적용한 뒤 그 평균을 낸 것이다. 모델이 해당 특성을 어떻게 분석하고 이해하고 있는지 판단할 수 있다.
이때 평균선 뿐 아니라 개별 선들을 모두 나타내어 특별한 경우에서의 예측값 변화를 살펴볼 수가 있다. 또 아래와 같이 2개의 특성을 히트맵으로 함께 살펴볼 수도 있다.
*현업에서 클라이언트가 AI 개발자에게 던지는 질문은 무엇인가?
① 모델이 왜 그렇게 예측했나요? --> 특성 중요도와 ICE, PDP 등을 이용해 설명할 수 있어야 한다
② 모델로 비즈니스 문제를 해결할 수 있나요? --> 모델이 가져올 수익을 따져봐야 한다
*encoder.mapping 코드를 치면 각 카테고리가 어떤숫자로 범주화 되었는지 알 수 있다
'Codestates AI 부트캠프 > 2. Machine Learning' 카테고리의 다른 글
[머신러닝] 3-4 Class Imbalance (0) | 2023.04.16 |
---|---|
[머신러닝] 3-3 ML Problem Framing (0) | 2023.04.16 |
[머신러닝] 3-1 모델 해석 (특성 기준) (0) | 2023.04.16 |
[머신러닝] 2-4 Model Tuning (0) | 2023.04.16 |
[머신러닝] 2-3 전처리 (Preprocessing) (0) | 2023.04.16 |