기계학습
기계학습
Weka는 유용한 기계학습 프레임워크이다. GUI를 이용하여 쉽게 결과를 확인할 수 있다. Weka를 사용하면서 필요한 내용을 정리한다1). Weka의 분석 결과를 보면 Detailed Accuracy By Class라는 항목이 있다. 이 항목에 대한 해석을 위한 내용을 정리한다.
최근에는 더 발전된 방법으로 SVM(Support Vector Machine), RNN(Recurrent Neural Network)이 사용된다고 한다.
분류 결과 분석
예를 들어보자. 지진계에 어떤 진동이 감지되었다. 이 진동은 실제 지진일 수도 있고, 단순이 근처에 공사가 있거나 트럭이 지나간 것일 수도 있다. 기계학습으로 이것을 구분하는 경우를 생각해 보자. 이것의 분석 결과는 실제 값을 참-거짓(True-False)로 나눌 수 있고, 분류 결과를 긍정-부정(Positive-Negative)로 나눌 수 있다. 실제 사례로 나타내면 다음과 같다.
- True
- 실제 지진인 진동
- False
- 지진이 아니었던 진동(공사, 트럭 등)
- Positive
- 해당 진동을 지진으로 분류함
- Negative
- 해당 진동을 지진이 아니라고 분류함
이 결과를 조합하면 다음 표와 같다.
Positive | Negative | |
True | 실제 지진을 지진으로 분류 높을 수록 우수 | 지진을 지진이 아닌 것으로 분류 누락(미탐지, Miss Detection) |
False | 지진이 아닌 것을 지진으로 분류 오경보(False Alarm) 낮을 수록 우수 | 지진이 아닌 것을 지진이 아닌 것으로 분류 |
TP rate(True Positive rate)은 실제 지진 중에서, 지진으로 분류한 비율을 나타낸다. 여기서 중요한 것은 문장의 어감과 수학적 의미가 다르다는 점이다. 모든 진동(진짜지진 + 가짜지진)을 지진으로 분류한다면? 진짜 지진을 지진으로 분류하였으니 TP rate는 1(=100%)의 값을 가진다. 따라서 FP rate(False Positive rate)도 중요하게 고려해야 한다. 위 경우 가짜 지진도 모두 진짜 지진으로 분류하였으니 1(=100%)이다.
더 구체적인 예를 만들어 본다. 지진계가 1년간 10개의 진동을 감지하였고 이것을 판정하는 알고리즘을 개발하였다. 이 중 4개는 진짜 지진이고 6개는 단순한 주변 잡음(공사, 트럭 등)이다. 그러나 알고리즘의 판정 결과는 4개의 지진 중 3개만 지진으로 분석하였고, 잡음 6개 중 2개를 지진으로 오분석하였다. 이 경우를 표(행렬, matrix)로 정리하면 다음과 같다. 이 표는 Weka의 Confusion Matrix와 유사하다.
Positive 지진으로 판정 | Negative 잡음으로 판정 |
|
---|---|---|
True 실제 지진 | 3 | 1 |
False 단순 잡음 | 2 | 4 |
이 경우 TP율은 TP값인 3과 실제 지진의 수인 4에 대한 비율로 3/4 = 0.75이다. FP율은 실제 FP값인 2와 단순 잡음의 수인 6에 대한 비율로 2/6 = 0.333이다.
정밀도(precision)는 Positive(지진으로 판정한 것) 중 얼마가 True(실제 지진)인 지를 나타내는 값이다. 위 표에서 TP와 P의 비율 즉 3/5 = 0.6이다.
재현도(recall)은 TP와 같다. 즉, 0.75이다.
F-Measure는 다음 공식으로 구한다.
2 * (precision * recall) / (precision + recall) 2 * (0.6 * 0.75) / (0.6 + 0.75) = 0.667
이 수식은 정밀도와 재현도의 조화 평균의 의미를 가진다.
토론