juuuding

[Supervised Machine Learning: Regression and Classification] The problem of overfitting (1) 본문

인공지능/코세라 머신러닝 특화과정

[Supervised Machine Learning: Regression and Classification] The problem of overfitting (1)

jiuuu 2023. 11. 7. 00:09

 The Problem of Overfitting

 

[Overfitting in Regression]

 5개의 훈련 데이터가 있는 regression을 살펴보았을 때, 그림 1의 model은 훈련 예제에 잘 맞지 않는 모습을 보이고, 이를 underfit 혹은 high bias라고 표현한다. 그림 2를 보면 훈련 예제들이 model에 꽤 적절하게 잘 맞는 양상을 띄며, 이를 generalization이라고 표현한다. 그렇다면 overfit은 무엇일까?

 

그림 1 (underfit)

 

그림 2 (right)

 

 overfit은 앞서 보았던 underfit과 반대로 model이 모든 훈련 예제에 과도하게 잘 맞는 것을 말한다. 훈련 예제를 바탕으로 만들어진 model은 본 적이 없는 새로운 예제에서도 잘 맞아야 하는데, 그렇지 못하고 기존에 있는 예제에 과도하게 맞는 것을 뜻한다. 이러한 경우에서는 훈련 예제가 조금만 달라지더라도 완전히 다른 model이 나오는 현상이 발생하며, 이런 현상 때문에 overfit을 high variance로 표현하기도 한다. 

 

그림 3 (overfit)

 

 

[Overfitting in Classification]

 classification에서도 overfit의 의미는 regression에서의 의미와 같다.

 

(좌부터 순서대로) underfit , right , overfit

 

 

 

 Addressing Overfitting

 

 앞에서는 overfit의 의미에 대해 알아보았다. 이제 이러한 overfit이 발생했다고 생각될 때 해결하기 위해 할 수 있는 일에 대해 알아보자. 

 

[1] 더 많은 훈련 예제 모으기

 overfit을 해결할 수 있는 첫번째 방법은 training examples를 더 모으는 것이다. 그러면 아래의 그래프와 같이 overfit이 해결될 수 있다.

 

collect more examples

 

 

[2] feature을 뺄 지 넣을 지 선택하기

 두번째로 model 생성과 관련성이 높은 features만 남겨두고 나머지 feature들은 제외하는 것이다. 예를 들어 집 값을 결정하는데 영향을 미치는 features가 다음과 같다고 하자. 

 

 이렇게 다양한 feature을 고려하면서 데이터가 충분하지 않다면 overfit이 발생할 수 있다. 이럴 때에는 feature 중 몇가지만을 넣어주어야 한다. 여기서 커피숍까지의 거리와 같은 feature은 상대적으로 y인 집 값에 영향을 덜 미친다는 것을 직관적으로 알 수 있다. 그리고 size, bedrooms, age 와 같은 feature은 집 값과 관련성이 높다는 것도 알 수 있는데, 이렇게 관련성이 높은 feature들만 선택을 하면 overfit이 해결될 수 있다. 하지만 이러한 방법의 단점은 유용한 feature이 사라질 수도 있다는 것이다.

 

 

[3] 정규화

 정규화는 parameter의 값을 조절하여 몇몇 feature들의 가중치를 줄이는 방법이다. 

overfit

 

 위의 그림은 overfit이 발생한 model이다. 여기서 방법[2]와 같이 몇몇 feature을 제거하려면 feature x 앞 가중치(w)를 0으로 변경하면된다. 하지만 앞서 말했다시피 이렇게 하면 유용한 feature이 사라질 수도 있다는 단점이 있기 때문에, feature을 제거하는 대신 상대적으로 영향이 적은 feature에 대한 가중치를 줄이는 방법을 사용하는 것이다. 

 

regularization

 

 위의 그림과 식처럼 parameter 값을 줄이면서 해당 특징이 너무 큰 영향을 미치지 않게끔 하는 것을 regularization이라고 한다. 이렇게 하면 방법[2]의 단점도 보완할 수 있고, overfit도 해결할 수 있다.

 

 정리하자면 overfit을 해결하기 위해서는 우선 데이터를 더 수집할 수 있는지 알아본 후, 불가능하다면 포함할 feature을 선택하거나 정규화를 진행하면 된다.