본문 바로가기
파이썬 라이브러리를 활용한 머신러닝

Evaluation Metrics and Scoring

by 일일과제중 2019. 12. 16.
반응형

 

평가 지표와 측정

 

주어진 데이터셋에 대한 지도 학습 모델의 성능을 재는 방법은 많습니다.

 

실전에서는 애플리케이션에 따라 평가 지표가 적합하지 않을 수 있습니다.

 

모델을 선택하고 하이퍼파라미터를 튜닝할 때 올바른 지표를 선택하는 것이 중요합니다.

 

 

최종 목표를 기억하라

 

문제 해결 전략 

 

휴리스틱

 

통계학 (추정, 가설 검정 등)

 

최적화 (이론 기반)

 

머신 러닝 (데이터 기반)

 

 

평가 지표를 선택할 때 머신러닝 애플리케이션의 최종 목표를 기억해야 합니다.

 

실제로 정확한 예측을 만드는 것뿐 아니라 큰 의사 결정 프로세스의 일부로 사용하는 데 더 중점을 둬야할 지 모릅니다.

 

머신러닝 평가 지표를 선택하기 전에 비즈니스 지표라고 부르는 애플리케이션의 고차원적인 목표를 생각해야 합니다.

 

 

모델을 선택할 때,

 

비즈니스 지표에 긍정적인 영향을 주는 모델을 선택해야 합니다.

 

많은 경우에 특정 모델이 비즈니스에 미치는 영향은 실제 운영 시스템에 적용해야 알 수 있기 때문에 어려운 문제입니다.

 

 

개발 초기 단계

 

개발 초기 단계에서 하이퍼파라미터를 조정하기 위해 시험 삼아 모델을 운영 시스템에 곧바로 적용하기란 비즈니스적으로나 개인적으로나 위험부담이 커서 현실적으로 불가능 합니다.

 

 

계산하기 쉬운 평가 지표를 이용한 대리 평가 방식을 종종 사용합니다.

 

대체 방식이므로 평가가 가능하고 원래 비즈니스 목적에 가장 가까운 지표를 찾아야 합니다. 

 

이 근사 지표는 모델을 평가할 떄나 선택할 때마다 사용해야 합니다.

 

평가의 결과는 하나의 숫자가 아닐 수 있지만, 선택한 모델의 예상 비즈니스 임팩트를 나타내야 합니다.

 

 

이진 분류의 평가 지표

 

이진 분류는 실전에서 가장 널리 사용하고 개념도 쉬운 머신러닝 알고리즘입니다. 

 

 

이진 분류에는 양성 클래스와 음성 클래스가 있습니다.

 

양성 클래스가 우리의 관심 클래스입니다.

 

잘못된 양성 예측을 거짓 양성이라 합니다. - 타입 1 에러

 

잘못된 음성 예측 오류를 거짓 음성이라 합니다. - 타입 2 에러 

 

 

일반적으로 거짓 양성의 중요도와 거짓 음성의 중요도가 비슷한 경우는 매우 드뭅니다.

 

많은 사례에서 거짓 음성은 최대한 피해야 하는 반면, 거짓 양성은 비교적 중요도가 낮습니다.

 

잘못 분류한 샘플의 수가 원하는 정보의 전부는 아니므로, 정확도만으로 예측 성능을 측정하기에는 부족할 때가 종종 있습니다. 

 

 

오차 행렬

 

이진 분류 평가 결과를 나타낼 때 가장 널리 사용하는 방법 중 하나입니다.

 

confusion_matrix의 출력은 2 x 2 배열입니다.

 

행은 정답 클래스에 해당합니다.

 

열은 예측 클래스에 해당합니다.

 

각 항목의 숫자는 행에 해당하는 클래스가 얼마나 많이 열에 해당하는 클래스로 분류되었는지를 나타냅니다.

 

그림1

 

오차 행렬의 정보 요약

 

정확도 (accuracy) : 정확히 예측한 수를 전체 샘플 수로 나눈 것입니다. 

 

$\frac{TP + TN}{TP + TN + FP + FN}$

 

정밀도 (precision) : 양성으로 예측된 것 중 얼마나 많은 샘플이 진짜 양성인지 측정합니다.

 

