MG
[ML / Andrew Ng] Support Vector Machines - SVMs in Practice 본문
[ML / Andrew Ng] Support Vector Machines - SVMs in Practice
MG# 2022. 6. 6. 16:26우리가 실무에서 SVM을 사용할 때는 SW을 직접 개발하는 것이 아닌 라이브러리를 사용하는 것이 권장된다. 그 이유는 이를 구현하기 매우 복잡하고 최적화가 어렵기 때문이다. 그래서 우리가 이를 사용할 때는 parameter C와 어떤 종류의 Kernel을 사용할 지만 정하면 된다.
만약 n이 크고 m이 작으면 Linear Kernel을 사용한다. 작은 수의 데이터를 갖고 있기에 복잡한 함수로 대응하면 overfitting의 문제가 생길 수 있기 때문이다. 하지만 반대로 n이 작고 m이 크다면 Gaussian Kernel을 사용하는 것이 권장된다. 이를 만약 선택한다면 bias와 variance의 trade-off를 고려하여 sigma를 선택할 필요가 있다.
만약 Gaussian Kernel을 사용한다면 이를 적용하기 전에 미리 x를 feature scaling 해주어야 한다. 그 이유는 x1의 범위가 1000으로 크고 x2가 1~5로 작다면 2번째 항은 거의 무시되기 때문이다. 그렇기에 알고리즘이 제대로 작동하려면 feature scaling을 먼저 진행해주어야 한다.
Linear Kernel 과 Gaussian Kernel 뿐 아니라 다른 Kernel 또한 존재하는데 이는 모두 Mercer's Theorem을 충족한 함수들만 사용한다고 한다. 그 외의 Kernel들로는 Polynomial Kernel, 문자열을 이용하는 String Kernel 등이 있다. 다른 종류의 Kernel도 많지만 우연히 사용할 정도이고 잘 사용하지 않는다고 한다.
Kernel을 사용할 때 참고할 사항이 있는데 그 중 하나로 Multi-class classification 이 있다. 보통 라이브러리에서 이 기능을 내장한 함수가 있다고 한다. 하지만 그게 없을 경우 이전 강의에서 배웠던 one-vs.all 방법을 이용하여 K class를 돌려 그 중 z가 가장 큰 class를 고르면 된다.
마지막으로 n과 m이 주어졌을때 알고리즘을 선택하는 법을 알아보자.
- Logistic Regression, Linear Kernel : n이 m보다 클 때 사용한다. (ex. n = 10000, m = 10 ~ 10000)
>> 또는 n이 작고 m이 큰경우 n을 추가하고 사용한다.
- Gaussian Kernel : n이 작고 m이 중간정도이면 사용한다. (ex. n = 1~1000, m = 10~10000)
- Neural network : 모든 경우에서 잘 작동하지만 학습이 느리다.
'컴퓨터과학 > AI_ML강의 (Andrew Ng)' 카테고리의 다른 글
[ML / Andrew Ng] Unsupervised Learning - Clustring (0) | 2022.06.10 |
---|---|
[ML / Andrew Ng] Support Vector Machines - Kernels (0) | 2022.06.06 |
[ML / Andrew Ng] Support Vector Machines - Large Margin Classification (0) | 2022.06.06 |
[ML / Andrew Ng] Machine Learning System Design - Using Larage Data Sets (0) | 2022.05.31 |
[ML / Andrew Ng] Machine Learning System Design - Handling Skewed Data (0) | 2022.05.31 |