6-1 Evaluating a Learning Algorithm 본문

ML & DL/Coursera-ML

6-1 Evaluating a Learning Algorithm

eremo2002 2019. 1. 21. 21:41

효율적으로 머신러닝 알고리즘의 성능을 개선할 있는 테크닉에 대해 알아본다.












값을 예측하는 선형 회귀 시스템을 만들었다고 해보자. 그러나 test 시에 우리의 hypothesis 작동하지 않는다면 어떻게 해야 할까?

여러가지 방법들이 있을 것이다. Training data 많이 모아보는 , feature 수를 줄여보는 , 다른 feature 추가해보는 등등

그런데 트레이닝 데이터를 열심히 모으는데 시간이 너무 많이 걸린다면? 만약 수개월이 걸려서 트레이닝 데이터를 모아서 다시 학습을 시켰는데도 성능이 개선되지 않는다면 이러한 과정은 분명 엄청난 시간을 낭비한 것이다. 대부분의 사람들은 직감에 따라 이런 저런 시도를 해보기 때문에 시간을 낭비하게 된다. 따라서 어떤 방법이 도움이 될지 미리 있다면 효율적으로 시스템을 개선할 있을 것이다.











그러한 테크닉을 Machine learning diagnostic이라고 한다. 머신러닝 알고리즘을 테스트하여 어떤 부분이 동작하고 어떤 부분은 문제가 있는지 insight 얻거나 performance 개선하기 위해 어떤 방법을 사용해야 하는지 이에 대한 guidance 얻기 위한 과정이다. 머신러닝 시스템을 진단하는데 많은 시간을 소비할 있지만 이러한 과정을 통해 무작정 이것 저것 시도해보는 것보다 훨씬 시간을 절약하여 문제를 해결할 있다.























Hypothesis 평가하는 방법에 대해 알아본다.














어떤 hypothesis training error 매우 작다고 해서 반드시 좋은 가설이라고 평가할 없다. 왜냐하면 트레이닝 셋에 대해서만 너무 과적합되어 일반화가 제대로 되지 않았을 가능성이 매우 높기 때문이다. 그렇다면 오버피팅이 언제 일어났는지 있을까? 위의 그림처럼 그래프를 그려보면 쉽게 있을 것이다. 그러나 feature 굉장히 많은 문제에서 hypothesis 시각화하는 것은 매우 어렵다. 따라서 다른 방법이 필요하다.











일반적인 방법은 가지고 있는 dataset 섞어서 7:3정도의 비율로 training set test set으로 나누는 것이다.












Linear regression이나 Logistic regression 둘다 적용하는 개념은 같다.

Data set training set / test set으로 나눈 파라미터를 학습시키는 과정에선 training data 사용하고 test set error 계산할 때에만 사용한다.












Logistic regression에서도 마찬가지로 학습 시엔 training data 사용하며 test set error 계산할 사용한다.

이렇게 학습은 training data 사용한 error 계산할 test set 사용해서 error 작다면 overfitting 일어나지 않은 것으로 평가할 있다. 반대로 test set 대한 error 매우 높다면 모델은 overfitting 매우 심하게 발생한 것으로 평가할 있을 것이다.


































어떤 다항식 모델을 선택해야 하는지에 대한 방법과 data set train / validation / test set으로 나누는 방법에 대해 알아본다.













계속 언급하는 내용이지만, training set 대해서 너무 fit하게 되면 오버피팅이 발생하여 일반화가 되지 않는 문제가 생긴다.















이제 모델을 선택해야하는 문제를 가정해보자.

다음과 같은 1차부터 10차까지 10개의 모델이 있을 어떤 모델을 선택해야 할까?

일단 우리가 있는 것은 모델을 training set으로 학습시킨 다음 해당 웨이트를 가지고 test set 대해 평가를 하여 cost 가장 적은 모델을 선택하는 것이다. 그렇게 해서 5번째 모델을 선택했다. 그럴싸해 보이지만 이러한 방법으로 모델을 선택하는 것은 일반화 성능에 대한 공정한 평가 기준이 되지 한다왜냐하면 우리가 파라미터 d(degree of polynomial) 선택할 test set 사용하여 가장 좋은 d 선택했기 때문이다. 따라서 현재 사용한 test set에선 맞출 있겠지만 이전에 보지 sample 대해서 일반화가 되었다고 평가할 없다.

 

우리는 test set 사용하여 파라미터 d 선택했기 때문에 오버피팅을 자초하고 있는 것이다.













이러한 문제를 방지하기 위해 우리는 Data set 6:2:2 정도의 비율로 train / cross validation / test set으로 나누어 사용한다.












데이터셋을 3가지로 나누었기 때문에 3가지 error 있다.











다시 모델을 선택해야 하는 문제를 풀면, 모델을 training set 대해서 학습시키고 학습된 파라미터를 통해 validation set 사용하여 성능이 가장 좋은 모델을 선택한다.

그렇게 해서 선택한 모델이 4번째 모델일 다시 test set 가지고 generalization error 평가하는 것이다. 따라서 일반화 성능을 평가하기까지 이전 과정에서 test set 사용하지 않았기 때문에 공정한 generalization 평가가 이루어질 것이다. 다시 말하면 Dataset 나눈 학습->검증->테스트 이러한 과정을 거쳐 모델을 선택해야 한다.






























































'ML & DL > Coursera-ML' 카테고리의 다른 글

6-3 Building a Spam Classifier  (0) 2019.01.29
6-2 Bias vs Variance  (0) 2019.01.28
5-2 Backpropagation in Practice  (0) 2019.01.21
5-1 Cost function and Backpropagation  (0) 2019.01.18
4-3 Applications  (0) 2019.01.16
Comments