$\frac{TP}{TP + FP}$

 

재현율 (recall, sensitivity) : 전체 양성 샘플 중에서 얼마나 많은 샘플이 양성 클래스로 분류되었는지를 측정합니다. 

 

$\frac{TP}{TP + FN}$

 

특이도 (specificity) : 전체 음성 샘플 중에서 얼마나 많은 샘플이 음성 클래스로 분류되었는지를 측정합니다. 

 

$\frac{TN}{TN + FP}$

 

 

불균형 데이터셋

 

두 종류의 에러 (거짓 양성과 거짓 음성)는 두 클래스 중 하나가 다른 것보다 훨씬 많을 때 더 중요합니다.

 

한 클래스가 다른 것보다 훨씬 많은 데이터셋을 불균형 데이터셋 또는 불균형 클래스의 데이터셋이라 합니다.

 

현실에서는 불균형 데이터가 훨씬 많으며, 관심 대상인 이벤트의 빈도가 그렇지 않은 이벤트와 같거나 비슷한 경우는 드뭅니다.

 

정확도는 불균형한 데이터셋을 평가할 때 사용하기엔 적절한 평가지표가 아닙니다. 

 

 

재현율 최적화와 정밀도 최적화의 상충

 

모든 샘플을 진짜 음성이 하나도 없고 모두 양성 클래스에 속한다고 예측하면,

 

거진 음성이 없어져 재현율이 완벽해집니다,

 

하지만 모든 샘플을 양성으로 예측하면 거짓 양성을 많이 만들고, 따라서 정밀도는 매우 낮아집니다. 

 

다른 한편으로 데이터 포인트 하나만 양성이고 나머지는 음성이라고 예측한다면 정밀도는 완벽합니다.

 

하지만 재현율은 매우 낮아질 것입니다. 

 

 

F-점수 (F-score) : 정밀도와 재현율의 조화 평균

 

F-점수는 이 둘을 하나로 요약합니다.

 

정밀도와 재현율을 같이 고려하므로 불균형한 이진 분류 데이터셋에서는 정확도보다 더 나은 지표가 될 수 있습니다.

 

$2 \cdot \frac{precision \cdot recall}{precision + recall}$

 

 

불확실성 고려 

 

오차 행렬과 분류 리포트가 예측 결과를 자세히 분석할 수 있도록 도와줍니다.

 

예측값은 모델에 담긴 정보가 이미 많이 손실된 상태입니다. 

 

대부분의 분류기는 예측의 확신을 위한 decision_function이나 predict_proba 메서드를 제공합니다.

 

이진 탐색에서 decision_function은 0을, predict_proba는 0.5을 임계값으로 사용합니다.

 

특정 클래스에 초점을 맞춰 예측 조정을 위해 임계점을 바꿀 수 있습니다.

 

임계점을 고르는 확실한 룰을 정하는 일은 어렵습니다. 

 

그림2

 

 

ROC 곡선

 

ROC 곡선은 여러 임계값에서 분류기의 특성을 분석하는 데 널리 사용하는 도구입니다.

 

분류기의 모든 임계값을 고려하지만, 정밀도와 재현율 대신 진짜 양성 비율 (TPR)에 대한 거짓 양성 비율 (FPR)을 나타냅니다.

 

$FPR = \frac{FP}{N} = \frac{FP}{FP + TN} $

$TPR (Recall) = \frac{TP}{P} = \frac{TP}{TP + FN}$

 

곡선 아래의 면적값 하나로 ROC 곡선을 요약할 때가 많습니다 (이 면적을 보통 AUC라고 합니다).

 

AUC는 0과 1사이의 곡선 아래 면적이므로 항상 0 (최악)과 1 (최선) 사이의 값을 가집니다.

 

AUC는 양성 샘플의 순위를 평가하는 것으로 볼 수 있습니다.

 

불균형한 데이터셋에서는 정확도보다 AUC가 훨씬 좋은 지표입니다. 

 

그림3

 

 

다중 분류의 평가 지표

 

일반적으로 다중 분류의 결과는 이진 분류 결과보다 이해하기 어렵습니다.

 

