2021. 5. 4. 15:47ㆍMachine Learning
비선형 SVM 분류
출처 : ai.plainenglish.io/what-is-deep-learning-and-how-deep-learning-works-6f055125633d
5-1 장에서는 선형 데이터를 SVM으로 분류하는 방법에 대해서 살펴보았다.
비선형 데이터 역시 SVM으로 분류가 가능한데, 선형 회귀에서 비선형 데이터를 처리하던 것과 마찬가지로
기존 데이터에 다항 특성을 추가하여 SVM을 사용할 수 있다.
X, y = make_moons(n_samples=100, noise=0.15)
polynomial_svm_clf = Pipeline([
("poly_feathers", PolynomialFeatures(degree=3)),
("scaler", StandardScaler()),
("svm_clf", LinearSVC(C=10, loss="hinge"))
])
polynomial_svm_clf.fit(X,y)
Moon 데이터셋을 가져와서
1) 다항식 특성을 추가하고
2) 데이터를 표준화하고
3) 선형 SVM 모델로 훈련시킨다
이 과정을 파이프라인으로 연결시킨다.
for x_i in X:
if polynomial_svm_clf.predict([x_i])==1:
plt.scatter(x_i[0], x_i[1], c='red', marker='s')
else:
plt.scatter(x_i[0], x_i[1], c='blue', marker='o')
plt.grid(linestyle='dotted')
plt.show()
다항식 커널
SVM을 사용할 때, 커널 트릭이라는 기법을 사용할 수 있다.
커널 트릭은 실제로 다항 특성을 추가하지 않으면서 다항식 특성을 추가한 것과 비슷한 효과를 얻을 수 있다.
X, y = make_moons(n_samples=100, noise=0.15)
poly_kernel_svm_clf = Pipeline([
("scaler", StandardScaler()),
("svm_clf", SVC(kernel="poly",degree=3, coef0=1, C=5))
])
SVC 객체에 3차 다항식 커널을 통해 훈련시켰다. coef0 파라미터는 차수에 얼마나 영향을 받을지 조정한다.
다항 커널의 값과 규제의 정도를 달리 적용했을 때의 SVM 모델의 예측한 결과를 비교한 사진이다.
유사도 특성
비선형 데이터를 다루는 또다른 기법으로 유사도 특성을 들 수 있다.
유사도 특성이란, 유사도 함수를 통해 특정 샘플이 특정 랜드마크와 얼마나 밀접한지 측정된 값을
새로운 특성으로 추가한 것이다. 유사도 함수를 방사 기저 함수(Radial basis function)으로 정의해보겠다.
방사 기저 함수는 랜드마크로 지명된 샘플 x와 나머지 샘플들과의 유사도를 계산한다.
출처 : www.r-bloggers.com/2016/05/the-kernel-trick-in-support-vector-machines-seeing-similarity-in-more-intricate-dimensions/
이 유사도 특성이 기존 샘플들에 새로운 특성으로 추가된다. 특성이 추가된 샘플들을 SVM으로 훈련시킨 뒤 예측하면
랜드마크를 기준으로 샘플들의 군집이 형성된다.
데이터셋의 모든 샘플들을 랜드마크로 지정하면 샘플들을 선형적으로 구분하는 것이 가능해지는데,
샘플들의 수가 많다면, 그에 따라 다른 샘플들도 서로 데이터셋의 크기만큼 특성을 추가해야하므로,
특성의 수가 매우 많아진다는 단점이 있다.
가우시안 RBF 커널
유사도 특성을 추가하지 않고, 커널 트릭을 통해 유사도 특성을 추가한 것과 같은 효과를 누릴 수 있다.
rbf_kernel_svm_clf = Pipeline([
("scaler", StandardScaler()),
("svm_clf", SVC(kernel="rbf", gamma=5, C=1000))
])
rbf_kernel_svm_clf.fit(X,y)
gamma 값은 유사도 함수의 너비를 결정한다. gamma값이 클 경우, 유사도 함수가 좁아져서 샘플들의 영향 범위가
작아지고(과대적합 위험), gamma가 작을 경우 유사도 함수가 평탄해져서 샘플들의 영향 범위가 넓어져
군집이 넓어진다(과소적합 위험). 따라서 gamma가 규제의 역할을 한다.
SVM 분류의 결정
출처 : www.researchgate.net/figure/Principle-of-support-vector-machine-SVM-A-maximummargin-hyperplane-that-separates-the_fig6_222682226
서포트 벡터 머신(SVM)에서는 결정함수 wx를 계산하여 0보다 크면 양성클래스(1) 0보다 작으면 음성클래스(0)으로
분류한다. 서포트 벡터로 선정된 샘플은 이 결정함수의 값이 -1 혹은 1인 샘플들이다.
SVM은 이 마진이 최대한 커지도록 하는데, 이는 가중치 벡터의 노름 ||w||이 작아지는 결과를 낳게한다.
'Machine Learning' 카테고리의 다른 글
7-1. 앙상블 학습(Ensemble Learning) (0) | 2021.05.12 |
---|---|
6. 결정 트리(Decision Tree) (0) | 2021.05.04 |
5-1. 서포트 벡터 머신(SVM) - 선형 SVM 분류 (0) | 2021.05.04 |
4-2. 소프트맥스 회귀(Softmax Regression) (1) | 2021.05.02 |
4-1. 로지스틱 회귀(Logistic Regression) (0) | 2021.05.02 |