반응형
SVM을 사용해서 비선형적 데이터를 분류하는 또 다른 방법은 커널 SVM을 사용하는 것이다.
그림과 같은 샘플은 선형적으로 구분할 수 없다. 이러한 샘플을 분류할 때 커널 SVM을 사용한다.
선형적으로 구분하기 힘든 데이터는 매핑 함수를 이용해서 원본 데이터에 새로운 차원을 부여한다.
위 그림처럼 x1^2 + x2^2 라는 새로운 차원을 부여하면 구분되지 않았던 샘플들이 새로운 차원 덕분에 구분되는 것을 볼 수 있다. 그리고 이러한 고차원 공간에서 두 클래스를 구분하는 초평면을 원본 샘플의 차원으로 투영하면 비선형 결정 경계를 얻을 수 있다.
커널 SVM에서는 위와 동일한 방법을 사용하지는 않지만 기본 아이디어가 저렇다고 한다.
이러한 식으로 분류가 가능하다.
### 커널 SVM으로 붓꽃데이터 분류 ###
1
2
3
4
5
6
7
8
9
10
11
|
from sklearn.svm import SVC
svm = SVC(kernel='rbf', random_state=1, gamma=0.2, C=0.1)
# kernel 매개변수에 rbf를 추가해서 선형적인 데이터 분류
# C=1.0 : 슬랙변수 앞에 곱하는 값으로 C를 통해 마진 폭을 조정한다.
# gamma=0.2 : gamma값이 커질수록 결정경계가 샘플에 가까워진다.
svm.fit(X_train_std, y_train)
plot_decision_regions(X_combined_std, y_combined, classifier = svm,
test_idx=range(105, 150))
plt.show()
|
cs |


결과 그림에서처럼 gamma의 값이 클수록 결정경계가 샘플과 가까워지는 것을 볼 수 있다.
반응형
'머신러닝' 카테고리의 다른 글
최대가능도 방법 - Maximum likelihood estimation (0) | 2023.01.17 |
---|---|
선형회귀 - Linear Regression (3) | 2023.01.13 |
로지스틱 회귀 Logistic Regression (0) | 2022.11.17 |
사이킷런으로 퍼셉트론 학습 (0) | 2022.11.17 |
적응형 선형 뉴런 Adaline, 경사하강법 (0) | 2022.11.17 |