logo

SVM(지원 벡터 머신) 알고리즘

SVM(Support Vector Machine)은 선형 또는 비선형 분류, 회귀, 이상치 감지 작업에 사용되는 강력한 기계 학습 알고리즘입니다. SVM은 텍스트 분류, 이미지 분류, 스팸 감지, 필기 식별, 유전자 발현 분석, 얼굴 감지, 이상 감지 등 다양한 작업에 사용될 수 있습니다. SVM은 고차원 데이터와 비선형 관계를 관리할 수 있기 때문에 다양한 애플리케이션에 적용 가능하고 효율적입니다.

SVM 알고리즘은 대상 기능에서 사용할 수 있는 다양한 클래스 간의 최대 분리 초평면을 찾으려고 하기 때문에 매우 효과적입니다.



자바 문자열 길이

서포트 벡터 머신

SVM(지원 벡터 머신)은 지도 머신러닝 분류와 회귀 모두에 사용되는 알고리즘입니다. 회귀 문제도 언급하지만 분류에 가장 적합합니다. SVM 알고리즘의 주요 목적은 특징 공간에서 서로 다른 클래스의 데이터 포인트를 분리할 수 있는 N차원 공간에서 최적의 초평면을 찾는 것입니다. 초평면은 서로 다른 클래스의 가장 가까운 점 사이의 마진이 가능한 한 최대가 되도록 시도합니다. 초평면의 차원은 특징의 수에 따라 달라집니다. 입력 특성의 수가 2개인 경우 초평면은 단순한 선입니다. 입력 특징의 수가 3개인 경우 초평면은 2차원 평면이 됩니다. 특징의 수가 3개를 초과하면 상상하기 어려워집니다.

두 개의 독립변수 x를 생각해 봅시다.1, x2,파란색 원 또는 빨간색 원인 하나의 종속 변수가 있습니다.

선형 분리 가능한 데이터 포인트



위 그림에서 여러 개의 선이 있다는 것이 매우 분명합니다. (여기서 초평면은 두 개의 입력 특성만 고려하기 때문에 선입니다. x1, x2) 데이터 포인트를 분리하거나 빨간색과 파란색 원을 분류합니다. 그렇다면 데이터 포인트를 분리하는 최상의 선 또는 일반적으로 최상의 초평면을 어떻게 선택합니까?

SVM은 어떻게 작동하나요?

최고의 초평면으로서 합리적인 선택 중 하나는 두 클래스 사이의 가장 큰 분리 또는 마진을 나타내는 것입니다.

두 클래스의 데이터를 분리하는 다중 초평면

여러 초평면이 두 클래스의 데이터를 분리합니다.



따라서 우리는 각 측면에서 가장 가까운 데이터 포인트까지의 거리가 최대화되는 초평면을 선택합니다. 그러한 초평면이 존재한다면 그것은 다음과 같이 알려져 있습니다. 최대 마진 초평면/하드 마진 . 따라서 위 그림에서 L2를 선택합니다. 아래와 같은 시나리오를 생각해 봅시다

이상값이 있는 데이터에 대한 초평면 선택

이상값이 있는 데이터에 대한 초평면 선택

여기 빨간 공의 경계에 파란 공이 하나 있습니다. 그렇다면 SVM은 데이터를 어떻게 분류할까요? 간단 해! 빨간색 공의 경계에 있는 파란색 공은 파란색 공의 특이치입니다. SVM 알고리즘은 이상값을 무시하고 마진을 최대화하는 최적의 초평면을 찾는 특성을 가지고 있습니다. SVM은 이상치에 강합니다.

가장 최적화된 초평면(Hyperplane)

가장 최적화된 초평면(Hyperplane)

따라서 이러한 유형의 데이터 포인트에서 SVM이 수행하는 작업은 이전 데이터 세트에서 수행된 것처럼 최대 마진을 찾고 포인트가 마진을 교차할 때마다 페널티를 추가하는 것입니다. 따라서 이러한 유형의 경우 마진을 마진이라고 합니다. 부드러운 여백 . 데이터 세트에 약간의 여유가 있는 경우 SVM은 최소화하려고 시도합니다. (1/마진+∧(∑페널티)) . 힌지 손실은 일반적으로 사용되는 페널티입니다. 위반이 없으면 힌지 손실이 없습니다. 위반하는 경우 위반 거리에 비례하여 힌지 손실이 발생합니다.

