(Lecture note from Coursera - Machine Learning - Advices for applying machine learning)
Keyword: High Bias, High Variance, Learning Curve, Cross Validation.

[1]Machine Learning을 적용할 때, 생각보다 결과가 좋지 않을 경우 다음과 같은 선택지중 어떤 것을 선택해야 할까?

  • training example을 더 많이 모은다.
  • Feature의 수를 줄여본다.
  • Feature의 수를 늘려본다.
  • Polynomial Feature를 늘려본다.
  • λ(regularization parameter)를 늘려본다.
  • λ(regularization parameter)를 줄여본다.

... 당연히 그냥 감으로 찍는 것 보다 훨씬 좋은 방법이 있다. 이제부터 살펴보자.,

[2]우선 학습을 통해 얻은 hypothesis를 평가하는 방법에 대해 알아보자.
이를 알아두면, model을 선택할 때 좋은 지표로 이용할 수 있다.
보통 학습시에 training example 전체를 이용해서 hypothesis를 결정하는데, 이러지 말고, 다음과 같이 나눠서 사용하자.

  1. training example set을 랜덤하게 섞는다.
  2. 앞의 80%를 training set으로 삼는다.
  3. 나머지 20%를 test set으로 삼는다.

이제 80%, 그러니까 training set만 가지고 여러 model에 대해 학습을 진행한 다음,
얻어낸 hypothesis를 이용, test set의 데이터를 이용해서 error를 계산해본다.
이를 통해서 Generalization이 얼마나 잘 되었는지 확인할 수 있다!
그러니까 test set에서의 error가 가장 작은 hypothesis를 선택하면 끝~~
이면 좋겠는데.. 사실 이 방식은 여전히 overfitting을 해결하지 못했다.
해당 hypothesis가 test set에 그냥 유난히 잘 맞는 것일 수 있기 때문이다 -_-..

따라서 다시, 다음과 같이 나눠서 사용하는게 더 좋다고 한다.

  1. training example set을 랜덤하게 섞는다.
  2. 앞의 60%를 training example로 삼는다.
  3. 다음 20%를 cross validation set으로 삼는다.
  4. 끝의 20%를 test set으로 삼는다.

이번엔 cross validation set이 새로 추가됐다.
이는 위에서 언급한 문제인, test set에 유난히 잘 맞는 hypothesis를 선택하는 것을 해결하기 위함이다.
이번에도 위와 비슷하게.. 일단 training set을 이용해서 학습한 hypothesis들 중 cross validation set의 error가 가장 작은것을 선택한다.
이렇게 선택한 hypothesis에 대해 test set을 이용해서 error를 계산할 경우 Generalization의 정도를 아까보다 훨씬 낫게 평가할 수 있다.

이제 본격적으로 [1]에서 어떤 선택지를 고르는 것이 좋은 것인지 확인하는 방법에 대해 공부해보자.

[3]일단 우리가 처해있는 상황이 어떤 것인지에 따라 어떤 것을 선택할지 결정할 수 있다.
지금 우리를 힘들게 하는 원인이 되는 두 가지를 살펴보자.

1. High Bias
간단히 말해 Bias가 높다는건 underfitting하게 된다는 뜻이다.
2. High Variance
Variance가 높다는건 overfitting하게 된다는 뜻이다.

이해를 돕기 위해 Linear(Polynomial) Regression을 이용할 때, Polynomial의 Degree가 높아짐에 따른 Error의 변화량을 (개략적으로) 살펴보자.

연두색 부분과 주황색 부분의 실제 모습을 (역시 개략적으로) 그려본다면 다음과 같은 상황이 적당하겠다.
연두색 부분의 함수는 보다시피 너무 단순한 polynomial로 인해 training data를 제대로 표현하지 못하고,
주황색 부분의 함수는 보다시피 너무 복잡한 polynomial로 인해 training data를 너무 완벽하게 표현해서
generalization 성능이 떨어지고, 이는 곧 validation set에 대해서 큰 오차를 보여주게 된다.

또 중요한 발견으로는 연두색 부분, 즉 high bias인 상황에서는 validation error와 training error가 거의 비슷하다.
반면 주황색 부분, 즉 high variance인 상황에서는 validation error와 training error의 차이가 매우 크다.
이제 [2]를 이용해서 degree를 선택할 수 있다('degree가 몇인 model을 선택할 것인가'를 해결 가능).

[4]이제 regularization을 고려해서 살펴보자.
λ에 따른 training / validation error를 구할 수 있다.

(주의할 점: 위의 그래프의 Training / Validation Error는 Regularization Term이 제거된 채로 측정한 것이다.
 즉, regularization term은 learning process에서만 사용했다는 뜻)
λ가 작으면 training error에 맞게 학습하고, 자연히 higher variance를 갖게된다.
반면 
λ가 크면 hypothesis가 0에 가까워져서 higher bias를 갖게 된다.

최적의 λ를 찾는 것도 역시 [2]를 이용해서 할 수 있다.
이를테면 다음과 같이 
λ를 바꿔가며 평가하고, 가장 적절한 것을 선택하면 된다.
λ = 0, 0.01, 0.02, 0.04, 0.08, 0.16, ..., 10.24 (2배씩 키워가면서 결정)

[5]이제 마지막으로 training example set의 크기에 따른 변화를 살펴보자.
다음과 같은 그래프를 Learning Curve라고 부른다.


위 그래프는 그림만 봐도 알 수 있듯이 이 그래프는 high variance를 갖는 경우이다.
여기서 가장 중요한 것은... high variance를 가져서 overfitting하는 경우에는
1. validation error와 training error의 gap이 크다(연두색 박스친 부분).
2. training example의 수가 늘어날수록 두 error가 수렴한다.
특히 2번이 중요한데,
이를 통해서 high variance를 갖는 경우에는 training example을 늘리는 것이 효과를 가질 것이란 것을 알 수 있다!

이건 high bias를 갖는 경우인데, 보라색 박스와 주황색 박스를 겹쳐서 그린 이유는,
직선 형태로는 더 이상 error를 줄일 수 없기 때문에 둘의 직선이 거의 정확히 일치하기 때문이다.
이를 통해 알 수 있는건 high bias를 갖는 경우에는 training example을 늘려도 효과가 거의 없을 것이란 사실이다.
[6]자, 위에서 살펴본 것들을 이용해서 결국 [1]에서 고민하던 문제를 해결하는 방법을 알게 되었다!

  • training example을 더 많이 모은다.           -> high variance일 경우
  • Feature의 수를 줄여본다.                      -> high variance일 경우
  • Feature의 수를 늘려본다.                      -> high bias일 경우
  • Polynomial Feature를 늘려본다.               -> high bias일 경우
  • λ(regularization parameter)를 늘려본다.     -> high variance일 경우
  • λ(regularization parameter)를 줄여본다.      -> high bias일 경우

high bias인지 high variance인지 어떻게 아는가는... 당연히 [5]learning curve를 그려보면 됩니다.