7-1 Large Margin Classification 본문

ML & DL/Coursera-ML

7-1 Large Margin Classification

eremo2002 2019. 1. 31. 23:02

지도학습에서 자주 사용하는 알고리즘 하나인 SVM 대해 알아본다.











SVM 대해 알아보기 익숙한 로지스틱 회귀를 다시 보자.

로지스틱 회귀에서 가설 h(x) 정의는 시그모이드 함수를 사용하였다. 만약 y=1 data 있을 정확히 예측하고 싶다면 h(x) 값이 1 가까워야 한다. 다시 말해z 0보다 매우 수록 1 가까워지게 된다. 반대로 y=0 데이터가 있을 때는 h(x) 값이 0 가까워지길 원한다. 따라서 z값이 매우 매우 작은 값이 수록 좋다.









로지스틱 회귀의 cost 값은 다음과 같다. Y=1 z값은 매우 수록 좋다고 했다. 이유는 z 크면 수록 아래에 있는 cost 값이 점점 줄어들기 때문이다.









이제 cost function 조금 수정하여 직선형태로 바꿔보자. (SVM에서 쉽게 사용하기 위해 조금 수정하는 것이다.)

y=0 경우도 똑같이 두개의 직선으로 cost function 수정한다. 다른 함수긴 하지만 로지스틱 회귀에서 사용하는 cost function 매우 유사하다.

이렇게 만든 함수를 cost_1(z), cost_0(z) 정의하자 (y=1 or y=0 경우로 나눈 )









앞서 정의한 csot_1(z) cost_0(z) 로지스틱 회귀 cost function 해당 term 대응된다.

이제 SVM에서 최적화된 파라미터를 찾기 위한 cost function 다음과 같이 정의할 있다.









여기서 1/m 지워도 된다. 왜냐하면 이건 그냥 상수 값이고 어차피 우리가 하고자 하는 cost 값을 최소화하는 θ 찾는 것이다. 따라서 1/m 지워도 상관 없다.( U-5)^2 +1 최소값을 갖는 u 5이다. 함수에 상수 10 곱한다 할지라도 최소값이 되는 u 5이다. 따라서 상수인 1/m 지워도 우리가 찾고자 하는 파라미터 θ 변하지 않는다.










로지스틱 회귀의 cost function cost term regularization term 합으로 생각하고 cost term A, regularization term 람다B 있다.


여기서 람다는 A B trade off하기 위한 파라미터였다. SVM에서는 람다가 trade off 하기 위한 파라미터가 아니라 다른 파라미터를 사용한다. 파라미터를 C라고 하면 CA + B 되고 우리가 하고자 하는 것은 CA+B 최소화하는 파라미터 θ 찾는 것이다. C 매우 작은 값이라면 B A보다 값을 가지게 된다.

(그냥 간단하게 로지스틱 회귀에선 A+람다*B 썻지만 SVM에서는 C*A + B 쓴다고 생각)

 

결과적으로 SVM에서 사용하고자 하는 cost function 이렇게 정의된다.








로지스틱 회귀와는 다르게 SVM에서는 h(x) 클래스에 대한 확률 값이 아니라 z 0이상인지 아닌지에 따라 그냥 1 or 0이다.


















SVM Large margin Classifier 불리는 이유에 대해 알아본다.












SVM cost function 다음과 같다.

Binary classification에서 y=1이면, z 1이상이면 되고 y=0이면 z -1이하이면 된다. 로지스틱 회귀와 달리 prediction되는 값이 z +1, -1 기준으로 달라지게 된다.


SVM cost function에서 붙어 있는 C regularization 역할을 하는 파라미터이다. 만약 C 아주 값이라면 cost term 값이 그만큼 커질 있다. 이런 경우 cost_1(z) 혹은 cost_0(z) 0 되면 된다. Cost(z) 0이된다는 것은 y=1 z>=1, y=0 z<=-1라는 것을 의미한다.










SVM cost function에서 붙어 있는 C regularization 역할을 하는 파라미터이다만약 C 아주  값이라면 cost term 값이 그만큼 커질  있다이런 경우 cost_1(z) 혹은 cost_0(z) 0 되면 된다. Cost(z) 0이된다는 것은 y=1  z>=1, y=0  z<=-1라는 것을 의미한다.













문제를 최적화 관점에서 다시 생각해보면 그냥 cost term 0이면 되고 이게 우리가 원하는 것이다. 그래서 cost term 0이라면 결국 우리의 decision boundary 간단하게 뒤에 남은 term 된다.












다음과 같은 positive, negative sample 분류해야 , 분홍색 or 초록색 decision boundary 데이터를 분류할 있다. 그러나 SVM 그리는 decision boundary 검은색 직선이 된다. 이러한 boundary distance 가지고 있다고 하는데 distance라는 의미는 여기서 margin 말한다. 검은색 decision boundary 분홍색, 초록색 boundary보다 sample과의 margin(거리) 크기 때문이다. 이러한 이유로 SVM Large margin classifier라고 한다.












SVM으로 다음과 같은 decision boundary 그렸다고 하자












이제 positive sample 사이에 negative sample 들어왔다고 하자. 그럼 이걸 제대로 분류하기 위해 SVM 분홍색 decision boundary 그릴 것이다.


