본문 바로가기

Codestates AI 부트캠프/2. Machine Learning

[머신러닝] 3-2 모델 해석 (분석 단위 기준)

이전 시간에는 특성을 기준으로 모델을 해석했다. 이번에는 한 케이스에 대한 정보만을 포함하는 행(분석단위, 데이터포인트)을 기준으로 본다.


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 코드를 치면 각 카테고리가 어떤숫자로 범주화 되었는지 알 수 있다