기본적으로 다중 분류를 위한 지표는 모두 이진 분류 평가 지표에서 유도되었으며, 다만 모든 클래스에 대해 평균을 낸 것입니다. 

 

다중 분류의 정확도도 정확히 분류된 샘플의 비율로 정의합니다.

 

다중 분류의 평가에는 정확도 외에 이진 분류에서 사용한 오차 행렬과 분류 리포트 등을 일반적으로 사용합니다. 

 

 

digits 데이터셋의 10개 손글씨 숫자 분류 예시

 

정확도 : 95.3%

 

각 클래스의 정밀도, 재현율, f-score를 계산합니다. 한 클래스를 양성으로 두고 나머지 클래스를 음성 클래스로 간주합니다. 

 

숫자 0에는 오차가 없으므로 클래스 0의 정밀도와 재현율은 모두 1로 완벽합니다. 

 

클래스 1,3, 8을 분류하는 데 어려움을 겪고 있습니다. 

 

그림4

 

그림5

 

 

다중 분류에서 불균형 데이터셋을 위해 가장 널리 사용하는 평가 지표는 f-score의 다중 분류 버전입니다.

 

Micro Averaging : 클래스별 f-score 점수에 가중치를 주지 않습니다. 클래스 크기에 상관없이 모든 클래스를 같은 비중으로 다룹니다.

 

Weighted Averaging : 클래스별 샘플 수로 가중치를 두어 f-score의 평균을 계산합니다.

 

Macro Averaging : 모든 클래스의 거짓 양성, 거짓 음성, 진짜 양성의 총 수를 헤아린 다음 정밀도, 재현율, f-score를 이 수치로 계산합니다. 

 

 

각 샘플을 똑같이 간주한다면, Micro averaging f-score를 추천합니다.

 

각 클래스를 동일한 비중으로 고려한다면 Macro averaging f-score를 추천합니다. 

 

 

회귀의 평가 지표

 

타깃을 과대 예측한 것 대비 과소 예측한 것을 분석합니다. 

 

대부분의 애플리케이션에서는 회귀 추정기의 score 메서드에서 이용하는 $R^{2}$만으로 충분합니다. 

 

가끔 평균 제곱 에러나 평균 절댓값 에러를 사용하여 모델을 튜닝할 때 이런 지표를 기반으로 비즈니스 결정을 할 수 있습니다. 

 

등간 척도와 비율 척도를 고려합니다. 

 

 

Summary and Outlook

 

교차 검증, 그리드 서치, 평가 지표와 머신러닝 알고리즘을 평가하고 개선하기 위한 기초 사항을 살펴보았습니다. 

 

이 장에서 논의한 도구들과 2, 3장에서 나온 알고리즘들은 모든 머신러닝 개발자의 필수 도구 입니다. 

 

 

실질적 가이드 라인

 

교차 검증을 해야 합니다.

 

교차 검증 또는 테스트 세트를 사용하면 머신러닝 모델의 미래 성능을 평가할 숭 ㅣㅆ습니다. 

 

테스트 세트나 교차 검증을 모델이나 모델의 하이퍼파라미터 선택에 사용하면 테스트 데이터로 미래 성능을 평가했을 때 매우 낙관적인 예측치를 얻게 됩니다. 

 

그러므로 모델 학습에는 훈련 데이터로, 모델과 하이퍼파라미터 선택에는 검증 데이터로, 모델 평가에는 테스트 데이터로 분리해서 사용해야 합니다. 간단하게 한 번만 분리하는 대신 교차 검증으로 분할을 반복합니다. 

 

 

모델 선택과 평가에 사용하는 평가 지표와 방법이 중요합니다.

 

모델을 평ㅇ가하고 선택하기 위한 지표가 이 모델이 실제로 사용되는 상황을 잘 대변해야 합니다.

 

실전에서는 분류 문제에 균형 잡힌 클래스를 가진 경우가 거의 없고, 거짓 양성과 거짓 음성이 매우 큰 영향을 미칩니다.

 

이런 영향을 이해하고 적절한 평가 지표를 선택해야 합니다. 

 

 

파이썬 라이브러리를 활용한 머신러닝 책과 성균관대학교 강석호 교수님 수업 내용을 바탕으로 요약 작성되었습니다.

반응형

댓글