4. 분류 모델 평가하기

- 예측 모델링에서, 수많은 모델을 시도해보고 각각에 홀드아웃 표본(시험표본 혹은 타당성검사 표본이라고도 부른다)을 적용하고 성능을 평가하는 것은 아주 일반적이다.

용어 의미
정확도(accuracy) 정확히 분류된 비율
혼동행렬(confusion matrix) 분류에서 예측된결과와 실제 결과에 대한 레코드의 개수를 표시한 테이블(이진형인 경우 2x2)
민감도(sensitivity) 정확히 분류된 1의 비율(유의어 : 재현율)
특이도(specificity) 정확히 분류된 0의 비율
정밀도(precision) 정확히 1이라고 예측된 1을 비율
ROC 곡선(ROC curve) 민감도와 특이성을 표시한 그림
리프트(lift) 모델이 다른 확률 컷오프에 대해 (비교적 드문) 1을 얼마나 더 효과적으로 구분하지 나타내는 측정 지표

 

- 분류 성능을 측정하는 가장 간단한 방법은 정확히 예측한 것들의 비율이 얼마인지 보는 것이다.

 

$정확도 = \frac{\sum참양성 + \sum참음성}{표본크기}$

1) 혼동행렬

- 분류 결과를 나타내는 가장 대표적인 행렬이다.

    이진 응답변수에 대한 혼동행렬과
그에 관련된 다른 지표들
 
    예측 응답변수  
    $\hat{y}=1$ $\hat{y}=0$  
실제
응답변수
$y=1$ 참 양성
(TP)
거짓 음성
(FN)
재현율(민감도)
TP / $y=1$
$y=0$ 거짓 양성
(FP)
참 음성
(TN)
특이도
FP / $y=0$
유별율
$(y=1)$ / 총 개수
정밀도
TP/($\hat{y}=1$)
  정확도
(TP+TN) / 총 개수

2) 정밀도, 재현율, 특이도

- 정밀도란, 예측된 양성 결과의 정확도를 의미한다.

 

$정밀도 = \frac{참 양성}{\sum참양성+\sum거짓양성}$

 

- 재현율(recall)은 민감도라고 부르기도 하는데, 양성 결과를 예측하는 모델의 능력을 평가한다.

 

$재현율 = \frac{참 양성}{\sum참양성+\sum거짓음성}$

 

- 특이도는 음성 결과를 정확히 예측하는 능력을 측정한다.

 

$특이도 = \frac{참음성}{\sum참음성+\sum거짓양성}$

 

3) ROC 곡선

- 재현율과 특이도 사이에는 트레이트오프 관계(시소 관계)가 있다. 1을 잘 잡아낸다는 것은 그만큼 0을 1로 잘못 예측할 가능성도 높아지는 것을 의미한다.

- 이러한 트레이트오프 관계를 표현하기 위한 지표가 바로'수신자 조작 특성(receiver operating characteristic)'곡선, 줄여서 ROC 곡선이다.

- ROC 곡선은 x축의 특이도에 대한 y축의 재현율(민감도)을 표시한다.

The ROC space for a "better" and "worse" classfier

4) AUC

- ROC 곡선 자체로는 아주 훌륭한 시각화 도구이지만, 분류기 성능을 나타내는 어떤 하나의 값을 주지는 않는다.

- 곡선 아래 면적(AUC; area underneath the curve)은 간단히 말해 ROC 곡선의 아래쪽 면적을 의미한다.

- AUC 값이 높을수록, 더 좋은 분류기이다.

- AUC가 1이라는 것은 0을 1로 잘못 예측하는 경우 없이, 1을 정확히 분류하는 완벽한 분류기를 의미한다.

- 최악의 분류기는 ROC 곡선이 가운데를 지나가는 직선인 경우, 즉 AUC가 0.5인 경우이다.

 

5) 리프트

- 무작위로 선택했을 때, 0.1%의 정확도를 얻은 반면, 상위 10%에서 0.3%의 결과를 얻었다면, 이 알고리즘은 상위 10%에서 3의 리프트(다른 표현으로 이득)를 갖는다고 할 수 있다.

 

- 리프트 차트를 계산하려면 먼저 y축에 재현율을 그리고 x축에 총 레코드 수를 나타내는 누적 이득 차트(cumulative gains chart)를 작성해야 한다.

- 리프트 곡선(lift curve)은 랜덤 선택을 의미하는 대각선에 대한 누적이득의 비율을 말한다.

- 리프트 곡선은 레코드를 1로 분류하기 위한 확률 컷오프 값에 따른 결과의 변화를 한눈에 볼 수 있게 해준다.

 

Lift Chart

- 정확도(예측한 분류 결과가 몇 퍼센트 정확한지)는 모델을 평가하는 가장 기본적인 단계이다.
- 다른 평가 지표들(재현율, 특이도, 정밀도)은 좀 더 세부적인 성능 특성들을 나타낸다(예를 들면 재현율은 모델이 1을 얼마나 정확히 분류하는지를 나타낸다).
-  AUC(ROC 곡선 아래 면적)는 모델의 1과 0을 구분하는 능력을 보여주기 위해 가장 보편적으로 사용되는 지표이다.
- 이와 비슷하게, 리프트는 모델이 1을 얼마나 효과적으로 분류해내는지를 측정한다. 가장 1로 분류될 가능성이 높은 것부터 매 십분위마다 이를 계산한다.

 


