데이터분석/Machine Learning

Support Vector Machines (SVM)

늘근이 2015. 10. 19. 22:41



위의 그래프는 위키피디아에서 하나의 예이며, 검은돌과 흰돌을 구별해야하한다. 검은돌과 흰돌을 구별하는것은 그다지 어렵지 않고, 저 사이 어딘가에다가 줄을 그어야 하는데, 어떤 것이 제일 그럴듯해 보이는가?

일단 H3 은 틀린 구분선이며, H1은 잘 구분하고 있기는 하지만 무언가 좀 이상하게 구분되어있다. 제대로된 구분선은 H2로 보이지 않는가? 흰돌과 검은돌간 비슷비슷한 간격을 보여주고 있으면서 뭔가 H1보다는 타당성 있어 보인다.

이를 잘 살펴보면, H2 는 검은 돌 또는 흰돌과의 간격이 모두 멀리 떨어진 상태라는 것을 알수 있다. SVM알고리즘은 이렇게 공간상에 있는 여러가지 놈들은 제대로 구분짓기 위해서 선(혹은 초평면)을 잘긋는 알고리즘이다.

다만 잘 그리기 위해서는, 아래와 같이 간격 (Margin)을 최대로 하는 선을 그리는것이 최적이라고 생각할 수 있는데, 아래의 그림은 위의 직관과 일치한다.


그렇다면 도대체 왜 짜증나게 그냥 간지구분선 이렇게 안부르고 써포트 벡터 머신이라고 부르는가?

일단 벡터는 N * 1 혹은 1 * N행렬인데,일단 Support Vector는 흩뿌려진 데이터 중 마진을 잘 그을수 있게 도와주는 돌들을 Support Vector라고 부른다. 위의 그림에서는 점선에 걸쳐있는 놈들을 말한다. 이의 거리와 기울기를 바탕으로 마진을 최대로 하는 점을 구하게 되고 이는 결과적으로 두 종류의 데이터를 잘 구분할수 있는 구분선(초평면)을 잘 그을수 있는것이다.



*초평면 (Hyperplane)

눈을 감고 이차원 세상을 생각해보자. 메이플 스토리는 2차원이다. 사람들을 지역으로 구분하고 싶으면 그냥 1차원인 선을 그으면된다. 다시 눈을 감고 진짜 세상을 생각해보자. 3차원인데, 이를 공간으로 구분짓기 위해서는 2차원의 평면이 필요하다. 이제 다시 4차원을 생각해보자. 출근을 하지않아도 되는 꿈같은 세사..아 이건 아니구나 어쨌든. 생각이 안되어도 또 생각해보자. 이 4차원이상의 공간을 나누기 위해 필요한것은 4-1차원의 평면이다. 그 이상의 n차원에서는 n-1평면이다. 그렇다면 이 n-1평면을 어떻게 불러야 하는가? 초평면이라고 부른다. 


참고자료

https://onionesquereality.wordpress.com/2009/03/22/why-are-support-vectors-machines-called-so/#section1