기계학습

기계학습

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

이 수식은 정밀도와 재현도의 조화 평균의 의미를 가진다.


댓글을 입력하세요. 위키 문법이 허용됩니다:
S​ Y A P Y