티스토리 뷰
분류 정확성은 단수(single number)로 표현할 수 있는 평가 척도 중 하나이다. 당신이 만든 분류기에 개발 데이터(혹은 테스트 데이터)를 넣고, 해당 데이터가 정확하게 분류를 했는지에 대한 비율을 단수로 평가해주는 것이다. 이 평가 척도에 따르면, 만약 A 분류기가 97%의 정확성을 가지고, B 분류기가 90%의 정확성을 가진다면, 보통 우리는 A 분류기의 성능이 더 좋다고 판별할 수 있다.
이와 대조적으로, 정밀도(Precision)과 재현율(Recall)은 단수로 표현할 수 있는 평가 척도가 아니다. (참고로 정밀도는 분류기가 참이라고 분류한 결과물 중 실제로도 참일 확률을 말하고, 재현율은 분류기가 정상적으로 분류한 것들 중에서 실제로도 참일 확률을 말한다. 수식으로 표현하면 다음과 같다. - 추가로 보통 높은 정밀도를 가지는 것과 높은 재현율을 가지는 것 사이에는 tradeoff가 존재한다.)
$$precision = \frac{true\ positives}{true\ positives + false\ positives} $$
$$recall = \frac{true\ positive}{true\ positive + false\ negative} $$
보통 정밀도와 재현율은 분류기를 평가하는데 있어 두 개의 값으로 보여주는데, 이와 같이 복수의 값으로 구성된 평가 척도는 알고리즘의 성능을 비교하는데 사용하기 어렵다. 예를 들어 아래와 같은 알고리즘 비교 결과가 있다고 가정하자
Classifier |
Precision |
Recall |
A |
95% |
90% |
B |
98% |
85% |
위의 결과만 놓고 보면 어떤 분류기가 성능이 좋은지를 판별하기 어렵고, 더불어 어떤 분류기를 선택할지 명확하게 결정짓지 못한다.
Classifier |
Precision |
Recall |
F1 Score |
A |
95% |
90% |
92.4% |
실무에서 개발하는 동안 알고리즘 구조나, 모델의 parameter, 어떤 feature를 선택하느냐 같은 고민을 할 것이다. 정확성과 같이 단수로 표현되는 평가척도가 있다면, 여러 알고리즘을 이 척도에 맞춰서 정렬하고, 어떤 것이 나쁘게 동작하는지를 빠르게 확인할 수 있다.
정말로 정밀도와 재현율을 평가 척도로 활용하고 싶다면, 나는 이 값들을 하나의 단수로 결합시켜주는 일반화된 방법 중 하나를 써볼 것을 추천한다. 예를 들어 정밀도와 재현율의 평균을 내서 하나의 단수로 만드는 방법이 있을 수 있다. 또하나의 방법으로 "F1 score"라는 것을 계산할 수 있는데, 이 값은 정밀도와 재현율을 평균내는 방법을 일부 수정한 것으로 그냥 단순하게 평균을 낸 것보다는 잘 동작한다. (참고로 F1 score를 구하는 방법은 아래의 수식과 같다.)
$$F1\ score = \frac{2}{\frac{1}{Precision} + \frac{1}{Recall}} $$
Classifier |
Precision |
Recall |
F1 Score |
A |
95% |
90% |
92.4% |
B |
98% |
85% |
91.0% |
이렇게 단수를 가지는 평가척도를 통하면, 수많은 분류기 중에서 가장 성능이 좋은 분류기를 선택하는 것을 조금더 빠르게 할 수 있다. 결국 많은 것들 중에 순위를 나눌 수 있게 되고, 이를 통해 명확한 결정을 내릴 수 있게 되는 것이다.
< 해당 포스트는 Andrew Ng의 Machine Learning Yearning 중 chapter 8. Establish a single-number evaluation metric for your team to optimize 을 번역한 내용입니다.>
'Study > AI' 카테고리의 다른 글
[MLY] 개발/테스트 데이터와 평가 지표를 바꿔야 하는 경우 (0) | 2018.09.05 |
---|---|
[MLY] 개발 데이터와 지표는 반복작업을 빠르게 해준다. (0) | 2018.09.03 |
[MLY] 최적화 지표와 만족 지표 (0) | 2018.09.02 |
[MLY] 개발 데이터와 테스트 데이터는 얼마나 많이 수집해야 할까? (0) | 2018.09.02 |
[MLY] 개발 데이터와 테스트 데이터는 같은 분포를 가지고 있어야 한다. (0) | 2018.09.02 |
[MLY] 현재 사용중인 개발 데이터와 테스트 데이터 (0) | 2018.09.01 |
[MLY] 모델의 크기가 머신러닝의 성능을 향상시키다. (0) | 2018.09.01 |
- Total
- Today
- Yesterday
- arduino
- RL
- Offline RL
- windows 8
- Policy Gradient
- dynamic programming
- Kinect SDK
- Distribution
- PowerPoint
- reward
- DepthStream
- Windows Phone 7
- 딥러닝
- ai
- SketchFlow
- End-To-End
- Pipeline
- Off-policy
- Kinect
- bias
- ColorStream
- TensorFlow Lite
- Variance
- 파이썬
- 한빛미디어
- 강화학습
- Gan
- processing
- Expression Blend 4
- Kinect for windows
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |