머신러닝의 프로세스
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 객체에서 호출이 가능
- 테스트 피처 데이터 세트를 파라미터로 입력해주면 테스트 피처 레코드의 개별 클래스 예측확률을 반환
'머신러닝 > 파이썬 머신러닝 완벽 가이드' 카테고리의 다른 글
Chapter 4.3 앙상블 학습 Ensemble Learning (0) | 2024.05.27 |
---|---|
Chapter 3.4 F1 스코어 (0) | 2024.05.16 |
Chapter 2. 사이킷런으로 시작하는 머신러닝 (1) | 2024.05.01 |
Chapter 1.4 데이터 핸들링 - 판다스 (0) | 2024.04.10 |
Chapter 1.3 넘파이 (0) | 2024.04.10 |