티스토리 뷰
여러 개의 평가 지표(Evaluation Metrics)를 결합하는 또다른 방법이 있다.
Classifier |
Accuracy |
RunningTime |
A |
90% |
80ms |
B |
92% |
95ms |
C |
95% |
1500ms |
Accuracy와 Running Time 을 아래와 같이
Accuracy - 0.5 * RunningTime
라는 식을 통해 accuracy와 RunningTime을 하나의 식에 넣음으로써 하나의 평가 척도로 정의하는 것 자체가 부자연스럽게 보일 수 있다. 여기서 이렇게 식을 넣는거 대신에 할 수 있는 것이 있다. 첫번째로 "받아들일 수 있을 만한" RunningTime이 무엇인지를 정의해볼 수 있다. 예를 들어 100ms안에 동작하는 것은 어떤것이든 받아들일 수 있을만한 것이라고 가정해보자. 그러면 정확성을 높이기 위해서는 만든 분별기가 RunningTime 조건을 충족하느냐를 만족시켜야 한다. 여기서 RunningTime은 보통 "만족 평가 지표" 라고 표현할 수 있을텐데, 만약 당신이 만든 분별기가 해당 평가 척도를 충분히 만족한다면 결국 그 감별기가 100ms안에 동작한다는 것을 의미하는 것이다. 여기서 정확성은 "최적화된 평가 지표"라고 말할 수 있다.
예를 들어 model의 binary file 크기나, 실행시간, 정확성과 같이 N개의 서로 다른 기준을 가지고 평가를 해야 다면, 보통 "만족" 지표라는 조건을 N-1개 설정하게 된다. 다른 말로 이런 과정을 통해 어떤 특정값을 만족시키기를 원한다. 그러고 난후에 마지막까지 남은 지표를 "최적화" 지표라고 정의한다. 예를 들어 만족할만한 binary file의 크기나 동작 시간이라고 받아들일 수 있을 만한 일종의 threshold를 설정하고, 그런 계수가 주어진 상태에서 정확성을 최적하는 것을 말한다.
한 가지 예를 들어보자. 만약 특정 기동어를 말하는 사람을 들을 수 있는 마이크를 사용하는 하드웨어 장비를 만든다고 가정해보자. 여기에는 Amazon Echo가 "Alexa"라고 들으면 깨거나, Apple Siri가 "Hey Siri"라고 들으면 깨는 것, Android가 "Okay Google", Baidu가 "Hello Baidu"라고 들으면 깨는 것들을 모두 일컫는데, 이 경우에는 False Positive 와 False Negative 비율을 고려할 것이다. 여기서 False Positive면 기동어를 부른 사람이 없어도 시스템이 동작하는 현상이 될 것이고, False Negative면 어떤 사람이 기동어를 이야기 했음에도 시스템이 동작하지 않는 현상을 말할 것이다. 이때 이 시스템의 성능에 대해서 내세울 수 있는 합리적인 목표중 하나는 False Negative rate를 줄이고(최적화 지표), 24시간내 한 건의 False Positive도 발생하지 않아야 하는 것을 들 수 있다.(만족 지표)
(-> 내가 이해한 바로는 만족 지표는 최소한 만족시켜야 할 필수 지표고, 최적화 지표는 성능에 직접적으로 영향을 주는 충분 지표 인거 같다.)
한번 이런 방법으로 평가 지표를 최적화했다면, 조금더 진척 속도를 올릴 수 있게 된다.
참고로 해당 주제와 관련하여 강의가 공개되어 있으니 참고하면 좋을 것 같다.
< 해당 포스트는 Andrew Ng의 Machine Learning Yearning 중 chapter 9. Optimizing and satisficing metrics 을 번역한 내용입니다.>
'Study > AI' 카테고리의 다른 글
[MLY] 개발 환경과 테스트 데이터를 설정하는 데 있어 고려해야 할 사항들 (0) | 2018.09.05 |
---|---|
[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 |
- Total
- Today
- Yesterday
- processing
- Kinect
- Variance
- arduino
- Distribution
- Expression Blend 4
- 한빛미디어
- 강화학습
- Policy Gradient
- SketchFlow
- TensorFlow Lite
- Kinect SDK
- ColorStream
- windows 8
- End-To-End
- dynamic programming
- Windows Phone 7
- 파이썬
- 딥러닝
- bias
- Kinect for windows
- Off-policy
- reward
- Gan
- RL
- Offline RL
- DepthStream
- Pipeline
- PowerPoint
- ai
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |