서포트 벡터 머신 (SVM)
분류, 회귀 및 이상치 탐지를 위한 SVM(Support Vector Machines)의 강력한 기능을 실제 응용 분야 및 통찰력과 함께 경험해 보세요.
서포트 벡터 머신(SVM)은 강력하고 다재다능한
지도 학습 알고리즘으로
이미지 분류 및 회귀 작업에 주로 사용됩니다.
단순히 데이터에 선을 맞추는 일부 알고리즘과 달리 SVM은 데이터 포인트를 가장 잘 구분하는 최적의 하이퍼플레인, 즉 결정
경계)를 찾아 데이터 포인트를 서로 다른 클래스로 가장 잘 구분합니다. SVM의 가장 큰 특징은 다음과 같습니다.
결정 경계와 각 클래스에서 가장 가까운 데이터 포인트 사이의 거리인 마진을 최대화하는 것입니다.
클래스. 이 넓은 분리에 우선순위를 둠으로써, 이 모델은 보이지 않는 데이터에 대해 더 나은 일반화를 달성하여 효과적으로
더 단순한 선형 분류기에 비해 과적합의 위험을 줄입니다.
선형 분류기에 비해 과적합의 위험을 효과적으로 줄입니다.
SVM의 핵심 메커니즘
SVM의 작동 방식을 이해하려면 각 차원이 특정 속성을 나타내는 다차원 공간에 그려진 데이터 포인트를 시각화하면 도움이 됩니다.
각 차원은 특정 속성이나 특징을 나타냅니다.
-
최적의 하이퍼플레인: 이 알고리즘은 입력 변수 공간을 분할하는 평면을 식별합니다. 2차원에서는
차원에서는 선, 3차원에서는 평면, 그 이상 차원에서는 하이퍼플레인입니다. 목표는
모든 클래스의 가장 가까운 데이터 포인트에서 최대 거리를 유지하는 특정 하이퍼플레인을 찾는 것입니다.
-
지원 벡터: 의사 결정 경계에 가장 가까운 특정 데이터 포인트입니다. 그것들은
"지원 벡터"라고 불리는데, 이는 기본적으로 하이퍼평면의 방향과 위치를 지원하거나 정의하기 때문입니다.
지지 벡터라고 합니다. 다른 데이터 포인트를 제거해도 경계는 동일하게 유지되지만 지원 벡터를 이동하면 모델이 변경됩니다.
모델이 변경됩니다. 이러한 벡터에 대한 자세한 내용은
Scikit-learn SVM 설명서를 참조하세요.
-
커널 트릭: 실제 데이터는 선형적으로 분리할 수 있는 경우가 거의 없습니다. SVM은 커널 트릭이라는 기술을 사용해 이 문제를 해결합니다.
커널 트릭이라고 불리는 기법을 사용하여 이 문제를 해결합니다.
클래스를 분할합니다. 일반적인 커널에는 방사형 기저 함수(RBF)와 다항식 커널이 포함되며, 이 커널을 사용하면
모델에서 흔히 볼 수 있는 복잡한 비선형 관계를 처리할 수 있습니다.
자연어 처리(NLP)
작업을 처리할 수 있습니다.
실제 애플리케이션
최신 딥러닝 아키텍처가 등장하기 전에는
딥 러닝 아키텍처가 등장하기 전에는 SVM이
많은 컴퓨터 비전 및 패턴
인식 문제의 표준이었습니다.
-
생물정보학 및 헬스케어: SVM은 다음 분야에서 중요한 역할을 합니다.
의료 분야의 AI, 특히
단백질 원격 상동성 검출 및 마이크로어레이 유전자 기반 암 분류와 같은 분류 문제
같은 분류 문제에서 특히 중요한 역할을 합니다. 소수의 샘플로 고차원 데이터를 처리할 수 있기 때문에 복잡한 생물학적 데이터 세트의
분석하는 데 이상적입니다.
-
텍스트 분류: 데이터 분석 분야에서
데이터 분석 분야에서 SVM은 텍스트 분류와
및 하이퍼텍스트 분류에 광범위하게 사용됩니다. 표준 귀납적 텍스트 분류 설정에서 라벨링된 훈련 인스턴스의 필요성을 크게 줄여주며
귀납적 텍스트 분류 설정에서 라벨링된 학습 인스턴스의 필요성을 크게 줄여 스팸 탐지 및 정서
분석과 같은 애플리케이션에 효율적입니다.
-
필기 인식: SVM은 역사적으로 손으로 쓴 숫자 인식 작업에서 매우 뛰어난 성능을 보였습니다.
인식 작업에서 뛰어난 성능을 보였습니다.
MNIST 데이터 세트에서 볼 수 있습니다. 반면
컨볼루션 신경망(CNN)
이 대부분 그 자리를 대신했지만, SVM은 벤치마킹이나 학습 데이터가 제한된
훈련 데이터.
SVM 분류기 구현하기
최신 작업은 종종
Ultralytics YOLO11 모델을 사용합니다,
SVM은 구조화된 데이터 또는 추출된 특징 위에 최종 분류 계층으로 강력한 도구로 남아 있습니다. 아래
은 널리 사용되는 scikit-learn 라이브러리를 사용하여 간단한 분류기를 훈련할 수 있습니다.
from sklearn import svm
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
# Generate synthetic classification data
X, y = make_classification(n_features=4, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# Initialize and train the Support Vector Classifier
clf = svm.SVC(kernel="linear", C=1.0)
clf.fit(X_train, y_train)
# Display the accuracy on the test set
print(f"Accuracy: {clf.score(X_test, y_test):.2f}")
SVM과 관련 알고리즘 비교
SVM을 다른 머신러닝 기법과 구별하면 예측 모델링 프로젝트에 적합한
적합한 도구를 선택하는 데 도움이 됩니다.
-
로지스틱 회귀: 둘 다 선형 분류기이지만 최적화 목표는 다릅니다. 로지스틱 회귀는 관찰된 데이터의 가능성을 최대화하는 반면
(확률적) 가능성을 최대화하는 반면, SVM은 클래스 간의 기하학적 마진을 최대화합니다. SVM은 일반적으로 클래스가 잘 분리되어 있을 때
클래스가 잘 분리된 경우에 더 효과적인 반면, 로지스틱 회귀는 보정된 확률을 제공합니다.
-
K-네이버 이웃(KNN): KNN은 비모수적, 인스턴스 기반 학습자로, 이웃의 다수 클래스를 기반으로 점을 분류합니다.
이웃을 기반으로 점을 분류합니다. 이와 대조적으로 SVM은 전역 경계를 학습하는 파라메트릭 모델입니다. SVM은 일반적으로 학습이 완료되면 더 빠른
추론 지연 시간이 더 빠릅니다.
KNN과 달리 전체 데이터 세트를 저장할 필요가 없기 때문입니다.
-
의사 결정 트리: 의사 결정 트리는 계층적 규칙을 사용하여 데이터 공간을 직사각형 영역으로 분할합니다. SVM은 (커널을 통해) 의사 결정 트리가 접근하기 어려운 복잡한
(커널을 통한) 곡선형 의사 결정 경계를 생성할 수 있으며, 의사 결정 트리가 지나치게 깊고 과적합하기 쉬운
과적합이 발생하기 쉽습니다.
-
딥러닝(예: YOLO11): SVM은 도메인 전문가가 수작업으로 진행하는
기능 엔지니어링에 크게 의존하며, 도메인 전문가가
관련 입력을 선택하는 수동 피처 엔지니어링에 의존합니다. 다음과 같은 최신 모델은 YOLO11 과 같은 최신 모델은
원시 픽셀에서 직접 자동 특징 추출
픽셀로부터 직접 자동 특징 추출에 탁월하여 실시간
객체 감지 및
인스턴스 분할과 같은 복잡한 작업에 탁월합니다.
기초 이론에 관심이 있는 분들을 위해 다음 논문을 참고하세요.
코르테스와 바프닉(1995)의 논문은 오늘날 사용되는 소프트 마진 SVM의 수학적
오늘날 사용되는 소프트 마진 SVM의 수학적 토대를 제공합니다.