개념 정리/implement

implement_cost_matrix

명징직조지훈 2023. 1. 3. 01:49

서로 다른 종류의 오차가 일으키는 서로 다른 종류의 비용에 대한 균형을 맞추기 위해 비균등 비용 unequal cost 라는 개념을 적용할 수 있다.

이진 분류 문제를 예로 들면 도메인 지식에 기반을 둔 비용 행렬 cost matrix 를 생성한다. 

먼저 confusion matrix 를 이전과 같은 방법으로 얻는다.

임의의 2*2 행렬의 생성

confusion_matrix = np.random.randint(0,100,4).reshape(2,2)
confusion_matrix
>>>
array([[23,  7],
       [14, 35]])

이후 사용자 지정을 통한 비용행렬을 생성한다.

cost_matrix = np.array(([0,10],[1,0]))
cost_matrix
>>>
array([[ 0, 10],
       [ 1,  0]])

비용 행렬을 통해 손실 값을 계산할 수 있는데, 두 행렬의 원소 곱을 통해 계산할 수 있다.

loss = confusion_matrix * cost_matrix
loss
>>>
array([[ 0, 70],
       [14,  0]])
       
loss_sum = np.sum(loss)
loss_sum
>>>
84

행렬 연산 후 모든 요소의 합을 통해 총 비용 total_cost 를 계산할 수 있다.

손실 함수를 사용할 경우 더 이상 오차 횟수를 최소화하는 모델이 아닌, 총 비용을 최소화하는 모델을 얻어야 한다.

비용민감 cost-sensitive 오차율은 당므과 같이 정의된다.

음성을 양성으로 잘못 분류했을 경우, 양성을 음성으로 잘못 분류했을 경우의 합,
행렬로 일반화가 가능하다