5. 불균형 데이터 다루기

용어 의미
과소표본(undersample) 분류 모델에서 개수가 많은 클래스 데이터 중 일부 소수만 사용하는 것
과잉표본(oversample) 분류 모델에서 희귀 클래스 데이터를 중복해서, 필요하면 부트스트랩 해서 사용하는 것
상향 가중치(up weight)
혹은 하향 가중치(down weight)
모델에서 희귀(혹은 다수) 클래스에 높은(혹은 낮은) 가중치를 주는 것
데이터 생성(data generation) 부트스트랩과 비슷하게 다시 샘플링한 레코드를 빼고 원래 원본과 살짝 다르게 데이터를 생성하는 것
z 점수(z-score) 표준화 결과
K 최근접 이웃 알고리즘에서 이웃들의 개수

1) 과소표본추출

- 데이터 개수가 충분하다면, 다수의 데이터에 해당하는 클래스에서 과소표본추출(다운샘플링)을 해서 모델링할 때 0과 1의 데이터 개수에 균형을 맞출 수 있다.

- 기본 아이디어는 다수의 클래스에 속한 데이터들 중에 중복된 레코드들이 많을 것이라는 사실에서 출발한다.

 

2) 과잉표본추출과 상향/하향 가중치

- 과소표본 방식의 약점으로 지적받는 부분은 일부 데이터가 버려지기 때문에 모든 정보를 활용하지 못한다는 점이다.

- 이럴 경우, 다수 클래스를 과소표본추출하는 대산, 복원추출 방식(부트스트래핑)으로 희귀 클래스의 데이터를 과잉표본추출(업샘플링)해야 한다.

- 데이터에 가중치를 적용하는 방식으로 이와 비슷한 효과를 얻을 수 있다.

 

※ 손실함수

- 많은 분류 혹은 회귀 알고리즘은, 어떤 기준 혹은 손실 함수(loss function)를 최적화한다고 볼 수 있다.

- 분류 알고리즘의 손실 함수를 직접적으로 수정하는 것은 복잡하고 어렵다.

- 반면에 가중치를 사용하는 방법은 가중치가 높은 데이터를 선호하고 가중치가 낮은 데이터의 오류를 줄여주는 식으로 손실 함수를 변경하는 것은 쉬운 방법이다.

 

3) 데이터 생성

- 부트스트랩을 통한 업샘플링 방식의 변형으로 기존에 존재하는 데이터를 살짝 바꿔 새로운 레코드를 만드는 데이터 생성 방법이 있다.

- 데이터의 개수가 제한적이기 때문에 알고리즘을 통해 분류 '규칙'을 세우기에는 정보가 충분하지 않다는 직관이 바탕에 깔려 있다.

- 통계에서 부스팅이나 배깅 같은 앙상블에 담겨 있는 개념과 매우 비슷하다.

 

※ SMOTE 알고리즘

- 합성 소수 과잉표본 기법(Synthetic Minority Oversampling Technique) 알고리즘은 업샘플링된 레코드와 비슷한 레코드를 찾고, 원래 레코드와 이웃 레코드의 랜덤 가중평균으로 새로운 합성 레코드를 만든다.

 

- 데이터의 심각한 불균형(즉, 관심 있는 결과의 데이터가 희박할 때)은 분류 알고리즘에서 문제가 될 수 있다.
- 한 방법은 다수의 데이터를 다운샘플링하거나 희귀한 데이터를 업샘플링해서 학습 데이터의 균형을 맞추는 것이다.
- 갖고 있는 1의 데이터를 모두 사용해도 그 개수가 너무 적을 때는, 희귀한 데이터에 대해 부트스트랩 방식을 사용하거나 기존의 데이터와 유사한 합성 데이터를 만들기 위해 SMOTE를 사용한다.
- 데이터에 불균형이 존재할 경우 보통은 어느 한쪽(1의 클래스)을 정확히 분류하는 것에 더 높은 점수를 주게 되어 있고, 이러한 가치 비율이 평가 지표에 반영되어야 한다.

<참고자료>
1. Peter Brucs & Andrew Brucs(2018). 데이터 과학을 위한 통계. 한빛미디어. 이용준 옮김.
2. ROC curve, Wikipedia (ROC curve)
3. Lift Chart (Lift Chart)

'공부 > 데이터 과학을 위한 통계(한빛미디어)' 카테고리의 다른 글

16. 통계적 머신러닝(2)  (0) 2021.01.11
15. 통계적 머신러닝(1)  (0) 2021.01.07
13. 분류(1)  (0) 2021.01.01
12. 회귀와 예측(2)  (0) 2020.12.31
11. 회귀와 예측(1)  (0) 2020.10.25

+ Recent posts