서포트 벡터 머신, 즉 SVM(Support Vector Machine)은 N차원 공간에서 각 클래스 간의 거리를 최대화하는 최적의 선 또는 초평면을 찾아 데이터를 분류하는 지도형 머신 러닝 알고리즘이다.

선형 SVM은 데이터를 직선(또는 초평면)으로 나눌 수 있는 경우에 적용된다. 즉, 데이터가 선형적으로 구분 가능한 경우에 적합하다.
LinearSVC(또는 SGDClassifier(loss="hinge"))가 효율적class_weight="balanced"로 가중치를 자동 보정예시(분류)
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
model = make_pipeline(StandardScaler(),
LinearSVC(C=1.0, loss="squared_hinge", class_weight="balanced", random_state=42))
model.fit(X_train, y_train)
직선(평면)으로는 나누기 어려울 때, 커널 트릭으로 고차원에서 선형 분리를 구현해 비선형 경계를 만든다.
예시(RBF 분류)
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
rbf_svm = Pipeline([("scaler", StandardScaler()),
("svc", SVC(kernel="rbf", C=10, gamma="scale", class_weight="balanced"))])
rbf_svm.fit(X_train, y_train)
SVM의 회귀 버전인 SVR은 예측 곡선 주변에 ε-무감 허용대(튜브) 를 두고, 그 튜브 밖의 점에만 벌점을 준다. 결과적으로 “마진이 넓은, 과도하게 굽지 않은” 함수가 된다.
ϵ-튜브(ϵ-Tube(epsilon tube)): 예측 값과 실제 값의 오차가 이내인 경우 패널티를 부여하지 않는다.
커널 트릭(Kernel Trick): SVR은 선형 관계 뿐만 아니라, 비선형 관계도 커널 함수를 사용하여 표현할 수 있다.
SVR는 다음 최적화 문제를 푼다
예시(SVR)
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVR
svr = make_pipeline(StandardScaler(),
SVR(kernel="rbf", C=10, epsilon=0.1, gamma="scale"))
svr.fit(X_train, y_train)
커널(Kernel)은 SVM(Support Vector Machine)에서 비선형 데이터를 고차원 공간으로 변환하여 선형적으로 분리 가능하게 만드는 방법이다. 커널 함수는 입력 데이터를 더 높은 차원의 특징 공간으로 매핑(mapping)하여, SVM이 복잡한 데이터의 패턴을 학습할 수 있게 해준다.

→ SVM의 핵심은 두 클래스를 최대한 잘 구분할 수 있는 초평면(hyperplane)을 찾는 것이며, 커널 함수를 통해 이 작업을 고차원에서도 수행할 수 있게 된다.
1) 선형 커널(Linear Kernel): kernel="linear"
2) 다항 커널(Polynomial Kernel): kernel="poly"
3) RBF 커널(Radial Basis Function Kernel, 가우시안 커널): kernel="rbf"
4)시그모이드 커널(Sigmoid Kernel): kernel="sigmoid"
IBM: https://www.ibm.com
블로그, For a better world: https://roytravel.tistory.com/90