7-3 SVMs in Practice 본문
실제로 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 |