Cute Dog Bopping Head
본문 바로가기
Study IT/Machine Learning

[머신러닝] 모델에 대해 알아보자: SVM (Support Vector Machine) 서포트 벡터 머신

by 찾 2021. 5. 25.

Support Vector Machine 서포트 벡터 머신 :

분류, 또는 회귀를 위해 사용하는 지도학습 모델 중 하나.

데이터가 많으면 속도가 굉장히 느리지만 (애먹고 있는 나.......) 분류에 효과적이기에 써볼 수 밖에 없다.

그 중에서도 텍스트 또는 이미지 분류에 효과적이라고 함.

선형 SVM을 사용해 두 그룹을 분류한 모습, 출처는 링크

 

scikit-learn 에서는 이러한 SVM 들을 지원하고 있다.

 

1) SVC: Support Vector Classification 

커널에 따라 달라지는 결과

 

 

1-1) LinearSVC 또는 SVC(kernel='linear')

- 선형 SVM 커널을 사용함.

- 두 그룹을 비교할 수 있는 거리를 Margin 마진 이라고 하는데, 이 마진이 최대가 되는 경계선을 Optimal hyperplane 최적 초평면 이라고 한다.

- 분류 시에는 두 그룹을 비교할 수 있는 거리 내에서 많은 방법으로 선을 그을 수 있으므로 cost(C)를 주어 이상치를 얼마나 허용할 지 정할 수 있다.

C가 작을 수록 이상치를 많이 허용하는 Soft margin 느낌으로, 일반적인 결정 경계를 찾는 것이 된다. 하지만 Accuracy가 조금 낮아질 가능성이 있다.

C가 클수록 이상치를 적게 허용하기에 Hard margin 느낌으로, accuracy가 높아지지만 일반적인 경계를 찾지 못하게 된다. (Overfitting의 가능성이 커진다.)

- LinearSVC의 경우, 속도가 빠르고 선형 커널에 대해 여러 옵션을 줄 수 있다는 점에서 선형 커널에 특화된 모델로 볼 수 있음.

 

1-2) SVC(kernel='rbf') 또는 SVC(kernel='poly') 또는 SVC(kernel='sigmoid')

선형 모델로는 구분할 수 없는 두번째 케이스. 가우시안 RBF 커널을 사용하니 잘 분류해 낼 수 있었음을 참고

- 선형 SVM 커널을 사용함.

- 데이터를 그냥 사용하는 것이 아니라, 비선형 커널을 통해 단순한 데이터를 복잡한 특징 공간으로 변환하게 된다. 2차원 공간에 있는 해당 점들을 3차원적으로 변형해주는 것이다. 그렇게 되면 2차원에서 선으로 구분하기 어렵던 점들이, 3차원에서 면으로 분류할 수 있도록 보여진다. 그렇게 구분이 된 후에는, 3차원에서 분류 된 것을 다시 2차원으로 매핑시켜 결과를 얻어낸다.

- 보통 RBF를 많이 쓴다. RBF 커널에는 gamma라는 값을 설정할 수 있는데, 이는 클수록 작은 표준편차를 갖고 작을수록 큰 표준편차를 갖게 된다. gamma가 클수록 하나의 데이터가 영향력을 행사하는 거리가 짧아지고, gamma가 작을수록 하나의 데이터가 영향력을 행사하는 거리가 길어지는 것이다.

- 밑의 gamma와 c의 변화에 따라 달라지는 결과를 확인해보면, c가 작을수록 이상치를 많이 허용하므로 경계가 일반적인 모습이고, 클 수록 이상치를 허용하지 않으므로 경계가 한쪽으로 치우친 모양으로, overfitting이 된 것 같은 모양새가 된다. gamma에 대한 변화도 볼 수 있는데, gamma가 커질수록 하나의 데이터에 대한 영향이 적어져서 각 점에 대해 경계가 생기게 되는 것을 볼 수 있다. gamma를 키울수록 데이터가 주는 영향력이 줄어드는 것이다.

 

2) SVR: Support Vector Regresson

- 회귀의 경우, 데이터가 주어졌을 때 해당 데이터를 잘 설명해줄 수 있는 선을 찾고자 하는 것이 목표이다.

- 오른쪽의 경우 데이터를 아주 잘 표현해내지만 일반적이지 않고 데이터에 과대적합된 모습을 보인다.

'Study IT > Machine Learning' 카테고리의 다른 글

[머신러닝] Decision Tree 결정 트리  (0) 2022.11.26

댓글