지금까지 우리는 선형적으로 분리 가능한 데이터(파란색 공과 빨간색 공의 그룹은 직선/선형으로 분리 가능)에 대해 이야기했습니다. 데이터를 선형적으로 분리할 수 없으면 어떻게 해야 하나요?

분류를 위한 원본 1D 데이터세트

분류를 위한 원본 1D 데이터세트

우리의 데이터가 위 그림에 표시되어 있다고 가정해 보겠습니다. SVM은 다음을 사용하여 새 변수를 생성하여 이 문제를 해결합니다. 핵심 . 우리는 점 x를 부릅니다.그 라인에서 우리는 새로운 변수 y를 생성합니다원점으로부터의 거리의 함수로 표시됩니다. 따라서 이를 플롯하면 아래와 같은 결과가 나타납니다.

1D 데이터를 2D로 매핑하여 두 클래스를 분리할 수 있음

1D 데이터를 2D로 매핑하여 두 클래스를 분리할 수 있음

이 경우 새 변수 y는 원점으로부터의 거리 함수로 생성됩니다. 새로운 변수를 생성하는 비선형 함수를 커널이라고 합니다.

지원 벡터 머신 용어

    초평면(Hyperplane): 초평면은 특징 공간에서 서로 다른 클래스의 데이터 포인트를 분리하는 데 사용되는 결정 경계입니다. 선형 분류의 경우 선형 방정식(예: wx+b = 0)이 됩니다. 지원 벡터: 지원 벡터는 초평면에 가장 가까운 데이터 점으로, 초평면과 마진을 결정하는 데 중요한 역할을 합니다. 마진(Margin) : 마진은 서포트 벡터와 초평면 사이의 거리입니다. 서포트 벡터 머신 알고리즘의 주요 목적은 마진을 최대화하는 것입니다. 마진이 넓을수록 분류 성능이 좋다는 것을 의미합니다. 커널(Kernel) : 커널(Kernel)은 SVM에서 원본 입력 데이터 포인트를 고차원 특징 공간으로 매핑하는 데 사용되는 수학 함수로, 데이터 포인트가 있더라도 초평면을 쉽게 찾을 수 있습니다. 원래 입력 공간에서는 선형으로 분리할 수 없습니다. 일반적인 커널 함수 중 일부는 선형, 다항식, 방사형 기저 함수(RBF) 및 시그모이드입니다. 하드 마진: 최대 마진 초평면 또는 하드 마진 초평면은 잘못된 분류 없이 다양한 범주의 데이터 포인트를 적절하게 분리하는 초평면입니다. 소프트 마진: 데이터가 완벽하게 분리되지 않거나 이상값이 포함된 경우 SVM은 소프트 마진 기술을 허용합니다. 각 데이터 포인트에는 소프트 마진 SVM 공식에 의해 도입된 여유 변수가 있으며, 이는 엄격한 마진 요구 사항을 완화하고 특정 오분류 또는 위반을 허용합니다. 마진 증가와 위반 감소 사이의 절충안을 찾습니다.C: 마진 최대화 및 오분류 벌금은 SVM의 정규화 매개변수 C에 의해 균형을 이룹니다. 마진을 초과하거나 데이터 항목을 잘못 분류한 경우 이에 대한 페널티가 결정됩니다. C 값이 클수록 더 엄격한 페널티가 적용되어 마진이 작아지고 오분류가 줄어들 수 있습니다. 힌지 손실: SVM의 일반적인 손실 함수는 힌지 손실입니다. 잘못된 분류나 마진 위반을 처벌합니다. SVM의 목적 함수는 정규화 항과 결합하여 형성되는 경우가 많습니다. 이중 문제: 지원 벡터와 관련된 라그랑주 승수를 찾아야 하는 최적화 문제의 이중 문제를 사용하여 SVM을 해결할 수 있습니다. 이중 공식을 사용하면 커널 트릭을 사용하고 보다 효과적인 컴퓨팅을 사용할 수 있습니다.

