티스토리 뷰

반응형

#Classification

위의 예제와 같이 Email에서의 Spam유무 확인, 악성종양의 유무 등 분류에 사용하는 방법이 Classification이다.

이진 분류의 경우 Label Y는 0 또는 1의 값밖에 없으며 0은 negative, 1은 positive를 의미한다. 

이진 분류 이외에 클래스가 여러개라면 y의 레이블 또한 추가할 수 있다.



기존 Linear Regression과 같은 방법으로 구분하면 어떻게 될까?

위 그림에서 볼 수 있듯이 종양의 사이즈가 어느정도 이상 큰 경우 positive값을 가질 때에는

임계값을 정하여 Linear한 1차 직선으로 구분하는 것이 가능하지만

기존사이즈와 달리 매우 큰 종양이 하나라도 있으면 임계값이 바뀌어 Linear하게 구분하는 것이 어려워진다.



이를 방지하기 위해 필요한것이 활성화 함수이다.

가장 기본적으로 사용할 수 있는 함수가 Sigmoid Function이다.

이는 exp값을 취하여 만들어낸 함수로 0과 1사이의 값만을 가진다.

따라서 g(z)에서 z값이 0보다 크면 g(z)는 항상 0.5보다 커지고,

반대로 z값이 0보다 작으면 g(z)는 항상 0.5보다 작아진다.

0.5를 기준으로 positive, negative를 결정 할 수 있다. 



한 예제로 위와 같은 경우 sigmoid 함수를 통해 Decision Boundary를 구할 수 있다.

이 경계가 지금은 Linear하지만 Nonlinear한 Boundary도 sigmoid함수를 통해 구할 수 있다.


#Cost function


그렇다면 Linear Regression과 달리 Cost function은 어떻게 정의할까?

exp값이 들어가있기 때문에 차이를 제곱하여 평균을 구하는 방법으로 구현하면 

그래프의 모양이 구불어서 local optimal에 빠지기 쉽다. 

이를 convex그래프로 만들기 위해서 log를 사용하게 된다.


y=1인 경우 -log(h(x))그래프를 그려보면 위와 같다.

h(x)값이 1이면 0에 가깝고 0이면 무한대에 수렴한다.

따라서 틀린 예측을 하게 되면 cost가 굉장히 커지고 올바른 예측을 하면 cost가 낮아진다.

y=0인 경우도 마찬가지로 -log(1-h(x))그래프를 그려보면 쉽게 이해할 수 있다.


이 두식을 합치면 -log(h(x))-(1-y)log(1-h(x)) 라는 식이 도출된다.


#Gradient Descent

Cost를 줄이기 위해 Gradient Descent알고리즘을 구현해야 하는데,

J함수를 각각의 파라미터로 편미분하면 위와 같은 식이 도출된다.

이는 Linear Regression의 식과 매우 유사함을 알 수 있다.


#One vs All

y의 레이블이 여러개인 경우 오른쪽 그래프와 같이 어떤 한 클래스와 나머지 모든 클래스,

이런 식으로 계속 구분하게 된다.


#Overfitting

Overfitting은 가장 오른쪽 그래프처럼 feature의 개수는 많은데 상대적으로 training set의 개수가 적은경우

쉽게 발생한다. 학습 데이터에 너무 잘 훈련되어 기존 학습데이터는 굉장히 잘 맞추지만,

새로운 앞으로 예측해야할 데이터를 맞추는 것은 어려워진다.



이를 해결하기 위한 두가지 솔루션이 있다.

첫째, feature의 개수를 과감하게 줄인다.

그러나 개수가 굉장히 많은 경우 어떠한 것이 더 중요하고 덜중요한지 구분하기 쉽지 않고,

모든 feature가 영향을 준다고 생각되는 경우 쉽게 빠트릴 수 없다.

둘째, Regularization을 한다.

이는 feature의 영향이나 가중치를 줄이는 방법이다.

feature의 개수가 굉장히 많을 때 도움이 되는 경우가 많다.


위처럼 기존J함수에 새로운 파라미터 lambda를 모든 파라미터앞에 곱해주어 cost를 크게 만든다.

그러면 cost는 해당되는 파라미터로 인해 cost가 커진다고 생각되어 해당 파라미터를더 작은 값으로 줄일 것이다.

이처럼 각각 파라미터의 영향을 줄여 overfitting되는 것을 방지할 수 있다.

실제로 식을 정리해보면 마지막 식처럼 되는데.

세타에 1보다 작은 값이 곱해져 영향력이 줄어 들게 되고, 이외에 나머지 식은 동일함을 알 수 있다.


반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday