Support Vector Machine (SVM)은 한 클래스의 데이터 점을 다른 클래스의 데이터 점으로부터 가장 잘 분리하는 초평면을 찾는 지도 머신러닝 알고리즘입니다.
Support Vector Machine (SVM)은 신호 처리, NLP(자연어 처리), 음성 및 영상 인식과 같은 응용 분야의 분류 문제와 회귀 문제에 자주 사용되는 지도 머신러닝 알고리즘입니다. SVM 알고리즘의 목표는 한 클래스의 데이터 점을 다른 클래스의 데이터 점으로부터 가능한 한 가장 잘 구분해내는 초평면을 찾는 것입니다. 이 초평면은 2차원 공간에서는 선이 될 수 있고 n차원 공간에서는 평면이 될 수 있습니다. 여기서 n은 데이터셋의 각 관측값에 대한 특징의 수입니다. 데이터에서 클래스를 분리하는 초평면은 여러 개가 존재할 수 있습니다. SVM 알고리즘에 의해 파생되는 최적의 초평면은 두 클래스 간의 마진을 최대화하는 초평면입니다.
마진은 내부에 데이터 점이 없는 초평면에 평행인 슬래브의 최대 너비입니다. 이 평행 슬래브의 경계를 표시하며 분리 초평면에 가장 가까운 데이터 점들이 서포트 벡터입니다. 서포트 벡터는 분리 초평면의 위치를 식별하는 훈련 관측값 중 일부를 가리킵니다.
SVM 모델링의 워크플로
Support Vector Machine (SVM) 모델을 구축하는 통상적인 워크플로에는 다음과 같은 단계가 포함됩니다.
데이터 전처리
특징 추출은 원본 데이터셋의 정보를 유지하면서 원시 데이터를 처리 가능한 숫자형 특징으로 변환합니다. PCA(주성분 분석)와 같은 차원 축소 기법은 가장 중요한 정보를 유지하면서 특징의 수를 줄입니다. 이 접근법을 통해 Support Vector Machine (SVM) 모델이 강인해지며 복잡한 데이터셋을 처리할 수 있습니다.
데이터를 처리한 후에는 데이터를 훈련 세트와 테스트 세트로 나눕니다. 교차 검증을 사용하여 데이터를 최적으로 분할할 수 있습니다. SVM 모델은 훈련 데이터셋으로 훈련되며, 테스트 데이터셋은 처음 보는 데이터에 대한 모델의 성능을 평가하는 데 사용됩니다.
커널 선택
데이터 분포를 기준으로 적절한 커널 함수(선형, 다항식, RBF 등)를 선택합니다. 선형 분리가 불가능한 경우, 커널 함수는 데이터를 더 높은 차원 공간으로 변환하여 클래스를 더 쉽게 분리할 수 있게 합니다.
SVM의 종류 | 머서 커널 | 설명 |
가우스 또는 RBF(방사형 기저 함수) | \( K({x_1},{x_2})=exp(−‖{x_1}−{x_2}‖^2/2{σ^2}) \) | 단일 클래스 학습. \( σ \)는 커널의 너비입니다. |
선형 | \( K({x_1},{x_2})={x_1}T{x_2} \) | 2-클래스 학습. |
다항식 | \( K({x_1},{x_2})=({x_1}T{x_2}+1)ρ \) | \( ρ \)는 다항식의 차수입니다. |
시그모이드 | \( K({x_1},{x_2})=tanh({β_0}{x_1}T{x_2}+{β_1}) \) | 특정 \( β_0 \) 및 \( β_1 \) 값의 경우에만 머서 커널이 됩니다. |
SVM 모델 훈련
훈련 데이터셋을 사용해 SVM 모델을 구축하고 훈련시킬 수 있습니다. Support Vector Machine (SVM)을 훈련시키는 것은 클래스 간 마진을 최대화하는 초평면에 피팅되도록 2차 최적화 문제를 푸는 것에 상응합니다. Support Vector Machine (SVM) 알고리즘은 서포트 벡터를 식별하고 최적의 초평면을 파악할 수 있습니다. 이 최적의 초평면을 기준으로, 훈련된 모델을 사용해 처음 보는 새로운 데이터 점을 분류할 수 있습니다.
SVM 모델 평가
테스트 데이터셋을 사용해 모델을 테스트할 수 있습니다. 정확도, 혼동행렬, 정밀도, F1 점수 또는 재현율 등의 메트릭을 사용해 모델 성능을 평가할 수 있습니다.
하이퍼파라미터 조정
하이퍼파라미터를 조정해 모델 성능을 개선할 수 있습니다. 확률 모델을 사용하는 베이즈 최적화 같은 검색 기법을 사용해 최적의 하이퍼파라미터를 찾을 수 있습니다.
SVM 분류기의 유형
선형 Support Vector Machine (SVM)
선형 SVM은 정확히 두 클래스로 선형적으로 분리할 수 있는 데이터에 사용됩니다. 이 유형의 Support Vector Machine (SVM) 알고리즘은 선형 결정 경계를 사용해 두 클래스의 모든 데이터 점을 분리합니다.
SVM 알고리즘은 선형적으로 분리할 수 있는 문제에 대해서만 이러한 초평면을 찾을 수 있습니다. 데이터를 분리할 수 없는 대부분의 복잡한 작업의 경우, Support Vector Machine (SVM)은 소프트 마진을 사용하는데, 이는 모든 데이터 점을 분리하지는 않더라도 많은 데이터 점을 분리하는 초평면을 의미합니다. 이 알고리즘은 소프트 마진을 최대화하여 적은 수의 오분류를 허용합니다.

소프트 마진 SVM은 클래스 -1(파란색)에서 데이터 점 1개의 오분류를 허용합니다. (MATLAB 문서 보기.)
비선형 Support Vector Machine (SVM)
SVM은 비선형 분류 및 회귀 작업에도 사용됩니다. 비선형적으로 분리할 수 있는 데이터에 대해 비선형 Support Vector Machine (SVM)은 커널 함수를 사용해 특징을 변환합니다. 변환된 특징의 개수는 서포트 벡터의 개수에 따라 정해집니다.
커널 함수는 데이터를 다른 공간으로 매핑하는데 종종 고차원 공간으로 매핑하곤 합니다. 이러한 변환은 복잡한 비선형 결정 경계를 매핑된 고차원 특징 공간에 있는 선형 경계로 간소화하여 클래스를 더 쉽게 분리할 수 있도록 합니다. 흔히 커널 트릭이라고 하는 이 과정에서는 계산 집약적인 데이터의 명시적인 변환 작업이 필요하지 않습니다. 비선형 데이터에 대한 커널 함수로는 다항식, 방사형 기저 함수(가우스), 다층 퍼셉트론 또는 시그모이드(신경망) 등이 있습니다.
서포트 벡터 회귀
SVM은 주로 분류 작업에 사용되지만, 회귀 작업에도 적용할 수 있습니다. SVM 회귀는 커널 함수를 활용하므로 비모수적 기법으로 간주됩니다. 응답(출력값) 변수와 예측(입력값) 변수 간의 관계가 알려진 선형 회귀와 달리, SVR(서포트 벡터 회귀)의 목표는 이러한 관계를 찾는 것입니다. SVR은 예측 오차를 최소한으로 유지하는 동시에 지정된 허용오차 마진(통상 '마진'이라고 함) 내에서 데이터에 가장 적합한 초평면을 식별하여 이를 수행합니다.
SVR은 이산 클래스 대신 연속 값을 예측하는 것을 목표로 한다는 점을 제외하고, SVR의 작동 원리는 Support Vector Machine (SVM) 분류기의 작동 원리와 동일합니다. SVR은 서로 다른 커널 유형을 사용해 선형 및 비선형 데이터를 처리할 수 있습니다. 커널 트릭을 사용하면 데이터를 고차원 공간으로 매핑하여 비선형 회귀를 수행할 수 있습니다.
SVM의 이점
SVM은 머신러닝 및 인공 지능에서 가장 널리 사용되는 지도 학습 알고리즘으로, 고차원 데이터 및 복잡한 결정 경계를 효과적으로 처리할 수 있기 때문입니다. Support Vector Machine (SVM)의 주요 이점은 다음과 같습니다.
- 데이터 다용성. SVM은 고차원 데이터셋과 비정형 데이터셋을 처리할 때 특히 효과적입니다. Support Vector Machine (SVM)은 선형 및 비선형 데이터에 다 사용할 수 있으므로, 많은 응용 사례에서 유용합니다.
- 강인성. SVM은 훈련 데이터에 대한 낮은 오차율 실현과 가중치 노름 최소화 사이의 장단점을 절충하는 정규화 파라미터로 인해 특히 고차원 공간에서 과적합이 발생할 가능성이 낮습니다.
- 해석 가능성. 선형 SVM 분류기에서 생성한 결정 경계는 명확하고 해석 가능하므로, 모델 예측을 이해하고 정보에 입각한 결정을 내리는 데 도움이 됩니다.
- 정확도. SVM은 특히 차원 수가 표본 수를 초과하는 경우 작은 데이터셋에 대해 매우 정확하고 효과적입니다.
SVM 응용 사례
앞서 언급한 이점으로 인해 Support Vector Machine (SVM)은 광범위한 응용 사례에서 데이터 모델링에 매력적인 선택지가 됩니다.
- 자연어 처리. SVM은 텍스트를 범주로 분류하여 스팸 감지 및 감성 분석 같은 NLP 작업에 폭넓게 사용됩니다.
- 컴퓨터 비전. SVM은 손글씨 인식 및 얼굴 또는 객체 검출 같은 영상 분류 작업에 사용되며, 종양의 유무를 나타낼 수 있는 MRI 영상을 분류하는 의료 진단 툴로 사용됩니다.
- 신호 처리. SVM은 이상 감지, 음성 인식 및 생체신호 분석 등의 작업을 위한 신호 데이터에도 적용됩니다.
- 이상 감지. SVM을 이상 데이터에서 정상 데이터를 분리하는 초평면을 찾도록 훈련시킬 수 있습니다.
- 생물정보학. SVM은 단백질 분류 및 유전자 발현 프로파일 분석을 위해 생물학 데이터 분류에 적용됩니다.

SVM 분류기를 사용해 분류한 초분광 영상. (MATLAB 코드 보기.)
SVM의 단점
모든 머신러닝 모델과 마찬가지로, Support Vector Machine (SVM)에도 한계가 있습니다.
- 대규모 데이터셋. SVM은 높은 계산 비용 및 메모리 요구사항으로 인해 대규모 데이터셋을 처리하는 데 적합하지 않습니다. 커널 트릭을 사용하면 Support Vector Machine (SVM)으로 비선형 데이터를 처리할 수 있지만, 계산하는 데 많은 비용이 듭니다. SVM은 2차 최적화 문제를 풀어야 합니다. 대규모 데이터셋의 경우, 커널 행렬도 규모가 커지며 메모리 요구사항이 증가하게 됩니다.
- 잡음이 있는 데이터. SVM은 클래스 간의 마진을 최대화하는 것이 목표이므로 잡음이 있는 데이터에는 적합하지 않습니다.
- 해석 가능성. 선형 SVM은 해석 가능하지만, 비선형 SVM은 그렇지 않습니다. 비선형 SVM에 수반되는 복잡한 변환은 결정 경계를 해석하기 어렵게 만듭니다.
MATLAB® 및 Statistics and Machine Learning Toolbox™를 사용해 분류 및 회귀에 SVM 모델로 훈련, 평가, 예측을 수행할 수 있습니다. 특징 선택 및 하이퍼파라미터 조정부터 교차 검증 및 성능 메트릭에 이르기까지, MATLAB은 효율적인 Support Vector Machine (SVM)을 구축하기 위한 툴을 제공합니다. MATLAB의 로우코드 머신러닝 앱을 사용하면 코드를 직접 작성하지 않고도 SVM을 대화형 방식으로 훈련 및 평가하고, C/C++ 코드를 생성하며, CPU 및 마이크로컨트롤러에 배포할 수 있습니다.
데이터 전처리
정확한 결과를 보장하려면 데이터에 이상값이 없어야 하며 모델 훈련에 사용할 준비가 되어 있어야 합니다. MATLAB을 사용하면 누락값 및 이상값 처리, 데이터 정규화, 데이터 평활화 같은 정리 작업을 수행할 수 있습니다. 데이터 전처리 라이브 편집기 작업 또는 데이터 정리기 앱을 사용하면 데이터를 대화형 방식으로 전처리할 수 있습니다. 이러한 앱을 통해 코드를 생성할 수도 있습니다.
MATLAB은 시계열 데이터, 텍스트, 영상, 오디오 등의 다양한 데이터 유형을 지원합니다. Audio Toolbox™ 및 Signal Processing Toolbox™ 같은 특화된 툴박스는 특징 추출 기능을 제공하여 사용자는 다양한 영역에서 두드러진 특징을 측정하고, 중간 계산을 재사용할 수 있습니다.
SVM 모델 훈련

분류 학습기 앱을 사용해 생성된 검증 혼동행렬. (MATLAB 코드 보기.)
이 앱은 C/C++ 코드를 생성할 수 있고 SVM 모델을 내보낼 수 있으므로, 사용자는 손쉽게 결과를 공유하고 앱 외부에서 이러한 결과를 추가로 살펴볼 수 있습니다. 예를 들어, 분류 학습기 앱 또는 회귀 학습기 앱에서 Support Vector Machine (SVM) 모델을 내보낸 후 이를 실험 관리자 앱으로 가져와서 훈련 데이터 변경, 하이퍼파라미터 검색 범위 조정, 사용자 지정 훈련 실험 실행 등의 추가 작업을 수행할 수 있습니다.
예측 수행
SVM 모델을 훈련시킨 후 예측 함수를 사용하여 레이블을 예측할 수 있습니다. ClassificationSVM Predict 또는 RegressionSVM Predict 블록을 사용하여 Simulink에서 훈련된 SVM 모델을 시뮬레이션할 수 있습니다.
결과 평가
confusionchart
및 rocmetrics
같은 함수를 사용하여 프로그래밍 방식으로 또는 대화형 방식으로 SVM 모델의 성능을 평가할 수 있습니다. 머신러닝 앱을 사용하면 다양한 모델의 성능을 비교하여 데이터에 가장 적합한 모델을 찾을 수 있습니다.
분류 학습기 앱에서 분류기를 훈련시킨 후 정확도를 기준으로 모델을 비교하고, 클래스 예측을 플로팅하여 분류기 결과를 시각화하며, 혼동행렬, ROC 곡선 또는 정밀도-재현율 곡선을 사용하여 성능을 확인할 수 있습니다.
이와 마찬가지로 회귀 학습기 앱에서는 모델 메트릭을 기준으로 모델을 비교하고, 응답 플롯에서 또는 실제 응답 대비 예측 응답을 플로팅하여 회귀 결과를 시각화하며, 잔차 플롯을 사용하여 모델을 평가할 수 있습니다.

회귀 학습기 앱에서 훈련된 회귀 모델에 대한 예측 응답과 실제 응답을 보여주는 플롯. 점이 선에 더 가까울수록 예측이 향상됩니다. (MATLAB 코드 보기.)
자료
문서, 예제, 비디오 등을 통해 여러분의 지식을 확장할 수 있습니다.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)