서포트 벡터 머신의 수학적 직관

+1과 -1로 표시된 두 클래스가 있는 이진 분류 문제를 생각해 보세요. 입력 특징 벡터 X와 해당 클래스 라벨 Y로 구성된 훈련 데이터 세트가 있습니다.

선형 초평면의 방정식은 다음과 같이 쓸 수 있습니다.

w^Tx+ b = 0

벡터 W는 초평면에 대한 법선 벡터를 나타냅니다. 즉, 초평면에 수직인 방향입니다. 매개변수 방정식에서 법선 벡터를 따라 원점으로부터 초평면의 오프셋 또는 거리를 나타냅니다. ~ 안에 .

데이터 포인트 x_i와 결정 경계 사이의 거리는 다음과 같이 계산할 수 있습니다.

d_i = frac{w^T x_i + b}

어디에서 ||w|| 는 가중치 벡터 w의 유클리드 노름을 나타냅니다. 유클리드 노름법선 벡터 W의

선형 SVM 분류기의 경우:

배열의 C 문자열

최적화:

    하드 마진 선형 SVM 분류기의 경우:

underset{w,b}{	ext{최소화}}frac{1}{2}w^Tw =underset{W,b}{	ext{최소화}}frac{1}{2}left | w 
ight|^{2}  	ext{대상}; y_i(w^Tx_i + b) geq 1 ;for; 나는 = 1, 2,3, cdots,m

i에 대한 목표 변수 또는 레이블훈련 인스턴스는 기호 t로 표시됩니다.이 성명서에서. 그리고 t=-1(음수 발생의 경우)(y= 0) 및 t=1개의 긍정적인 인스턴스(y= 1) 각각. 제약조건을 만족하는 결정 경계가 필요하기 때문에: underset{w,b}{	ext{최소화 }}frac{1}{2}w^Tw+ C sum_{i=1}^m zeta_{i}  	ext{대상 } y_i( w^Tx_i + b)ge 1-zeta_{i};; 그리고 ; zeta_{i} ge 0;; 을 위한 ; 나는 = 1, 2,3, cdots,m

    소프트 마진 선형 SVM 분류기의 경우:

underset{alpha}{	ext{최대화}}: frac{1}{2}underset{i	o m;}{sum};underset{j	o m}{sum} alpha_ialpha_j t_i t_j K(x_i, x_j) -underset{i	o m}{sum}alpha_i

    이중 문제(Dual Problem): 서포트 벡터와 관련된 라그랑주 승수를 찾아야 하는 최적화 문제의 이중 문제를 사용하여 SVM을 해결할 수 있습니다. 다음 이중 목적 함수를 최대화하는 최적의 라그랑주 승수 α(i)

w= underset{i	o m}{sum}alpha_i t_i K(x_i, x) + b  t_i(w^Tx_i-b) = 1 Longleftrightarrow b= w^Tx_i-t_i

어디,

  • i번째 훈련 샘플과 연관된 라그랑주 승수입니다.
  • K(x, x제이)는 두 샘플 x 간의 유사성을 계산하는 커널 함수입니다.그리고 x제이. 이를 통해 SVM은 샘플을 고차원 특징 공간에 암시적으로 매핑하여 비선형 분류 문제를 처리할 수 있습니다.
  • ∑α 항모든 라그랑주 승수의 합을 나타냅니다.

SVM 결정 경계는 이중 문제가 해결되고 최적의 라그랑주 승수가 발견되면 이러한 최적의 라그랑주 승수 및 지원 벡터의 관점에서 설명될 수 있습니다. i> 0인 훈련 샘플은 지원 벡터이고 결정 경계는 다음에 의해 제공됩니다.

