본문 바로가기
데이터 사이언스 공부/개념 정리

Support Vector Machine 간단 개념 정리

by 아인슈페너먹고싶다 2022. 10. 26.

곧있을 대학원 면접을 위해서 복습 겸 기계학습 간단 개념 정리를 하려고 한다.

 

그 중에서 SVM에 대해 정리를 해보았다!

 

 


 

 

서포트 벡터 머신은 회귀와 분류를 목적으로한 지도 학습 모델이다.

 

기존에 주어진 데이터를 바탕으로 비확률적 이진 선형 분류 모델을 만드는 원리이고

 

그 분류 경계 폭을 가장 크게하는 것을 목적으로 한다.

 

 

 

 

SVM에는 여러 개념들이 등장하는데

 

하나하나 알아보자면

 

 

서포트 벡터 : 두 class 사이에 위치한 데이터들

 

초평면 : 서로 다른 분류에 속한 데이터들 간 거리를 가장 크게하는 분류 선

 

마진 : 경계와 support vector의 거리를 의미하며 가장 큰 마진이 좋은 모델

 

 

 

조금 더 딥하게 개념을 들어가 보면 마진 중에서도 두 종류가 있다.

 

 

하드 마진 : 이상치를 허용하지 않기위해 마진을 엄격하게 선정한 것이다. 

 

마진이 상대적으로 작다고 볼 수 있다.

 

 

소프트 마진 : 이상치를 어느정도 허용하여 마진을 여유있게 선정한 것이다.

 

마진이 상대적으로 크다고 볼 수 있다. 그렇기에 under fitting이 일어날 수 있다.

 

 

 

또한 선형 분류가 아닌 비 선형 분류에서 소프트 벡터 머신을 사용할 수 있게 하기 위한 작업이 있는데 

 

이를 커널 트릭이라고 한다.

 

커널 트릭 : 입력 데이터의 차원을 증가시켜 분류하는 방법

 

커널 트릭

 

 

SVM의 핵심적 특징은 마진의 최대화다.

 

SVM의 장점은 분류와 회귀를 동시에 활용할 수 있다는 점과 비교적 적은 데이터로 학습할 수 있으며 과적합 또한 덜하다는 것이다.

 

단점은 데이터가 많을 시 모델 학습시간이 오래 소요된다는 점과 각각 분류에 대한 SVM 모델 구축이 필요하다는 점이다.

 

 

SVM 간단 실습을 위해 좌표를 찍어 보았다. 

 

(코드와 시각화 사진은 다른 블로그를 참고하였다.)

 

사진출처 https://hleecaster.com/

 

 

 

1
2
3
4
5
from sklearn.svm import SVC
classifier = SVC(kernel = 'linear')
training_points = [[12], [15], [22], [75], [94], [82]]
labels = [111000]
classifier.fit(training_points, labels) 
cs

 

이러한 상황에서 새로운 데이터를 추가하여 그 데이터가 어디에 속하는지 예측을 해보겠다.

 

 

1
print(classifier.predict([[31]]))
cs

 

결과값은 label 1로 잘 나오게 된다.

 

 

이렇게 아주아주 간단하게 SVM에 대해 알아보았다.

 

이정도면 면접에 잘 대답할 수 있겠지?

 

서류 제출 끝나고 면접기간이 온다면 다시 작성해 보겠다!

댓글