소개
이 튜토리얼에서는 분류, 회귀 및 이상치 탐지에 사용되는 지도 학습 방법인 서포트 벡터 머신 (SVM) 에 대해 배웁니다. SVM 은 고차원 공간에서 효과적이며, 차원의 수가 샘플의 수보다 클 때도 잘 작동할 수 있습니다.
SVM 의 장점으로는 고차원 공간에서의 효율성, 메모리 효율성, 다양한 커널 함수의 활용성이 있습니다. 그러나 과적합을 피하고 주어진 문제에 적합한 커널과 정규화 항을 선택하는 것이 중요합니다.
이 튜토리얼에서는 다음 주제를 다룰 것입니다.
- SVM 을 이용한 분류
- 다중 클래스 분류
- 점수 및 확률
- 불균형 문제
- SVM 을 이용한 회귀
- 밀도 추정 및 신선도 탐지
VM 팁
VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근할 수 있습니다.
때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.
학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.
SVM 을 이용한 분류
- 필요한 라이브러리를 가져옵니다.
from sklearn import svm
- 학습 샘플
X와 클래스 레이블y를 정의합니다.
X = [[0, 0], [1, 1]]
y = [0, 1]
SVC분류기의 인스턴스를 생성하고 데이터를 맞춥니다.
clf = svm.SVC()
clf.fit(X, y)
- 학습된 모델을 사용하여 새로운 값을 예측합니다.
clf.predict([[2., 2.]])
다중 클래스 분류
SVC및NuSVC분류기는 "일대일" 접근 방식을 사용하여 다중 클래스 분류에 사용할 수 있습니다.
X = [[0], [1], [2], [3]]
Y = [0, 1, 2, 3]
clf = svm.SVC(decision_function_shape='ovo')
clf.fit(X, Y)
dec = clf.decision_function([[1]])
점수 및 확률
- SVM 은 직접 확률 추정값을 제공하지 않지만,
probability매개변수를True로 설정하여 확률 추정을 활성화할 수 있습니다.
clf = svm.SVC(probability=True)
clf.fit(X, y)
- 그런 다음 각 클래스의 확률을 얻으려면
predict_proba메서드를 사용할 수 있습니다.
clf.predict_proba([[2., 2.]])
- 확률 추정은 비용이 많이 들고 교차 검증이 필요하므로 신중하게 사용하십시오.
불균형 문제
- SVM 은
class_weight매개변수를 조정하여 불균형 문제를 처리할 수 있습니다.
clf = svm.SVC(class_weight={1: 10})
clf.fit(X, y)
SVM 을 이용한 회귀
- 회귀 문제의 경우, SVM 은
SVR클래스를 사용하여 수행할 수 있습니다.
X = [[0, 0], [1, 1]]
y = [0.5, 2.5]
regr = svm.SVR()
regr.fit(X, y)
regr.predict([[1, 1]])
밀도 추정 및 신규성 탐지
- SVM 은
OneClassSVM클래스를 사용하여 밀도 추정 및 신규성 탐지에도 활용될 수 있습니다.
clf = svm.OneClassSVM()
clf.fit(X)
clf.predict(X)
요약
이 튜토리얼에서는 서포트 벡터 머신 (SVM) 과 분류, 회귀, 밀도 추정, 신규성 탐지 분야의 응용에 대해 배웠습니다. 분류, 다중 분류, 점수 및 확률, 불균형 문제, 회귀 및 밀도 추정 단계를 다루었습니다. SVM 은 머신 러닝에서 강력한 도구이며 다양한 시나리오에서 정확한 예측을 달성하기 위해 사용될 수 있습니다.