7-3 SVMs in Practice 본문

ML & DL/Coursera-ML

7-3 SVMs in Practice

eremo2002 2019. 2. 8. 22:21

제로 SVM 사용할  중요 부분 대해 알아본다.











요즘에는 SVM 쉽게 사용할 있는 좋은 라이브러리들이 많으니 처음부터 구현할 필요 없이 이를 통해 SVM 쉽게 사용할 있다. 그러나 이러한 라이브러리를 사용한다 하더라도 우리가 해야 하는 것들이 있다. 첫째 C, 𝝈 등의 파라미터 값을 선택해야 한다. C, 𝝈 따라 bias/variance effect 달라질 있기 때문에 적절한 값으로 선택해야 한다. 둘째, 어떤 커널을 사용해야 할지 선택해야 한다. 물론 커널을 사용하지 않을 수도 있다. 이러한 경우를 linear kernel이라고 부른다. SVM 사용할 Linear kernel 사용한다는 뜻은 커널을 사용하지 않는다는 뜻이다.

 

때론 linear kernel 사용하는 것이 reasonable 수도 있다. 만약 feature 수가 매우 크고, train sample 수가 매우 적을 , linear decision boundary 사용하여 문제를 해결할 있다면 linear kernel 사용하는 것이 좋을 수도 있다.

 

가우시안 커널을 사용하는 경우도 있을 것이다. 이런 경우 𝝈 값도 선택해줘야 한다. 앞선 강의에서 배웠듯이 𝝈 값이 커지면 high bias & low variance classifier 것이고 𝝈 값이 작으면 반대로 low bias & high variance classifier 것이다. 그럼 가우시안 커널은 언제 사용해야 할까? 보통 feature n 작고 training sample 수가 매우 많을 복잡한 non-linear decision boundary 필요하기 때문에 이러한 경우 가우시안 커널을 사용하는 것이 좋은 방법이 된다.











SVM 라이브러리에 따라 kernel function 구현할 수도 있다. 가장 보편적으로 사용하는 커널은 가우시안 커널과 linear 커널이다. 만약 가우시안 커널을 사용한다면 먼저 feature scaling 해주는 것이 중요하다. 만약 가우시안 커널을 사용하여 예측 문제에 대한 다음과 같은 n개의 feature f1, f2, … , fn 있을 , f1 가지는 값의 범위는 f2 비해 상대적으로 매우 크기 때문에 f1 값에 dominate되고 f2 같이 범위가 매우 작은 similarity 값은 ignore 있는 문제가 생긴다. 따라서 이러한 문제를 피하기 위해 가우시안 커널을 사용할 때도 range 비슷하게 맞춰주는 feature scaling 필요하다.











가우시안 커널과 linear 커널이 대표적인 커널이지만 다른 커널들도 존재한다. 물론 모든 similarity 함수들이 유효한 것은 아니며 SVM 올바르게 최적화되기 위해서는 Mercer's Theorem이라 불리는 technical condition 만족해야 한다. Polvnomial kernel, string kernel, chi-square kernel histogram… 등등 여러 커널이 존재하지만 일반적으로 사용되지는 않는다.











대부분의 SVM 라이브러리는 Multi-class classification 문제를 있는 기능을 제공한다. 따라서 라이브러리를 활용하여 SVM 통해 다중 클래스 문제를 있다. 혹은 로지스틱 회귀를 공부할 배웠던 one versus all method 사용해도 된다.












마지막으로 로지스틱 회귀, SVM, 뉴럴넷 여러 알고리즘 어떤 알고리즘을 사용해야 할까?

만약 n m 비해 상대적으로 크다면 로지스틱 회귀나 linear kernel SVM 사용하는 것이 좋다. 이런 경우 linear function으로도 작동할 있으며 어차피 complex non-linear function 학습시킬 있는 충분한 데이터도 없다.

 

만약 n 작고 m intermediate하다면 가우시안 커널을 사용해볼 있다.

 

만약 n 작고  m 매우 크다면 feature 추가하여 로지스틱 회귀나 linear kernel SVM 사용해볼 있다.

 

뉴럴넷은 대부분의 경우 작동하지만 트레이닝 하는데 많은 시간이 걸릴 있다. SVM 뉴럴넷보다 빠르며 convex optimization problem이기 때문에 항상 global minimum 찾을 있으며 local optima 문제에 대한 걱정을 필요가 없다.

 

 

지금 강의에서 제안한 가이드 라인이 다소 애매할 있고 명확한 기준은 아니다. 어떤 알고리즘을 사용할 것인지도 중요하지만 내가 가지고 있는 데이터가 얼마나 있는지가 중요하다. 또한 학습 알고리즘이 가지고 있는 오류나 문제를 분석하고 원인을 파악하여 이를 개선할 있는 능력도 매우 중요하다.



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

7-2 Kernels  (0) 2019.02.07
7-1 Large Margin Classification  (0) 2019.01.31
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