egin{정렬} 	ext{선형: } K(w,b) &= w^Tx+b  	ext{다항식: } K(w,x) &= (gamma w^Tx+b)^ N  	ext{가우스 RBF: } K(w,x) &= exp(-gamma|| x_i-x_j||^n  	ext{시그모이드:} K(x_i, x_j) &=  tanh(alpha x_i^Tx_j + b) end{aligned}

서포트 벡터 머신의 유형

결정 경계의 특성에 따라 SVM(Support Vector Machine)은 두 가지 주요 부분으로 나눌 수 있습니다.

자바 현지 날짜 시간
    선형 SVM: 선형 SVM은 선형 결정 경계를 사용하여 다양한 클래스의 데이터 포인트를 분리합니다. 데이터를 정확하게 선형적으로 분리할 수 있는 경우 선형 SVM이 매우 적합합니다. 이는 단일 직선(2D) 또는 초평면(고차원)이 데이터 포인트를 해당 클래스로 완전히 나눌 수 있음을 의미합니다. 클래스 간의 마진을 최대화하는 초평면이 결정 경계입니다. 비선형 SVM: 데이터를 직선으로 두 클래스로 구분할 수 없는 경우(2D의 경우) 비선형 SVM을 사용하여 데이터를 분류할 수 있습니다. 비선형 SVM은 커널 함수를 사용하여 비선형으로 분리 가능한 데이터를 처리할 수 있습니다. 원래 입력 데이터는 이러한 커널 함수에 의해 데이터 포인트가 선형으로 분리될 수 있는 고차원 특징 공간으로 변환됩니다. 선형 SVM은 수정된 공간에서 비선형 결정 경계를 찾는 데 사용됩니다.

SVM의 인기 있는 커널 함수

SVM 커널은 저차원 입력 공간을 가져와 이를 고차원 공간으로 변환하는 함수입니다. 즉, 분리할 수 없는 문제를 분리 가능한 문제로 변환합니다. 비선형 분리 문제에 주로 유용합니다. 간단히 말해서 커널은 매우 복잡한 데이터 변환을 수행한 다음 정의된 레이블이나 출력을 기반으로 데이터를 분리하는 프로세스를 찾습니다.

SVM RBF 커널을 사용한 유방암 분류-Geeksforgeeks

SVM의 장점

  • 고차원적인 경우에 효과적입니다.
  • 지원 벡터라고 하는 결정 함수에서 훈련 포인트의 하위 집합을 사용하므로 메모리가 효율적입니다.
  • 결정 기능에 대해 다양한 커널 기능을 지정할 수 있으며 사용자 정의 커널을 지정할 수도 있습니다.

Python으로 SVM 구현

암이 양성인지 악성인지 예측합니다. 의사는 암 진단을 받은 환자에 대한 과거 데이터를 사용하여 악성 사례를 구별하고 양성 사례에는 독립적인 속성을 부여할 수 있습니다.

단계

  • sklearn.datasets에서 유방암 데이터 세트를 로드합니다.
  • 입력 특성과 대상 변수를 분리합니다.
  • RBF 커널을 사용하여 SVM 분류기를 구축하고 훈련합니다.
  • 입력 특징의 산점도를 플롯합니다.
  • 결정 경계를 플롯합니다.
  • 결정 경계 그리기

파이썬3

# Load the important packages> from> sklearn.datasets>import> load_breast_cancer> import> matplotlib.pyplot as plt> from> sklearn.inspection>import> DecisionBoundaryDisplay> from> sklearn.svm>import> SVC> # Load the datasets> cancer>=> load_breast_cancer()> X>=> cancer.data[:, :>2>]> y>=> cancer.target> #Build the model> svm>=> SVC(kernel>=>'rbf'>, gamma>=>0.5>, C>=>1.0>)> # Trained the model> svm.fit(X, y)> # Plot Decision Boundary> DecisionBoundaryDisplay.from_estimator(> >svm,> >X,> >response_method>=>'predict'>,> >cmap>=>plt.cm.Spectral,> >alpha>=>0.8>,> >xlabel>=>cancer.feature_names[>0>],> >ylabel>=>cancer.feature_names[>1>],> >)> # Scatter plot> plt.scatter(X[:,>0>], X[:,>1>],> >c>=>y,> >s>=>20>, edgecolors>=>'k'>)> plt.show()>
>
>

산출 :

SVM RBF 커널을 사용한 유방암 분류