본문 바로가기

파이썬/파이썬 기초

지도 학습 분류와 회귀의 차이와 성능 평가 지표

지도학습은 크게 분류(classification)과 회귀(regression)으로 나뉜다.

 

분류

분류는 이미 정의된 class label 중 하나를 예측하는 것이다. 두 개의 클래스로 분류하는 것이 이진분류, 세 개 이상의 클래스로 분류하는 것이 다중 분류이다.

 

 

이진 분류는 양성 클래스(분류하고자 하는 대상)와 음성 클래스로 나뉘며 보통 분류하고자 하는 대상을 1로 설정한다.

 

 

회귀

회귀는 연속적인 숫자를 예측하는 것이다. 예를 들면 고객 별 연체 확률을 예측하는 것, 특정 상품의 판매량을 예측하는 것 등은 회귀 문제이다.

 

 

회귀와 분류를 구분할 때는 출력 값에 연속성이 있는지를 생각해보면 된다.

 

 


성능 평가를 지표를 선택할 때는 모델을 설계한 목적/목표를 생각해야 한다. 통상적으로 분류 모델의 성능 평가 지표는 정확도, 회귀 모델의 성능 평가 지표는 R^2를 많이 사용하지만 모든 경우에 맞는 평가 지표는 아니다.

 

 

예를 들어 암을 조기 발견하는 애플리케이션을 가정해보자. 실제 암인데 암이 아니라고 거짓 판정(거짓 음성 FN)을 하는 것이 실제로는 암이 아닌데 암이라고 거짓 판정하는 것(거짓양성 FP)보다 더 치명적이다. 통계학적으로 거짓양성은 타입1에러, 거짓음성은 타입2에러인데 일반적으로 타입2에러가 더 치명적이라고 본다.

 

 

 

참고로 Positive는 귀무가설을 기각했다는 의미, Negative는 귀무가설을 기각하지 못했음을 의미한다.

False는 결론이 잘못됐음을, Trues는 결론이 옳음을 의미.

 

 

또 현실에서 대부분의 데이터셋은 한 클래스가 다른 클래스보다 훨씬 많은 불균형 데이터셋이다. 불균형 데이터셋에서 정확도만으로는 모델의 성능이 좋은지 판단하기 어렵다.

 


 

정밀도, 재현율, f1점수

정밀도(precision) 예측 양성 중 진짜 양성/예측 양성 거짓 양성의 수를 줄이는 것이 목표일 때
재현율(recall) 예측 양성/전체 양성 거짓 음성의 수를 줄이는 것이 목표일 때
f1 score 정밀도와 재현율의 조화평균 불균형 이진 분류 데이터셋에서 정확도보다
좋은 지표로 사용 가능
하지만 해석, 설명이 어려움

 

정밀도와 재현율은 상충 관계에 있다. 분류기에서 임계값을 조정하는 것은 이러한 상충 관계를 조정하는 것이다.

 

 

 

사이킷런의 precision_recall_curve를 이용하면 가능한 모든 임계값에 대해 재현율과 정밀도 쌍을 확인할 수 있다.

 

AP는 Average Precision으로 각각의 임계값에서 해당 지점의 재현율과 직전 지점의 재현율의 차이를 가중치로 준 정확도의 평균이다. 쉽게 이야기하면 정밀도-재현율 곡선의 아랫부분 면적을 의미한다. 사이킷런 metrics 메서드의 average_precision_score로 계산할 수 있으며 decision_function이나 predict_proba 함수의 결과값을 전달하면 된다.

 

 

 

ROC-AUC

 

ROC는 여러 임계값에서 분류기의 특성을 분석할 수 있다. 진짜 양성 비율(TPR)에 대한 거짓 양성 비율(FPR)이며 왼쪽 위에 가까울수록(AUC값이 1에 가까울수록) 이상적이다. 즉, FPR이 낮게 유지되면서 재현율이 높은 분류기가 좋은 것이다.

 

 


다중 분류 평가 지표

 

다중 분류 평가 지표는 대부분 클래스가 불균형하다. 그렇기에 다중 분류 평가에서 정확도는 좋은 평가 지표가 아니다. 이때는 정밀도, 재현율, F1점수를 골고루 살펴보는 것이 필요하다.

 

 

회귀 평가 지표

 

회귀 성능 평가는 대부분 score 메서드에서 이용하는 R^2로도 충분하다. 이 외에 사용하는 지표로는 mean_squared_error, mean_absolute_error가 있다.