MachineLearning - The Problem of OverFitting

2019. 2. 3. 22:52Artificial Intelligence

Machine Learning - The Problem of OverFitting



save image



지금까지 Machine Learning을 학습하면서 배운 알고리즘들을 간단하게 복습해보자.

우선, 기계학습이라는 것은 컴퓨터에게 무엇을 어떻게 하라고 명확하게 지시하지 않은 상태에서 데이터와 결과 Set을 제공하면, 컴퓨터가 그에 따른 분석모델을 적용해서 가설 함수를 세우고, 새로운 데이터가 제공되었을 때 가설 함수를 바탕으로 결과를 예측하여 출력하는 것을 의미한다. 이 가설 함수는 데이터와 결과 Set이 제공될 때마다 전체 오차가 적어지는 방향으로 정확성을 높여간다.


데이터와 결과 Set을 분석하는 방법은 학습한 바로는 크게 두 가지가 있었다.

Linear Regression 모델과 Classification 모델이었다.


Linear Regression 모델은 주어진 데이터에 대해서 결과 값이 연속적으로 분포하는 관계를 분석하기 위한 모델이고,

Classification 모델은 주어진 데이터에 대해 결과 값이 이산적으로 분포하는 관계를 분석하기 위한 모델이었다.


데이터를 바탕으로 컴퓨터는 가설함수 h를 모델링하게 되는데, 이 모델링하는 함수는 데이터가 추가됨에 따라 Gradient Descent나 Normal Equation을 통해 theta vector의 정확성을 높여가며, 이 정확성을 높이는데 사용하는 함수가 바로 h함수를 편미분한 값과 관련이 있는 Cost Function, 즉 비용함수이다.


Overfitting은 바로 이 맥락에서 데이터Set을 바탕으로 가설 함수를 예측하는 데에서 발생하는 문제점을 일컫는 용어이다.

기계학습 프로그램은 Training Set을 가지고 가설 함수를 예측한다. 

위에 제시된 그림의 예를 바탕으로 생각해보면 다음과 같다.


제시된 Training Set을 가지고 기계학습을 진행할 때, 가장 왼쪽에 있는 가설 함수는 가장 단순한 모델이라 구하기 어렵지않다는 장점이 있기는 하나 Training Set안에서도 예측의 정확도가 너무 떨어진다. 이를 Underfitting이라고 한다. (High - Bias 가 특징이다.)


반면, 가장 오른쪽에 있는 가설 함수는 Training Set을 100% 만족하긴 하지만, 식이 너무 복잡하고, Training Set 이외의 데이터에서는 정확하지 못한 결과를 낼 가능성이 매우 높다. 이를 Overfitting, 즉 과대적합 이라 하는 것이다.





save image




Overfitting을 해결하기 위해서는 크게 두가지 방법이 있다.


1. Feature 의 수를 줄이는 것이다.

2. Regularization을 사용하는 것이다.


Regularization은, feature의 수를 줄인다기 보다는 파라미터의 조절을 통해서 특정 feature의 영향력을 줄인다는 특징을 가진다. 




save image




특히 이 Regularization(정규화) 방법은 머신러닝에서 가장 흔히 사용되는 기법 중의 하나인데, 식을 간단하게 살펴보면, 편차를 구하는 Loss term에 페널티를 부과하여 가설함수가 일정 수준 이상으로 구불구불해져 Overfitting을 낼 가능성을 줄여준다.


프로그래머가 코딩을 할 때 파라미터 λ의 값을 설정하게 되는데, 이 λ의 값이 커지면 커질수록 페널티가 커져서 theta vector의 값이 작아지게 되고, 그 결과 그래프가 완만해 지게 된다. 그러나, λ의 값을 필요 이상으로 키우게 되면 Overfitting이 해결되는 것을 넘어서 Underfitting, 즉 가설함수가 지나치게 단순화되어 큰 Bias를 가지게 될 위험이 생기게 된다.

따라서 적절한 λ값을 설정하여 가설함수를 모델링해주는 것이 좋다.


반응형

'Artificial Intelligence' 카테고리의 다른 글

Neural Networks (1)  (0) 2019.02.07
Logistic Regression with Octave  (0) 2019.02.04
MachineLearning - Classification(3)  (0) 2019.02.03
MachineLearning - Classification(2)  (0) 2019.02.01
MachineLearning - Classification(1)  (0) 2019.02.01