만약 저렇게 들어온 데이터가 outlier라면 저런 outlier하나에 민감하게 반응해서 검은색 boundary에서 분홍색 boundary 바꾸는 것은 결코 좋은 선택이 아니다. 만약 C 매우 값이었다면 분홍색 boundary처럼 바뀔 것이다. 왜냐하면 C 엄청 크면 cost term 엄청나게 커지게 되고, 결국 outlier같은 것에 너무 민감하게 반응하기 때문이다.

 

그러나 C 적당히 작은 값이라면 outlier같은 data 존재하더라도 검은색 decision boundary 유지할 것이다.


















SVM 수학적 개념 대해 알아본다.













벡터 u, v 존재할 , 벡터의 내적 u'v 무엇인가?

벡터 v 벡터 u projection시켜 p라는 length 값을 얻는다. 그리고 p u 길이를 곱한 것이 벡터의 내적을 의미한다.

만약 벡터 v, u 사이의 각도가 90도가 넘으면 p 음수가 된다.











간단하게 설명하기 위해 𝜽0 0으로 두고 2개의 feature 존재한다고 해보자.

그럼 SVM decision boundary 간단하게 1/2(𝜽1^2, 𝜽2^2) 된다. 그리고 이걸 루트를 씌워서 생각해보면 이전에 벡터의 길이를 구하기 위한 식과 같아지므로 벡터 𝜽 길이로 있다. 따라서 decision boundary 1/2 ||𝜽||^2으로 있다.












또한 𝜽'x(i) 벡터의 내적 u'v 생각할 있다. 2개의 feature 사용한다고 했으므로 벡터 X 벡터 𝜽 다음과 같이 그려진다고 하자그럼 벡터 x 벡터 𝜽 projection시켜서 p 구할 있으므로 𝜽'x  P ∙ ||𝜽|| 있다.













𝜽'x∙ ||𝜽|| 같으므로 다음과 같이 정의할 있다.

만약 SVM 왼쪽 아래와 같은 초록색 decision boundary 그렸다면 이러한 선택은 training sample 매우 가깝기 때문에 margin 크지 않아 좋은 decision boundary 없다.(𝜽0 0이기 때문에 decision boundary 원점을 지나야 한다.) SVM 이러한 선택을 하지 않는다. 이유는 다음과 같다.

 

일단 파라미터 벡터 𝜽 decision boundary 직교이므로 파란색이 벡터 𝜽 된다.

이제  sample x(1) 하나 선택해서 이걸 파라미터 𝜽 벡터에 projection 시킨다. 그러면 빨간색의 작은 직선 p(1) 얻을 있다.

이러한 방법으로 다른 sample x(2) 선택하여 똑같이 𝜽 벡터에 projection 시킨 작은 분홍색 직선 p(2) 구한다.

벡터 x(2) 벡터 𝜽 이루는 각도가 90도가 넘기 때문에 p(2) 음수가 된다.

 

Positive sample 분류되기 위해선 p(i)  ||𝜽|| 값이 1이상이어야 한다. 반대로 negative sample 분류되기 위해선 p(i) ∙ ||𝜽|| 값이 -1 이하여야 한다.

따라서 우리가 선택한 2개의 sample x(1), x(2) 대해서 p(1) ∙ ||𝜽|| >=1 이어야 하고 p(2) ∙ ||𝜽|| <=-1 이어야 한다. 그런데 지금 decision boundary sample 사이와 거리가 작기 때문에 우리가 구한 p(i) 매우 작은 값이다. 그러므로 조건을 만족하려면 𝜽 커야한다.

 

그런데 최적화 관점에서 다시 생각해보면 우리는 파라미터 𝜽 작은 값을 가지길 원한다. 따라서 𝜽 작고 p(i) 우리한테 좋기 때문에 이런 decision boundary 좋은 boundary 없다.














SVM 오른쪽처럼 decision boundary 그렸다고 하자. 벡터 𝜽 decision boundary 직교이므로 파란색 선처럼 그려진다.


이전에 했던 것과 똑같이 두개의 sample 고를 것이다. X(1) 골라서 벡터 𝜽 projection 시킨 p(1) 구한다. X(2) 가지고 똑같은 방법으로 p(2) 구한다. 이렇게 구한 p(1), p(2) 왼쪽 예제의 p(1), p(2)보다 값을 가진다. p(i) 값을 가지기 때문에 우리가 원했던 것처럼  𝜽 그만큼 작아질 있다. 그리고 이러한 decision boundary 가장 가까이 있는 sample들과의 margin 최대가 된다.












쉽게 보기 위해 𝜽0 0으로 놓고 예시를 들었다𝜽0 0이기 때문에 decision boundary 원점을 지나지만 0 아니면 오른쪽처럼 그려져야 한다.










'ML & DL > Coursera-ML' 카테고리의 다른 글

7-3 SVMs in Practice  (0) 2019.02.08
7-2 Kernels  (0) 2019.02.07
6-5 Data for machine learning  (0) 2019.01.29
6-4 Error Metrics for Skewed Classes  (0) 2019.01.29
6-3 Building a Spam Classifier  (0) 2019.01.29
Comments