3장 평가
- 머신러닝은 데이터 가공/변환(사람), 모델 학습/예측(컴퓨터), 그리고 평가, Evaluation(사람)의 프로세스로 구성
- 타이타닉 생존자 예제에서 모델 예측 성능을 평가하기 위해 정확도(Accuracy)를 이용
- 성능 평가 지표는 일반적으로 회귀, 분류 모델에 따라 여러 종류로 나눠짐
- 회귀 : 실제값과 예측값 사이의 오차들의 평균 -> wx+b=y_hat
- -> 맞추고자 하는 y값의 스케일에 따라 오차가 커지고 작아짐
- -> RMSE(오차 제곱), MSE(제곱), MAE(절댓값)
- 분류 : 실제 결과 데이터와 예측 데이터가 얼마나 정확한지
- 분류의 성능 평가 지표
- 정확도(Accuracy)
- 오차행렬(Confusion Matrix)
- 정밀도(Precision)
- 재현률(Recall)
- F1 스코어
1. Accuracy
- 실제 데이터에서 예측 데이터가 얼마나 같은지 판단하는 지표
- Accuracy = 예측 결과가 동일한 데이터 건수 / 전체 예측 데이터 건수
- 일반적으로 가장 많이 사용하지만 해당 지표만으로 가장 좋은 모델을 선정하지는 않음
- 정확도를 평가 지표로 사용할 경우 매우 신중해야 함
- 불균형한 레이블값 분포에서 머신러닝 모델의 성능을 평가할 경우, 정확도(Accuracy)는 적합한 평가지표가 될 수 없음
2. 오차 행렬(Confusion Matrix)
- 오차 행렬은 학습된 분류 모델이 예측을 수행하면서 얼마나 틀리고 맞는지 함께 보여주는 지표
- 클래스 수가 늘어나도 동일
- TN은 예측값을 Negative 값 0으로 예측했고 실제값 역시 Negative 0
- FP는 예측값을 Positive 값 1으로 예측했고 실제값은 Negative 0
- FN은 예측값을 Negative 값 0으로 예측했고 실제값은 Positive 1
- TP는 예측값을 Positive 값 1으로 예측했고 실제값 역시 Positive 1
- 이 값을 조합해 classifier의 성능을 측정할 수 있는 주요 지표 값을 알 수 있음
- 정확도 = (TN+TP) / (TN+FP+FN+TP)
- 정밀도 = TP / (FP+TP)
- 재현율 = TP / (FN+TP)
3. 정밀도와 재현율
- 정밀도와 재현율은 Positive 데이터세트의 예측 성능에 좀 더 초점을 맞춘 평가 지표
- 정밀도 = TP / (FP+TP)
- 재현율 = TP / (FN+TP)
- 두 값은 서로 반대 관계. 하나의 값이 높아지면 다른 값은 낮아짐
- 예시
- 암이 아니라고 예측했지만 암 -> FN
- 암이라고 예측했지만 암이 아님 -> FP
- 정밀도는 예측을 Positive로 한 대상 중에서 예측값이 실제 Positive로 일치한 데이터의 비율
- 재현율은 실제값이 Positive인 대상 중에 예측과 실제값이 Positive로 일치한 데이터의 비율
정밀도와 재현율 트레이드오프(Precision/Recall Trade-off)
- 분류하려는 업무의 특성상 정밀도 또는 재현율이 특별히 강조되어야 할 경우 분류의 결정 임계값(Threshold)를 조정해 정밀도 또는 재현율의 수치를 높일 수 있음
- 정밀도와 재현율은 트레이드오프 관계를 갖기 때문에 어느 한쪽의 성능을 높이면 다른 하나의 수치는 떨어짐
- 사이킷런의 분류 알고리즘은 예측 데이터가 특정 레이블에 속하는지 계산하기 위해 먼저 개별 레이블로 결정 확률을 구하고 0.5보다 큰 값을 레이블로 결정
- threshold를 낮추자 정밀도가 낮아지고 재현율이 상승했다
- 분류결정임계값이 낮아질수록 Positive로 예측할 확률이 높아짐 -> 재현율 상승
- 0일 때 잘 맞추고 1일 때 잘 못 맞추면 정밀도 높\재현율 낮
- 정밀도와 재현율이 달라지면서 정확도도 달라질 수 있다
- 사이킷런은 이와 유사한 precision_recall_curve() API를 제공함
- 정밀도, 재현율 반환
정밀도와 재현율의 맹점
- Threshold를 조정할 때는 용납 가능한 범위 안에서
- 극단적으로 정밀도나 재현율을 높이지 않도록
4. F1 스코어
- F1 스코어는 정밀도와 재현율을 결합한 지표
- 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 가짐
- 사이킷런에서 f1_score() 라는 API 제공
'데이터분석 공부 > DSBA 4기' 카테고리의 다른 글
20/03/24 TIL(KNN 알고리즘, 서포트 벡터 머신) (0) | 2024.03.20 |
---|---|
19/03/2024 TIL (0) | 2024.03.20 |
03/15/2024 TIL (0) | 2024.03.15 |
12/03/2024 TIL (1) | 2024.03.12 |
iloc loc Value Error 정리 (0) | 2024.03.11 |