Post

비즈니스 관점의 모델 평가

비즈니스 관점에서 모델을 평가하는 방법을 알아보자

✅ 비즈니스 관점의 모델 평가

결국 인공지능 모델을 만드는 것은 어떠한 비즈니스적 목적을 가지고 만드는 것이다. 그래서 단순히 Accuracy 등의 수학적 기법의 판단 근거가 아니라, 비즈니스 관점에서의 판단 근거를 세워야 한다.

해당 모델으로 인해 얻을 수 있는 경제적인 가치를 표현하면 된다.

✅ 분류 예제) 신용도 평가

[신용도 평가 관련 실습 코드]

신용도를 평가하여 대출을 해줄지 말지를 결정한다고 가정하자. 대출 이자와 원금을 잘 상환하는 사람의 경우 대출금의 약 4%(연) 이자 수익이 발생되고, 제대로 상환하지 않는 고객으로 인해 약 9%(연)의 원금 손실이 난다고 하자. 평균 대출 금액은 약 3200 달러, 평균 대출 기간은 2년 이다.

그러면 비즈니스 테이블은 아래와 같이 만들 수 있다.

 NegativePositive
Bad0-0.18
Good-0.08+0.08

그리고 이 값을 우리 모델의 전체에 대한 비율로 만든 Confusion Matrix와 element wise 곱을 한 다음, 더해주면 1인당 1년의 기대가치를 뽑을 수 있다.

1
2
3
4
5
6
7
cm = confusion_matrix(y_val, y_pred)
cm_p = cm / np.sum(cm)

bm = np.array([[0, -0.18], [-0.08, 0.08]])

# 기대가치
np.sum(cm_p * bm) * 3200

✅ 회귀

회귀문제도 마찬가지로 각 상황에 따른 경제적 이득을 정해서 재고 순환율 등등을 시뮬레이션 하는 방법으로 구한다고 한다.

✅ 성능 튜닝 시 평가지표 교체

비즈니스 기대가치 지표를 Scoring으로 사용할 수 있다. sklearn.metricsmake_scorer 함수를 사용하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 비즈니스 기대가치 지표로 평가할 함수 생성
from sklearn.metrics import * 

def biz_score(y, pred, biz_v):
    cm = confusion_matrix(y, pred)
    cm_p = cm / np.sum(cm)
    amt_mean = 3200

    return np.sum(biz_v * cm_p) * amt_mean

bv = np.array([[0, -0.18], [-0.08, 0.08]])
b_score = make_scorer(biz_score, greater_is_better= True, biz_v = bv)

###########################
# 튜닝 진행
# random하게 찾을 범위를 지정
maxdepth =list(range(3,8))
nestimators = list(range(10,300,10))
param_dist = dict(max_depth=maxdepth, n_estimators=nestimators)

# 모델선언
rf=RandomForestClassifier()
grid_rf = GridSearchCV(rf, param_dist, cv=5, scoring=b_score)

# 학습
grid_rf.fit(x_train, y_train)
This post is licensed under CC BY 4.0 by the author.

Shapley Value와 SHAP

[Numpy] 행렬 축 바꾸기, 차원 늘리기, 합치기