이 포스트는 Coursera Machine Learning 강의(Andrew Ng 교수)를 요약 정리한 것 입니다. 포스트에 사용된 이미지 중 많은 내용은 동영상 강의 자료의 이미지 캡쳐임을 밝힙니다.
Course Home: Coursera Machine Learning
(이 글은 Coursera ML class – week03 Logistic Regression, Regularization part I 에서 이어집니다.)
Logistic Regression Multi-class classification
이번에는Logistic Regression에서 y값이 여러 개 있는 multi-class classification일 때를 알아보자. 여태까지 배운 것은 악성종양인지 아닌지와 같이 두 가지의 분류만 있는 경우였다. 그러나 Multi-class classification인 경우는 아래와 같다. 이메일을 정리할 때 카테고리를 work, friends, family, hobby로 정리 할 수 있고, 날씨를 Sunny, Cloudy, Rain, Snow로 나눌 수 있다.
두 가지로만 분류되는 경우는 왼쪽 그래프처럼 O, X의 그림으로만 분류해서 그릴 수 있었지만 여러 개로 분류되는 경우는 오른쪽과 같이 그릴 수 있다. (세 가지로 분류되는 경우)
그럼 여러 개로 분류되는 경우에는 가정을 어떻게 세워야 할까?
아래와 같이 세울 수 있다. Class1은 세모, Class2는 네모, Class3는 엑스일 때, hθ(i)(x)= P(y=i | x; θ) 라는 식을 기억할 것이다. hθ(1)(x)= P(y=1 | x; θ)를 구할 때는 Class1을 제외한 나머지 2개를 같은 것이라고 생각하고 decision boundary를 구한다. Decision boundary는 이전에 배웠었던, 두 가지 분류일 때 구하던 방법으로 구하면 된다. 나머지 경우도 마찬가지이다. 자신의 숫자를 제외한 경우를 제외한 나머지를 같다고 가정하고 Decision Boundary를 구한다.
그럼 각각의 class i에 대해 구한 확률값은 어떻게 적용할까? 새로운 input x가 들어왔을 때 x에 관해 모든 hθ(i)(x)= P(y=i | x; θ)를 구하고 그 중에 max인 값의 그룹으로 선택하면 된다. 확률이 가장 높기 때문이다.
The problem of overfitting – Regularization
이번에는 Overfitting 문제에 관해 알아보자.
먼저 우리가 계속 봐왔던 Linear Regression의 예시였던 Housing Prices문제에 그래프를 살펴보자. 맨 왼쪽의 그래프를 그려보면 점들과 하나도 맞지 않는 것을 볼 수 있다. 이러한 경우를 “Underfit”, “High bias”라고 한다. 가정과 데이터가 거의 맞지 않는 경우를 말한다. 보통 Underfit한 경우는 함수의 특징이 너무 간단하거나 적은 특징들을 가지고 가정 함수를 만들 때 발생한다. 중간의 quadratic function은 데이터와 잘 맞는 것을 볼 수 있다. 이러한 경우는 “Just right” 라고 합니다. 마지막 맨 오른 쪽의 함수는 현재의 데이터와는 정확히 일치한다. 하지만 새로운 데이터가 들어왔을 때 잘 일반화가 되지 않는다. 즉, 현재의 데이터에서만 딱 맞는 경우이다. 따라서 중간의 함수는 다른 데이터가 들어와도 잘 일반화 된 가정이기 때문에 좋은 가정이 된다. 이러한 상태를 “overfitting”, “high variance”라고 한다. 보통 복잡하게 함수를 만들었을 때, 즉 너무 많은 불필요한 굴곡들이 있는 경우 이다.
이 terminology들은 linear, logistic regression에 모두 적용된다.
그러면 overfitting을 피하려면 어떻게 해야 할까? 1) 먼저 feature들을 줄이면 된다. 중요하게 생각되는 feature들만 남겨놓고 나머지는 사용하지 않는 것이다. 두 번째 방법으로는 2) Regularization방법을 사용하는 것이다. 모든 feature들을 남겨놓고 parameters들 θ 값의 크기/값을 줄이는 것이다. 이 Regularization 방법은 많은 경미하게 필요한 feature들이 많을 때 쓰면 좋은 방법이다.
- Regularization – cost function
Overfitting 문제를 해결하기 위한 Regularization을 어떻게 하는지 알아보자.
다시 house price 문제로 돌아가 보자. 왼쪽의 그래프가 “just right”, 오른쪽의 그래프가 “overfitting”이다. 우리의 목적은 오른쪽의 그래프를 왼쪽의 그래프처럼 만들고자 한다.
θ0 + θ1x + θ2x2 + θ3x3+ θ4x4 에서 θ3x3+ θ4x4 을 지우면 왼쪽과 동일한 식이 된다. 실제로 이 값들을 지우는 것이 아니라 우리는 cost function을 아래와 같이 수정할 것이다. Cost function이 0에 가까워 지기 위해서는 우리는 θ3, θ4 값을 거의 0으로 만들어야 한다. 그렇게 되면 θ3x3, θ4x4 값 역시 크게 감소될 것이다.
우리는 모든 theta parameters를 regularize할 것이다. 그 공식은 아래와 같고, 여기서 λ값을 regularization parameter이라고 한다. 이 값이 얼마나 theta parameter들이 부풀려 졌는지를 결정한다. 위에 식에서는 이 값이 1000이였다.
정리해 보면 아래와 같다. Regularization이 적용되면 “just right”의 그래프와 비슷한 quadratic function이 그려짐을 확인할 수 있다.
그럼 regularization parameter = λ 가 값이 엄청 크다면 어떻게 될까? λ 값이 너무 크게 되면 모든 θ 값이 0에 가까이 되고 결국 θ0 값만 남게 된다. 그럴 경우 상수의 그래프가 그려지게 되고 모든 data에 맞지 않는 “Under fitting” 상태가 되게 될 것이다.
- Regularized Linear regression
Regularization이 적용된 Linear Regression에 대해 살펴보자.
우리의 목적은 min J(θ) 값을 구하는 것이고, θ값을 구하기 위해 필요한 Gradient Descent도 Regularized 된 J(θ) 값의 미분 값을 구하면 된다. 단, θ0 값만 따로 구하는데 이유는 위에서 λ θ02 값은 더하지 않고 j=1인 경우부터 시작했기 때문이다.
이제 우리는 아래와 같이 식을 정리 할 수 있다. 이 때 (1 – αλ/m) 값은 항상 1보다 작아야 한다. 매번 반복할 때 마다 θj의 값은 감소해야 하기 때문이다.
- Regularized logistic regression
Regularized logistic regression도 구해보자. 이것도 마찬가지로 cost function에 다음을 더해주면 된다.
(아래 그림의 검정 손글씨 부분)
가정(h)에 sigmoid function을 사용한다는 것을 제외하고 Gradient Descent는 완전히 동일하다.
<끝>
Course Home: Coursera Machine Learning
Andrew Ng 교수님 소개: https://www.coursera.org/instructor/andrewng