SVM(서포트 벡터 머신)
분류와 회귀에 사용
두 카테고리 중 어느 하나에 속한 데이터의 집합이 주어졌을 때, SVM 알고리즘은 주어진 데이터 집합을 바탕으로 하여 새로운 데이터가 어느 카테고리에 속할지 판단하는 비확률적 이진 선형 분류 모델을 만듦
support vectors는 결정 경계와 가까이 있는 데이터 포인트들을 의미
이 데이터들이 경계를 정의하는 결정적인 역할을 함
데이터에 2개 속성만 있다면 결정 경계는 다음과 같은 간단한 선 형태가 될 것
속성이 3개로 늘어난다면 3차원으로 그려야 함
이 때의 결정 경계는 선이 아닌 평면임
속성의 개수가 늘어날수록 더 복잡해질 것이다. 결정 경계도 단순한 평면이 아닌 고차원이 될 것이며, 이를 초평면(hyperplane)이라고 부른다.
마진(Margin)
결정 경계와 서포트 벡터 사이의 거리를 의미
쉽게 말해 선과 가까운 양 옆 데이터와의 거리를 의미
가운데 실선이 결정 경계가 된다. 실선으로 부터 빨간점 1개, 파란점 2개까지 영역을 두고 점선을 그어놓았다. 점선으로부터 결정 경계까지의 거리가 마진(margin)이다.
최적의 결정 경계는 마진을 최대화한다.
이상치(outlier)
SVM은 데이터 포인터들은 올바르게 분리하면서 마진의 크기를 최대화 해야 한다.
결국 이상치를 잘 다루는 게 중요하다.
위의 그림은 아웃라이어를 허용하지 않고 기준을 까다롭게 세운 모양으로, 이를 하드 마진(hard margin)
마진이 매우 작다 (= 아웃라이어를 허용하지 X) → 오버피팅(Overfitting) 문제가 발생할 수 있음
아래의 그림은 아웃라이어를 어느정도 포함하도록 기준을 너그럽게 세운 모양으로, 이를 소프트 마진(soft margin)
마진이 커진다 (= 아웃라이어를 너그럽게 허용) → 언더피팅(Underfitting) 문제가 발생할 수 있음
SVM은 우선 두 데이터를 정확히 구분하는 선을 찾지만 없을 때는 어느 정도 outlier를 무시하고 최적의 결정 경계를 찾음
커널 트릭(Kernel Trick)
빨간 점과 파란 점을 구분할 수 있는 linear line이 없다. 그렇다고 아웃라이어를 무시하고 그릴 수 있는 상황도 아니다.
이럴 때는 차원을 바꿔주어 결정 경계를 그릴 수 있다.
저차원 공간(low dimensional space)을 고차원 공간(high dimensional space)으로 매핑해주는 작업을 커널 트릭(Kernel Trick)이라고 한다.
커널 트릭을 활용하여 먼저 고차원 공간에서의 linear한 해를 구한 뒤 저차원 공간에서의 non linear한 해 를 구한 것
고차원 공간에서는 저차원 공간에서 보다 쉽게 linear separable line을 구할 수 있다. 처음부터 저차원 공간에서 non linear separable line을 구하려면 쉽지 않다.
sklearn SVM Parameter
kernel
linear, polynomial, sigmoid, rbf 등의 kernel을 선택할 수 있다.
다른 커널을 사용할 때는 주의가 필요하다. 머신러닝 모델이 약간의 오차를 허용해야 하는 건 너무나 당연한 거라 단순히 이상치 때문에 선형으로 분리할 수 없다고 판단해서는 안 된다. 일부 아웃라이어에 맞추기 위해 비선형으로 결정 경계를 만들 필요가 없다는 뜻이다. 모든 점을 올바르게 분리하는 선을 그린다는 건 결국 모델이 데이터에 과도하게 적합해진다는 즉, 오버피팅 된다는 것이니.
1. 다항식(Polynomial)
다항식(polynomial) 커널을 사용하여 이를 해결해보자.
2차원에서 x, y좌표로 이루어진 점들을 아래와 같은 식에 따라 3차원으로 표현
ex) [1, 2]인 점 계산
이를 3차원으로 그려보면 아래와 같다.
이렇게 다항식 커널을 사용하면 데이터를 더 높은 차원으로 변형하여 나타냄으로써 초평면의 결정 경계를 얻을 수 있다.
2. 방사 기저 함수 (RBF: Radial Bias Function)
rbf 커널 혹은 가우시안 커널
2차원의 점을 무한한 차원의 점으로 변환한다는 점만 알고 있도록 하자.
파라미터 C
C값이 클수록 하드마진, 작을수록 소프트마진
C의 최적 값은 데이터에 따라 다르기에 여러 값을 넣어보면서 모델을 검증해봐야 함
초록색: C가 큰 decision boundary - 하드 마진, 마진이 작아짐
주황색: C가 작은 decision boundary - 소프트 마진, 마진이 커짐
gamma
결정 경계를 얼마나 유연한게 그을 것인지를 결정
gamma 값을 높이면 학습 데이터에 많이 의존 → 결정 경계가 휘어짐 → 오버피팅
gamma 값을 낮추면 학습 데이터에 별로 의존하지 않음 → 결정 경계가 직선에 가까워짐 → 언더피팅
적당한 gamma
큰 gamma
낮은 gamma
정리
값이 커짐에 따라 C는 두 데이터를 정확히 구분하는 것에 초점이 두어져 있고, Gamma는 개별 데이터마다 decision boundary를 만드는 것에 초점이 두어져 있다.
실습
아래 출처에 더 다양한 실습이 있으니 참고할 것
출처
'Study > AI' 카테고리의 다른 글
[AI][ML]결정 트리(Decision Tree) (0) | 2022.08.11 |
---|---|
[AI][ML]나이브 베이즈(Naive Bayes) (0) | 2022.08.10 |
[AI][ML]k-최근접 이웃 알고리즘(KNN, K-Nearest Neighbor) (0) | 2022.08.09 |
[AI][ML]Logistic Regression(로지스틱 회귀) (0) | 2022.07.31 |
[AI][ML]회귀(Regression) (0) | 2022.07.29 |