일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로그래머스 2차원동전뒤집기 파이썬
- 프로그래머스 스타수열
- 딥러닝학습
- 자율성장 인공지능
- 2차원동전뒤집기
- 프로그래머스
- 딥러닝
- 스타수열
- 딥러닝파라미터
- AI경량화
- 딥러닝 가중치 갱신
- 프로그래머스 누적합
- 모델경량화
- 카카오 메뉴리뉴얼
- 로지스틱 최대우도
- 인공신경망 학습
- 프로그래머스 2차원동전뒤집기
- 머신러닝 학습 검증
- 확률과우도
- 인공지능 경진대회
- 광고삽입 파이썬
- 스타수열 파이썬
- 메뉴리뉴얼 파이썬
- k겹 교차검증
- MLE
- 비트마스킹
- 데이터축소
- 카카오 코테 메뉴리뉴얼
- 프로그래머스광고삽입
- 과적합방지
- Today
- Total
머신러닝 개발자의 러닝머신
[ML/DL] 모델 평가 지표(MAE, MSE, RMSE, Recall, Precision, F-Score, AUC) 본문
[ML/DL] 모델 평가 지표(MAE, MSE, RMSE, Recall, Precision, F-Score, AUC)
oongsong 2023. 8. 11. 11:220. 모델 성능 평가를 수행하는 이유
모델 성능 평가는 모델을 학습하고 최적의 모델을 만들어가는 과정에서 필수적입니다. 올바른 성능 평가가 이루어져야 모델의 완성도를 측정하고 학습 데이터에 과적합되지 않은 최적의 모델을 판단할 수 있습니다.
모델을 만드는 이유는 주어진 데이터를 학습하여 알려지지 않은 데이터/상황에 대한 예측을 수행하기 위함입니다.
따라서 이를 위해 다양한 알고리즘으로 모델을 학습하고 현재 데이터에서 최적의 성능을 보이는 모델을 찾아갑니다.
이렇게 학습 데이터에서 최적의 성능을 보이는 모델을 찾았다면, 이 모델이 실제로 알려지지 않은 새로운 데이터에 대해서도 예측을 잘 수행하는지를 평가해서 해당 모델을 최종적으로 선택할 지를 결정합니다.
이를 위해 데이터, 태스크의 목적에 따라 다양한 평가 지표를 사용해 최적의 모델을 찾아나갈 수 있습니다.
분류, 회귀, 랭킹 등과 같은 모델에서 뿐만 아니라 딥러닝의 이미지, 텍스트, 음성 등과 같은 태스크에 따른 적합한 성능 평가 방식이 존재합니다.
1. Loss와 Metric
회귀 모델의 평가 지표로 많이 사용되는 평가 지표인 MSE는 Loss함수로도 사용되고 모델의 평가 지표(Metric)로도 사용됩니다. 여기서 Loss와 Metric의 차이는 무엇일까요?
- Loss는 모델 학습 과정에서 모델의 가중치를 업데이트하기 위해 사용되는 함수로, 학습 데이터에 대한 모델의 예측값과 실제값의 차이를 나타냅니다.
- Metric은 모델의 학습이 완료된 후 테스트 데이터를 바탕으로 학습된 모델의 성능을 평가하는 데 활용하는 함수입니다.
Loss와 Metric
머신러닝의 최종 목표는 Metric이 목표치에 도달하는 모델을 만드는 것입니다. 하지만 이러한 척도를 달성하기 위해 직접 척도를 맞추도록 훈련하는 것은 여러 가지 이유로 어렵기 때문에 Loss(손실)을 줄이는 방향으로 훈련합니다. 대표적인 Loss function으로는 MSE, RMSE, MAE, Cross-Entropy 등이 있습니다.
평가를 위해 사용하는 지표는 모델의 목적, 종속변수의 유형에 따라 다른 지표를 사용합니다.
- 회귀 모델과 같이 종속 변수가 연속형인 경우에는 성능 평가 지표(Evaluation Metrics)로는 주로 Loss(손실)를 사용하고 MSE, RMSE, MAE, Cross-Entropy 등이 있습니다.
- 분류 모델과 같이 종속 변수가 범주형인 경우에는 혼동 행렬(Confusion Matrix) 기반으로 하는 Accuracy(정확도), Precision(정밀도), Recall(재현율), F1-score 등과 같은 지표를 사용합니다.
2. MAE, MSE, RMSE, Cross-Entropy
MAE, MSE, RMSE, Cross-Entropy는 Loss 함수로 쓰이는 함수이자 회귀 모델의 평가 지표(Evaluation metrics)로 사용되는 함수입니다.
(1) MAE (Mean Absolute Error), 평균 절대 오차
MAE는 오차의 절댓값의 평균이며 오차의 부호가 서로 다름으로 인해서 평균을 구할 때 값이 상쇄되는 것을 방지하기 위해 절댓값을 적용합니다. MAE는 다음과 같이 표현됩니다.
- MAE의 장단점
MAE는 오차의 왜곡이 발생하지 않아 이상치에 둔감하다는 장점이 있습니다. 이로 인해 이상치에 둔감하여 unseen한 데이터에 대한 성능을 높여 일반화 성능이 높은 모델을 만들 수 있습니다.
하지만 절댓값 연산으로 인해 미분이 가능하지 않은 지점이 발생할 수 있다는 단점이 있습니다. 또한, 예측에서 오차가 크게 발생하는 상황을 더 민감하게 모델에 반영하지 못한다는 점이 있습니다.
(2) MSE(Mean Squared Error), 평균 제곱 오차
MSE 는 오차를 제곱합 뒤 이들의 평균으로 정의되며 선형 회귀에서 가장 많이 쓰이는 손실 함수입니다.
이 때, 제곱 연산을 사용하는 이유는 Loss 함수로 사용될 때 파라미터 최적화 과정에서 미분 연산의 편의를 위해서입니다.
다음과 같이 표현됩니다.
- MSE 장단점
MSE는 오차를 제곱함으로써 이차 함수가 되어 모든 값에서 미분이 가능해 연산에 용이하다는 장점이 있습니다. 이러한 계산의 복잡성이 낮다는 특징으로 일반적으로 MSE가 선형회귀의 손실함수로 더 많이 사용됩니다.
또한, 더 큰 오차에 대해 큰 가중치를 부여한다는 특징이 있습니다.
하지만 제곱 연산으로 인해 오차가 큰 값은 더욱 커지고 1보다 작은 오차는 더욱 작아진다는 오차의 왜곡이 발생합니다. 이로 인해서 이상치(outlier)에 상대적으로 영향을 크게 받아 이상치가 많은 경우에는 다른 함수를 이용하는 것이 좋습니다.
(3) RMSE
RMSE는 MSE에 루트를 씌운 값으로, 다음과 같이 오차 제곱의 평균에 루트를 취해 정의됩니다.
RMSE는 MSE의 단점을 보완한 함수인데
오차의 제곱에 루트를 씌움으로써 비교적 이상치에 덜 민감하지만 미분 가능하다는 특징은 유지됩니다.
또한, 오차마다 동일한 가중치를 주지 않기 때문에 학습 시 오차마다 다른 가중치를 부여하고자 한다면 RMSE를 사용하는 것이 적절합니다.
(4) Cross-Entropy
Cross-Entropy는 모델이 예측한 분포와 실제 데이터의 분포가 다른 정도를 표현하는 함수로 실제값을 q, 예측값을 p라고 할때 식은 다음과 같습니다.
통계에서 크로스 엔트로피는 모델링을 통해 추정한 모수의 분포인 p를 통해 모집단의 실제 분포인 q를 추정하기 위해 사용하는 방법입니다.
머신러닝에서 크로스 엔트로피는 실제값과 예측값의 분포의 차이를 구하기 위해 사용합니다.
이때, 크로스 엔트로피의 값이 0에 가까울수록 예측값이 실제값을 잘 따른다는 것을 의미하고,
1에 가까울수록 예측값이 실제값을 잘 따르지 않는다는 것을 의미합니다.
주로 분류 문제의 로지스틱 회귀 모델의 손실함수로 사용됩니다.
분류 문제인데 왜 로지스틱 "회귀" 모델을 사용하는지는 지난 <로지스틱 회귀> 포스트에서 자세히 다뤘습니다.
👉🏻https://eunsun-develop.tistory.com/53
(간단히 요약하면, 분류 문제를 해결하기 위한 모델링을 위해 범주형 데이터를 연속형 데이터로 변형하여 회귀 모델링을 수행해 범주에 속할 확률을 예측하는 모델로 학습을 진행합니다. 그리고, 이러한 분류 문제의 손실 함수로 MLE(Maximum Likelihood Estimation, 최대우도) 기법을 이용해 Cross-Entropy 식을 유도했습니다. )
3. Confusion-Matrix 기반 평가 함수: Accuracy, Precision, Recall, F1-score
분류 모델은 다음과 같이 예측 클래스와 실제 클래스를 나타낸 혼동 행렬(confusion matrix)를 기반으로 모델의 성능을 평가할 수 있습니다.
혼동 행렬(Confusion Matrix)은 실제 클래스와 예측 클래스를 기준으로 수행된 예측을 나누는 분류표로, 각각을 TP, TN, FP, FN 이라고하며 다음과 같은 의미를 가지고 있습니다. (다중 분류에서도 마찬가지로 각 클래스에 대한 예측을 positive, 나머지 클래스에 대한 예측을 negative으로 가정하고 혼동행렬을 각 레이블을 맞히는 상황의 혼동행렬로 표현할 수 있습니다.)
- True Positive(TP): 실제값이 positive일 때 positive으로 예측한 횟수
- True Negative(TN): 실제값이 negative일 때 negative으로 예측한 횟수
- False Positive(FP): 실제값이 negative일 때 positive으로 잘못 예측한 횟수
- False Negative(FN): 실제값이 positive일 때 negative으로 잘못 예측한 횟수
이를 이용해 다음과 같은 모델 평가 지표가 존재합니다.
(1) Accuracy, 정확도
Accuracy, 정확도는 모델이 실제값에 대해 예측을 정확히 수행한 비율이며 1에 가까울수록 좋은 모델입니다.
하지만 positve와 negative의 데이터가 불균형할 때는 정활도만으로 모델을 평가할 수 없으며 Recall이나 Precision을 사용합니다.
(2) Precision, 정밀도
Precision, 정밀도는 모델이 positive이라고 예측한 표본 중에서 실제값이 positive인 비율로 1에 가까울수록 좋은 모델입니다.
정밀도는 모델이 positive으로 예측하는 경우가 얼만큼 정확한 지를 판단할 수 있는 지표입니다. 즉, FP가 낮을수록 정밀도가 높아집니다.
실제값이 negative인 데이터를 positive라고 잘못 예측하면 안되는 경우 중요한 지표가 될 수 있습니다. 예를 들어, 스팸 메일 분류기에서 FP가 발생하여 중요한 비지니스 메일을 스팸이라고 분류해 버리는 경우는 큰 손실을 가져옵니다.
(3) Recall(재현율) = Sensitivity(민감도)
Recall은 실제값이 positive인 데이터 중에서 모델이 positive이라고 예측한 비율로 1에 가까울수록 좋은 모델입니다.
이 지표는 실제로 positive인 데이터가 얼마나 모델에 의해 정확히 탐지되었는지를 의미하며 FN이 낮을수록 Recall이 높습니다. 즉, 모델이 실제 positive를 분류해내지 못한 경우가 적을수록 재현율은 올라갑니다.
실제값이 positive인 데이터를 negative으로 잘못 예측하면 안되는 경우에 중요한 지표가 될 수 있습니다. 예를 들어, 암환자 예측 모델에서 암 의심환자를 음성으로 분류하면 환자의 생명을 위험에 빠뜨리게 되는 큰 문제를 야기합니다.
(4) F-Score
F-score는 Precision과 Recall의 조화평균으로 precision과 recall을 함께 고려할 수 있어 모델평가의 훌륭한 척도가 됩니다.
Precision만 사용해 FN을 무한히 허용한 모델, 혹은 Recall만 고려해 FP를 무한히 허용한 모델은 좋은 모델이라고 할 수 없습니다. 따라서 Precision과 Recall을 단독으로 모델을 평가하는 데에 있어 한계를 보완한 것이 F-score입니다.
F-Score는 다음과 같이 표현되며 Recall을 중요시한다면 beta값을 1보다 크게하고, Precision에 가중치를 주고싶다면 beta값의 크기를 줄여주는 방식으로 F-score를 정의할 수 있습니다.
이 때, 베타가 1이 될 때 우리가 흔히 접하는 F1-Score입니다.
(4) ROC curve와 AUC
다양한 상황에서 positive라고 판단하는 확률이 0.5가 될 수도 있고, 그보다 작아질수도, 크게 설정할 수도 있습니다.
threshold가 변하면 모델의 해석이 달라지기 때문에 이에 따라 confusion matrix의 값들 또한 바뀌게 됩니다.
따라서 Recall, F-score와 같은 숫자 하나로만 규정하기에 어려운 상황이 있습니다.
이렇게 threshold가 달라지는 상황을 고려하하는 것이 ROC curve입니다.
ROC curve는 FPR(False positive rate)과 TPR(True positive rate)을 각각 x, y 축으로 그린 그래프입니다.
- TPR = Sensitive = (참인 경우에 대해 참으로 올바르게 예측하는 비율)
- FPR = (1-Specificity) = Recall = (거진인 경우에 대해 틀리게 예측하는 비율)
높은 Sensitive와 Specificity를 보이는 모델을 고르기 위해 다양한 모델에 대해 ROC 커브를 그려 비교할 수 있습니다.
이때 좌상단으로 가장 많이 치우친 그래프를 갖는 모델이 가장 높은 성능을 보인다고 할 수 있습니다.
이를 판단하는 것이 AUC(Area Under the ROC Curve)라는 지표로 ROC 커브의 밑면적을 의미합니다.
즉, AUC가 1에 가까울수록 ROC 커브가 좌상단에 근접한다는 의미로 좋은 모델이라고 판단할 수 있습니다.
Reference
https://brunch.co.kr/@mbook/15
https://github.com/jiyeoon/aiffel/blob/master/Week6/Fundamental24.ipynb
https://deepestdocs.readthedocs.io/en/latest/002_deep_learning_part_1/0023/
https://hackernoon.com/my-notes-on-mae-vs-mse-error-metrics
https://melonicedlatte.com/machinelearning/2019/12/20/204900.html
'ML.AI > ML, DL' 카테고리의 다른 글
[ML/DL] K-fold Cross Validation(k겹 교차검증) "검증의 신뢰도를 높이자" (0) | 2023.08.03 |
---|---|
[머신러닝]로지스틱 회귀(Logistic Regression) "범주데이터 분류는 확률 기반의 예측으로 치환한다" (0) | 2023.08.02 |
[딥러닝] 인공신경망의 학습: 순전파와 역전파 (0) | 2023.05.09 |
[딥러닝] 손실 함수(Loss Function) (0) | 2023.05.06 |
[딥러닝] 활성화 함수(Activation Function) (0) | 2023.05.04 |