개발 공부/인공지능

[기계학습] Support Vector Machine (SVM) - 첫 번째

sunjungAn 2021. 12. 3. 02:07

parameterised classifiers 중에 하나


<Motivation>

- 이진분류를 진행하는데, 모든 데이터에 대해서 하나의 선으로 이진 분류가 되지는 않는다. 

하나의 선으로도 이진 분류가 가능한 데이터
하나의 선으로 이진 분류를 못하는 데이터

 

이런 데이터 셋을 다른 차원에서 바라본다면?

출처:&nbsp;https://www.hackerearth.com/blog/developers/simple-tutorial-svm-parameter-tuning-python-r/

위의 사진 예시처럼 3차원으로 표현해 보았을 때, 가우시안 커널을 적용하며, 다른 차원으로 증강시켜 바라보면 새로운 decision surface가 생길 수 있다! 원래 데이터의 속성과 특징은 유지될 수 있다

 

 

커널 메서드

커널을 적용하여 차원을 증강 시킨다!

 


<Support Vector Machine>

- 여백을 이용한 일반화 능력 향상

출처:&nbsp;https://www.hackerearth.com/blog/developers/simple-tutorial-svm-parameter-tuning-python-r/

신경망에 경우, 목적 함수가 0이 되면 멈추기 때문에 A혹은 C에 도달하면 멈추게 된다. 

하지만 SVM의 경우, A혹은 C에서 끝나는 것이 아니라 양쪽 클래스의 여백(margin)이 큰 B를 찾게 된다. -> optimal decision boundary

양쪽 부류에 여백이 클수록 일반화 능력이 크다

 

 

출처:&nbsp;https://www.hackerearth.com/blog/developers/simple-tutorial-svm-parameter-tuning-python-r/

이때 여백을 구하기 위해 A선과 C선에 맞닿아 있는 데이터들의 위치가 중요한데, 이러한 데이터들을 Support Vector라고 한다.

즉, B를 만들어내기 위해서 A, C를 구해야하는데, A, C도 결국 linear regression으로 만들어 진다. 또 그 A,C를 이용하여 B를 찾기 때문에 Neural Network와 다를것이 없다.

 

 

강조할 것은

margin이 가장 큰 결정 초평면의 w를 찾아야한다. 


 

 

<Support Vector Machine 분석>