————————-preview———————————————————————————
왜 사용하는 것?
주어진 데이터에 대한 분류를 위해서
서포트 벡터 머신은 커널만 적절히 선택한다면 정확도가 상당히 좋기 때문에 정확도를 요구하는 분류 문제를 다룰 때 사용하면 좋습니다. 또한, 텍스트를 분류할 때도 많이 사용합니다.
SVM은 분류를 위한 기준선을 정의하는 모델입니다. 따라서 분류되지 않은 새로운 데이터가 나타나면 결정 경계(기준선)를 기준으로 경계의 어느 쪽에 속하는 지 분류하는 모델입니다. 따라서 그 결정 경계를 이해하는 것이 중요합니다.
결정경계는 데이터가 분류된 클래스에서 최대한 멀리 떨어져 있을 때 성능이 가장 좋습니다. 이때 마진의 개념을 생각하면 이해하기 더 편한데, 결정경계와 SVM사이의 거리를 의미합니다. (SVM은 클래스의 가장 바깥쪽이자 결정 경계의 가장 가까이 있는 데이터들을 의미) 따라서 마진의 최대로 해야 합니다.
그리고 이때 이상치 즉, outlier를 허용하지 않으면 hard margin,
허용하면 soft margin이라고 합니다.
그리고 일반적으로 선형 분류가 아닌 비선형 분류에 대해서는 많은 수학적 계산이 필요하게 되는데 이는 성능에 문제를 줄 수 있습니다. 그리고 이러한 문제를 해결하고자 도입한 것이 ‘커널 트릭’이라고 하며 이때 가우시안 RBF kernel과 다항식 kernel(poly)를 통해 벡터 내적을 계산한 후 고차원으로 보내는 방법으로 연산량을 줄였습니다.
———————————————————————————————————————
History of SVM
SVM은 통계 학습 이론과 관련이 있으며 1992년에 처음 도입되었고, SVM이 인기를 끌게 된 것은 손으로 쓴 숫자 인식에 성공했기 때문입니다.
SVM은 이제 기계 학습의 핵심 영역 중 하나인 "kernel methods"의 중요한 예가 되었습니다..
Getting good generalization on big datasets
복잡한 모델이 필요한 빅 데이터 세트가 있는 경우 전체 베이지안 프레임워크는 계산 비용이 매우 많이 듭니다.따라서 이러한 cose를 줄일 수 있는 더 빠르지만 일반화가 잘되는 a frequentist method를 찾게 되었으며
그리고 이러한 big sets를 사용할 때 과적합을 방지하기 위해서 사용하는 방법으로 사용하기에 가장 좋은 분리선은 무엇입니까?
베이지안 답은 이들을 모두 사용하는 것입니다(데이터를 분리하지 않은 것을 포함) 각 선의 가중치를 사후 확률(즉, 데이터를 얼마나 잘 적합시키는지와 이전 데이터를 얼마나 잘 적합시키는지의 조합)로 계산합니다
Support Vector Machine
서포트 벡터 머신 알고리즘의 목적은 N차원 공간에서 데이터 포인트를 명확하게 분류하는 초평면(𝑁 – the number of features)을 찾는 것입니다.
두 클래스의 데이터 포인트를 분리하기 위해 Maximum margin, 즉 두 클래스의 데이터 포인트 사이의 최대 거리를 갖는 평면을 찾는 것이 목표입니다.
Hyperplanes and Support Vectors
Hyperplanes은 데이터 포인트를 분류하는 데 도움이 되는 결정 경계입니다. Hyperplane의 양쪽에 있는 데이터 포인트는 다른 클래스에 기인할 수 있습니다. 또한 Hyperplane의 dimension은 피쳐의 수에 따라 달라집니다. Support vectors는 Hyperplanes에 더 가깝고 초평면의 위치와 방향에 영향을 미치는 데이터 포인트입니다. 이러한 지원 벡터를 사용하여 분류기의 마진을 최대화합니다.
General input/output for SVMs
Input: set of (input, output) training pair samples
Output: set of weights w (이 값(w)은 선형 조합이 y 값을 예측)
우리는 마진을 최대화하는 최적화를 사용하여 분리선(Hyperplane의)을 결정할 때 중요한 특징에 해당하는 0이 아닌 가중치의 수를 몇 개로 줄입니다.
0이 아닌 가중치는 Support Vector에 해당합니다(because they
‘support’ the separating hyperplane)
Large Margin Intuition
SVM에서는 선형 함수의 출력을 취하는데, 출력이 1보다 크면 한 클래스로 식별하고 출력이 -1보다 작으면 다른 클래스로 식별합니다. SVM에서는 임계값이 1,-1로 변경되므로 마진 역할을 하는 값의 강화 범위([-1,1])를 얻습니다.

