곧있을 대학원 면접을 위해서 복습 겸 기계학습 간단 개념 정리를 하려고 한다.
그 중에서 SVM에 대해 정리를 해보았다!
서포트 벡터 머신은 회귀와 분류를 목적으로한 지도 학습 모델이다.
기존에 주어진 데이터를 바탕으로 비확률적 이진 선형 분류 모델을 만드는 원리이고
그 분류 경계 폭을 가장 크게하는 것을 목적으로 한다.
SVM에는 여러 개념들이 등장하는데
하나하나 알아보자면
서포트 벡터 : 두 class 사이에 위치한 데이터들
초평면 : 서로 다른 분류에 속한 데이터들 간 거리를 가장 크게하는 분류 선
마진 : 경계와 support vector의 거리를 의미하며 가장 큰 마진이 좋은 모델
조금 더 딥하게 개념을 들어가 보면 마진 중에서도 두 종류가 있다.
하드 마진 : 이상치를 허용하지 않기위해 마진을 엄격하게 선정한 것이다.
마진이 상대적으로 작다고 볼 수 있다.
소프트 마진 : 이상치를 어느정도 허용하여 마진을 여유있게 선정한 것이다.
마진이 상대적으로 크다고 볼 수 있다. 그렇기에 under fitting이 일어날 수 있다.
또한 선형 분류가 아닌 비 선형 분류에서 소프트 벡터 머신을 사용할 수 있게 하기 위한 작업이 있는데
이를 커널 트릭이라고 한다.
커널 트릭 : 입력 데이터의 차원을 증가시켜 분류하는 방법
SVM의 핵심적 특징은 마진의 최대화다.
SVM의 장점은 분류와 회귀를 동시에 활용할 수 있다는 점과 비교적 적은 데이터로 학습할 수 있으며 과적합 또한 덜하다는 것이다.
단점은 데이터가 많을 시 모델 학습시간이 오래 소요된다는 점과 각각 분류에 대한 SVM 모델 구축이 필요하다는 점이다.
SVM 간단 실습을 위해 좌표를 찍어 보았다.
(코드와 시각화 사진은 다른 블로그를 참고하였다.)
1
2
3
4
5
|
from sklearn.svm import SVC
classifier = SVC(kernel = 'linear')
training_points = [[1, 2], [1, 5], [2, 2], [7, 5], [9, 4], [8, 2]]
labels = [1, 1, 1, 0, 0, 0]
classifier.fit(training_points, labels)
|
cs |
이러한 상황에서 새로운 데이터를 추가하여 그 데이터가 어디에 속하는지 예측을 해보겠다.
1
|
print(classifier.predict([[3, 1]]))
|
cs |
결과값은 label 1로 잘 나오게 된다.
이렇게 아주아주 간단하게 SVM에 대해 알아보았다.
이정도면 면접에 잘 대답할 수 있겠지?
서류 제출 끝나고 면접기간이 온다면 다시 작성해 보겠다!
'데이터 사이언스 공부 > 개념 정리' 카테고리의 다른 글
딥러닝 분석 알고리즘 간단 개념 정리 (DNN, CNN, RNN) (0) | 2022.11.16 |
---|---|
나이브 베이즈 분류 간단 개념 정리 (0) | 2022.11.05 |
랜덤포레스트 (Random Forest) 간단 개념 정리 (0) | 2022.11.02 |
연관분석 간단 개념 정리 (0) | 2022.10.31 |
댓글