Python/파이썬 OpenCV 공부

[OpenCV 머신러닝] 서포트 벡터 머신 알고리즘이란?

AI 꿈나무 2020. 10. 24. 21:58
반응형

서포트 벡터 머신(SVM, Support Vectir Machine) 알고리즘

 SVM 알고리즘은 머신러닝 알고리즘에서 가장 유명하고 많이 사용되고 있습니다.

 SVM 알고리즘은 기본적으로 두 개의 그룹(데이터)을 분리하는 방법으로 데이터들과 거리가 가장 먼 초평면(hyperplane)을 선택하여 분리하는 방법입니다.

 

 

 데이터를 분리하기 위해 직선이 필요합니다.

 직선이 한쪽 데이터로 치우쳐져 있으면 데이터에 변동이나 노이즈가 있을 때 제대로 구분 못할 수 있습니다.

 이러한 문제점을 해결하기 위해 margin을 이용하게 됩니다.

 

 

 이 직선을 초평면(hyperplane)이라고 합니다.

 Support Vector은 데이터를 의미합니다.

 margin은 초평면과 가장 가까이 있는 데이터와의 거리를 의미합니다.

 마진을 최대로 만드는 직선을 계산하여 데이터를 분류하는 방법이 서포트 벡터 머신(SVM) 입니다.

 

오분류 에러 해결하기

 주어진 샘플을 완벽하게 두 개의 그룹으로 선형 분리할 수 없을 경우, 오분류 에러를 허용합니다.(Soft margin, C-SVM)

 

 

 C값은 사용자가 설정하는 파라미터입니다.

 C값을 크게 설정하면 오분류 에러는 작아지지만 마진은 작아지게 됩니다.

 C값을 작게 설정하면 마진이 커지는 대신 오분류 에러가 커질 수 있습니다.

 

비선형 데이터 분리하기

 SVM은 선형 분류 알고리즘입니다.

 하지만 실제 데이터는 비선형으로 분포할 수 있습니다.

 비선형 데이터의 차원을 확장하면 선형으로 분리할 수 있습니다.

 차원 확장에 이용되는 함수를 매핑 함수(mapping function)이라고 합니다.

 

 

 이처럼 차원을 확장하게 되면 선형으로 분리할 수 있습니다.

 

커널 트릭 - kernel trick

 매핑 함수를 직접 사용하는 대신 SVM 초평면 계산에서 사용되는 벡터 내적 연산을 대체하는 비선형 커널 함수(kernel function)를 정의하여 사용할 수 있습니다.

 

 주요 커널 함수로는 2가지가 있습니다.

(1) 다항식 커널(Polynomial)

 d는 변경할 차원 수를 의미합니다.

 

 (2) 방사 기저 함수(Radial basis function)

 감마 값이 크면 학습 데이터에 크게 의존적입니다. 이는 복잡한 결정 평면을 생성하고 과적합 가능성을 높입니다.

 감마 값이 작으면 학습 데이터 분포를 대략적으로 표현합니다. 이는 단순한 결정 평면을 생성합니다.

 

다음 포스팅에서는 OpenCV에서 SVM을 구현해보도록 하겠습니다.

 


OpenCV 홈페이지와 황선규 박사님의 'OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝' 을 공부하면서 정리해 보았습니다.

반응형