[머신러닝 배우기] 6.머신러닝의 주요 개념 - 모델평가


모델평가

실제 활용에서 성능을 평가하는 방법

모델이 얼마나 좋은 성능을 보일지 평가하는 방법을 말한다. 손실함수와 완전히 같은경우도 있지만 개념이 서로 상이하다.

모델 평가를 할 때는 학습 데이터뿐만아니라 새로운데이터가 들어왔을때 잘 동작하는지를 측정하는데, 이를 일반화라고한다. 일반화란 실제 머신러닝 시스템을 구축할 때 굉장히 중요한 요소인데, 학습데이터는 편향되어 있을 수가 있기 때문이다.

모델의 복잡도를 조절하기위해 정규화를 배웠는데, 모델 평가에서는 정규화를 얼마나 강하게 해야할지와 모델이 관측되지 않은 데이터에 대해 잘 동작할지를 평가한다. 크게 특성, 정확도, 정밀도를 평가해 사용한다.

특성 평가

모델의 일반화 특성 평가는 한정적인 데이터를 이용해 모델이 학습 데이터만이 아닌 데이터에서도 좋은 성능을 내는지 알아내는 평가이다. 일반화가 잘 되었는지 확인하기위해 학습-평가 데이터 나누기와 교차검증을 한다.

학습-평가 데이터 나누기

말그대로 학습데이터와 평가데이터를 나누어 평가하는 방법이다. 간단하게 평가할 수 있기때문에 가장 많이 쓰이는 방법이다. 보통 80:20 또는 50:50으로 나누어 평가한다. 특별한 방식은 없지만 일반적으로 학습데이터를 먼저 뽑고 나머지를 평가데이터로 사용한다. 시간에 따라 달라지는 데이터는 최근 데이터를 평가데이터로 사용하는게 일반적이다.

이렇게 나누어서 평가를 함으로써 단순히 학습데이터를 외운것인지, 학습을 한 것인지를 알 수 있다.

교차검증

교차점증은 학습-평가 데이터를 한 번만 나누는 것이 아니라 여러 번하는 방식이다. 여러세트를 나누어서 하나를 평가데이터로, 나머지를 학습데이터로 사용하는 K겹 교차검증이 많이 사용된다.

계산량이 많아지지만 더 안정적이고 정확하기 때문에 많이 사용된다.

정확도

정확도는 모델이 데이터를 얼마나 정확하게 분류했는지의 지표이다. 많은 머신러닝 시스템은 데이터를 활용하여 몇 가지 선택지 중에 가장 적합한 것을 고르는데, 이때 선택이 올바른지 아닌지를 측정하여 수치로 나타낸 것이다. 즉 맞게 분류한 데이터 숫자 / 총데이터 숫자의 식이다.

정확도는 직관적이라 사용하기 좋지만, 데이터가 한쪽으로 치우쳐져 있다거나, 한 분류가 다른 분류보다 중요한 경우는 정확도가 크게 중요하지 않다.

예를 들어 매일 비가 오는 지역의 비가 오는 확률은 학습을 하지 않고도 맞출 수 있다. 이 경우가 한쪽으로 치우쳐진 데이터의 예시이다.

한 분류가 다른 분류보다 중요한 경우는 질병을 판단하는 경우가 있다. 암일 가능성을 판단하는 것은 정확하지 않더라도 가능성이 있다면 재검사를 하는 것이 바람직하다.

정밀도와 포괄성

정밀도는 양성으로 예측한 데이터 중에서 얼마나 정답을 맞혔는지를 평가한다. 비가 오는 날을 예측한다고 했을 때 예측한 날들 중 몇일 비가 왔는지를 판단하는 것이 정밀도이다. 하지만 정밀도는 비가 오지 않는다고 한 날에 비가 왔는지 않왔는지는 판단하지 않기 때문에 정확도를 도와 문제를 해결하기에 약간 부족한 점이 있다. 그래서 포괄성이라는 요소를 더 평가한다.

포괄성은 실제 답 중에 얼마나 맞추었는지를 평가한다. 즉, 실제 비가 온 날 중 예측으로 몇 일을 맞추었는지를 말한다. 이 경우의 문제는 사실 매일매일 비가 온다고 하면 비가 온 날을 모두 맞출수가 있다는 것이다.

정밀도와 포괄성은 각각만 편향되어 높으면 문제가 되기 때문에 조합하여 평가한다.

랭킹 평가

랭킹평가에 랭킹손실함수를 그대로 쓸 수 있지만 좀 더 직관적으로 평가하는 방법을 사용하곤한다. 2가지 방식을 살펴보자.

정밀도@K

정밀도@K는 랭킹을 구한후 앞에서부터 K개의 정밀도를 검사한다. 랭킹은 높은 순위를 가장 신경을 많이쓰므로 상대적으로 중요하지 않은 순위들을 계산하지 않아 효율적이다.

NDCG

정밀도@K와 비슷하게 랭킹이 높은 결과에 더 신경쓰는 방법이다. 랭킹이 높을 수록 높은 가중치를 받아 계산한다.

머신러닝의 주요개념

모델, 손실함수, 최적화, 모델평가를 공부해봤다. 머신러닝을 한다는건 이 4가지를 반복한다는 것과 같다. 각 과정을 점검하면서 좋은 머신러닝 시스템을 만들어 보자.

다음시간에는 데이터에대해서 알아보자.




© 2019. by Moonan

Powered by Moonan