Support Vector를 이동하면 decision boundary가 이동하고 다른 벡터는 이동하지 않습니다. 가중치를 생성하는 최적화 알고리즘은 Support vector만 가중치를 결정하여 경계를 결정하는 방식으로 진행됩니다.

이때 w는 weight vector

따라서 마진을 극대화하기 위해서는 𝐰을 최소화해야 합니다.

SVM Problem Definition
문제: 거리를 최대화하거나(2 ⁄ 𝐰), 𝐰을 최소화할 경우, s.t. 구별 경계가 obey됩니다.
최종적으로 정리하면 다음과 같습니다.

SVM Cost Function
hard-margin SVM은 outlier가 없고, soft-margin SVM은 outliers가 존재하는데 예측값과 실제값이 같은 부호이면 비용은 0입니다. 그렇지 않으면 손실값을 계산합니다. 또한 비용 함수에 정규화 매개변수를 추가합니다. 정규화 매개변수의 목적은 마진 극대화와 균형을 맞추는 것입니다
loss. 정규화 파라미터를 추가한 후 cost function는 아래와 같습니다.


Gradient Updates
손실 함수가 있으므로, 우리는 gradient를 찾기 위해 가중치에 대한 편미분을 구합니다. gradient를 사용하여 가중치를 업데이트할 수 있습니다.
잘못된 분류가 없을 때, 즉 우리의 모델이 데이터 포인트의 클래스를 정확하게 예측할 때, 우리는 정규화 매개변수에서 그래디언트만 업데이트하면 됩니다.
잘못 분류된 경우, 즉 우리 모델이 데이터 포인트의 클래스 예측에 실수를 하는 경우, 우리는 기울기 업데이트를 수행하기 위해 정규화 매개 변수와 함께 손실을 포함합니다.

Linear SVM vs Non-Linear SVM
우리가 직선을 그려서 초평면으로 데이터를 쉽게 분리할 수 있는 것이 선형 SVM입니다. 우리가 직선으로 데이터를 분리할 수 없을 때 우리는 비선형 SVM을 사용합니다. 여기에는 커널 함수가 있습니다. 그들은 비선형 공간을 선형 공간으로 변환합니다. 그것은 그것을 선형 공간으로 변환시킵니다
데이터를 다른 차원으로 변환하여 데이터를 분류할 수 있습니다.
Linear SVM
선으로 쉽게 분리할 수 있습니다.
데이터는 초평면의 도움을 받아 분류됩니다.
직선을 그리면 데이터를 쉽게 분류할 수 있습니다.
Non-Linear SVM
선으로 쉽게 분리할 수 없습니다.
커널을 사용하여 분리할 수 없는 데이터를 분리할 수 있는 데이터로 만듭니다.
데이터를 고차원 공간에 매핑하여 분류합니다
Non-linear SVMs

위의 그림과 같은 문제 상황에서 더 높은 차원 공간에 매핑하면 다음과 같습니다.
Non-linear SVMs: Feature spaces
위의 아이디어를 반영하여서 원래 특징 공간은 항상 훈련 세트를 분리할 수 있는 일부 고차원 특징 공간에 매핑될 수 있습니다

The “Kernel Trick”



This use of kernel function to avoid carrying out 𝜙 · explicitly is
known as the kernel trick

커널 함수는 데이터를 고차원에 암시적으로 매핑합니다
Summary for SVM
SVM의 장점
소규모의 더 깨끗한 데이터 세트에 적합합니다.
정확한 결과.
선형으로 분리 가능한 데이터와 비선형으로 분리 가능한 데이터 모두에 유용합니다.
고차원 공간에서 효과적입니다.
SVM의 단점
training 시간이 너무 길 수 있기 때문에 대규모 데이터 세트에는 적합하지 않습니다.
클래스가 중복되는 데이터 세트에서는 그다지 효과적이지 않습니다.
적절한 커널을 선택하는 것은 computationally intensive일 수 있습니다.
SVM의 응용 프로그램
감성 분석.
스팸 탐지.
이미지 인식 문제