머신러닝/파이썬 머신러닝 완벽 가이드

Chapter 03. 평가

yooni825 2024. 5. 9. 09:33

머신러닝의 프로세스

1. 데이터 가공/변환

2. 모델 학습 / 예측

3. 평가 

 

성능 평가 지표 Evaluation Metric

- 모델이 분류냐 회귀냐 에 따라 여러 종류로 나뉨

- 회귀 : 대부분 실제값과 예측값의 오차 평균값에 기반

- 분류 : 실제 결과 데이터와 예측 결과 데이터가 얼마나 정확하고 오류가 적게 발생하는가에 기반 

 

분류의 성능 평가 지표

- 정확도 Accuracy

- 오차행렬 Confusion Matrix 

- 정밀도 Precision

- 재현율 Recall

- F1 스코어

- ROC AUC

-> 분류는 결정 클래스 값 종류의 유형에 따라 긍정/부정과 같은 2개의 결괏값만을 가지는 이진 분류와 여러 개의 결정 클래스 값을 가지는 멀티 분류로 나뉨

 

3.1 정확도 Accuracy

정확도

- 실제 데이터에서 예측 데이터가 얼마나 같은지를 판단하는 지표 

- 직관적으로 모델 예측 성능을 나타내는 평가 지표 

- But, 이진 분류의 경우 데이터의 구성에 따라 ML 모델의 성능을 왜곡할 수 있기 때문에 정확도 수치 하나만 가지고 성능을 평가하지 X

정확도 Accuracy = 예측 결과가 동일한 데이터 건수 / 전체 예측 데이터 건수 
                               TP + TN / TP + TN + FP + FN

 

EX) 사이킷런의 BaseEstimator 클래스를 상속받아 아무런 학습 X, 성별에 따라 생존자를 예측하는 단순 Classifier 생성

앞 장의 타이타닉 생존자 예측

- 이렇게 단순한 알고리즘으로 예측을 하더라도 데이터의 구성에 따라 정확도 결과는 약 78.77%로 높은 수치가 나온다. 

 

 

EX2) MNIST 데이터 세트를 변환해 불균형한 데이터 세트로 만든 후 정확도 지표 적용

MNIST DATA : 0부터 9까지의 숫자 이미지의 픽셀 정보를 가지고 있으며, 이를 기반으로 숫자를 예측하는데 사용

- 전체 데이터의 10%만 True, 나머지 90%는 False인 불균형한 데이터 세트로 변환

- 단지 모든 것을 0으로만 예측해도 MyFakeClassifier의 정확도가 90%로 유수의 ML 알고리즘과 비슷하다는 것을 알 수 있다. 

 

3.2 오차 행렬

오차행렬

- 이진분류에서 성능지표로 잘 활용된다

- 학습된 분류 모델이 예측을 수행하면서 얼마나 헷갈리고 있는지도 함께 보여주는 지표 

오차행렬 표

- TP, FP, FN, TN는 예측 클래스와 실제 클래스의 Positive 결정값(1) 과 Negative 결정값(0)의 결합으로 이루어짐

- 앞 문자 True/False는 예측값과 실제값이 '같은가/틀린가'를 의미 

- Tip : 예측을 먼저 진행하고 실제값을 계산하는 것이 더욱 편함!!

 

1. TN : 예측값을 Negative 값 0으로 예측했고 실제 값 역시 Negative 0 

2. FP : 예측값을 Positive 값 1로 예측, 실제값은 Negative 0

3. FN : 예측값을 Negative 값 0으로 예측, 실제값은 Positivie 1

4. TP : 예측값을 Positive 값 1로 예측, 실제 값 Positive 1

 

오차 행렬

- TN : array[0,0] : 405

- FP : array[0,1] : 0

- FN : array[1,0] : 45

- TP : array[1,1] : 0 

--> TN은 전체 450건 데이터 중 무조건 Negative으로 예측해서 True가 된 결과 405건, FP는 Positive로 예측한 건수가 없으므로 0, FN은 Positive 1인 건수 45건을 Negative으로 예측해서 False가 된 결과 45건, TP는 Positive으로 예측한 건수가 없으므로 0건이다.

 

정확도 
- 실제값과 예측값이 얼마나 동일한가에 대한 비율만으로 결정
- 즉, 오차 행렬에서 True에 해당하는 TN과 TP에 좌우
정확도 = (TN + TP) / TN + FP + FN + TP 

 

문제점!!

- 불균형한 이진 분류 데이터세트에서는 Positive 데이터 건수가 매우 작기 때문에 데이터에 기반한 ML 알고리즘은 Positive보다는 Negative으로 예측 정확도가 높아지는 경향이 발생

- 따라서, Negative에 대한 예측 정확도만으로 분류의 정확도가 높아지는 수치적 오류가 발생!!!!

 

3.3 정밀도와 재현율

정밀도 Precision = TP / FP + TP
- 예측을 Positive으로 한 대상 중에 예측과 실제값이 Positive으로 일치한 데이터의 비율

재현율 Recall = TP / FN + TP
- 실제 값이 Positive인 대상 중에 예측과 실제값이 Positive으로 일치한 데이터의 비율

 

 재현율이 중요 지표인 이유

- 실제 Positive 양성 데이터를 Negative으로 잘못판단하게 되면 업무상 큰 영향이 발생하는 경우 

EX) 암 판단 모델은 재현율이 훨씬 중요한 지표 -> 실제 Positive인 암 환자를 Negative으로 잘못 판단 했을 경우 오류의 대가가 생명을 앗아갈 정도로 심각하기 때문

 

재현율이 상대적으로 더 중요한 지표인 경우

 : 실제 Positive 양성인 데이터 예측을 Negative로 잘못 판단하게 되면 업무 상 큰 영향이 발생하는 경우 

 

정밀도가 상대적으로 더 중요한 지표인 경우

: 실제 Negative 음성인 데이터 예측을 Positive 양성으로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우 

 

BUT, 가장 좋은 성능 평가는 재현율과 정밀도 모두 높은 수치를 얻는 것!!

 

정밀도/재현율 트레이드 오프

- 정밀도와 재현율은 상호 보완적인 지표이기 때문에 어느 한쪽을 강제로 높이면 다른 하나의 수치는 떨어진다. 

 

predict_proba()

- 개별 데이터별로 예측확률을 반환하는 메서드 

- 학습이 완료된 사이킷런 Classifier 객체에서 호출이 가능

- 테스트 피처 데이터 세트를 파라미터로 입력해주면 테스트 피처 레코드의 개별 클래스 예측확률을 반환