always_here

지식을 공유하고 함께 성장하는 엔지니어 as_always 입니다

AS_ALWAYS

AI/기계학습

SVM(1)

nauung_always 2021. 2. 3. 15:50
728x90

SVM(Support Vector Machine)

분류 또는 회귀문제에 사용할 수 있는 기계학습 알고리즘

  • 대부분의 분류문제에 사용
  • 각 데이터 항목을 n차원 공간 상 하나의 점으로 표시

  • 최상의 분류선을 찾는 것이 문제
  • SVM은 최적의 초평면을 찾는 방법을 제공

 

Margin(초평면 가까이에 있는 Support Vector에서 초평면까지의 거리의 합)

SVM은 분류를 더 잘하는 것을 Margin에 우선해서 선택한다는 특징을 고려해야한다

  • 선형SVM

Outlier를 어느정도 무시하며 최선의 선택을 함

  • 비선형분류

선형으로 풀 수 없는 경우 차원을 변경하여 비선형으로 분류 이때 커널 함수 활용

Kernel 함수

각각의 커널에는 최적화를 도와주는 파라미터들이 따로 존재함

최상의 커널 파라미터를 자동적으로 알려주는 방법 존재 X

SVM의 학습과 예측의 반복 -> 최적의 예측률 조건 찾는다

 

벡터와 초평면

스칼라와 벡터의 곱

벡터(방향+크기) 스칼라(크기)

유클리드 거리(L2-norm)

원점과 벡터의 가장 가까운 거리를 계산

벡터 a=(a1,a2,....,an) 루트(a1의 제곱+...an의 제곱)

 

초평면을 구하는 식

Pa Po를 통과하는 벡터 w

벡터Xo=직선 OPo , 벡터 X=직선 OP

P=초평면에서 임의의 점

초평면: 벡터w*벡터X+b=0

계수가 바뀌면 초평면은 방향을 따라서 움직인다

 

선형 SVM분류 (Linear SVM classifier)

해당 벡터를 점으로 표시하고 두 그룹을 나눌 수 있는 선(초평면)을 찾을 때

무한히 많은 초평면이 존재하게 된다

이때 SVM은 경계에 있는 서포트 벡터 사이의 간격을 최대화하는 초평면을 찾아야한다

Margin을 극대화하기 위해서는 ||벡터w||를 최소화하거나 1/2||벡터w||의 제곱를 최소화

 

선형SVM분류 (Soft Margin SVM)

Soft margin SVM <= 보완 Hard margin 방식

Hard margin 방식 : 모든 입력 벡터들을 초평면 사이에 두고 무조건 한 그룹에 속하게 분류

-> 초평면을 잘못 구할 수 있음

soft margin: 서포트 벡터가 위치한 경계선에 slack variable (여유변수)를 둔 방식

잘못 분류된 경우 초평면에서 여유변수를 각 요소에 할당하고 그렇지 않은 경우 0을 지정

 

Soft margin Linear SVM을 구하는 공식

Primal 공식 / Dual 공식

C: 얼마만큼의 여유를 가지고 오류를 인정할 건지에 대한 값

C값이 매우 커지면 Soft margin SVMHard margin SVM과 같아지게 된다.

C값이 매우 작아지면 훈련 데이터에서 잘못된 분류를 할 수 있다.

 

커널트릭

선형으로 분리할 수 있는 데이터가 아닐 때 사용

데이터가 입력 공간에서 선형으로 분리되지 않음

-> 커널에 의해 얻어진 특정 공간에서 선형으로 분리 가능

많이 사용하는 커널 : Linear Kernel, Polynomial kernel

 

파이썬 Sklearn SVM Parmeter

Kernel, C, gamma

  • Kernel 파라미터 값에는 rbf, linear, polynominal가 있다. 디폴트 값은 rbf
  • C 파라미터 값은 얼마만큼의 여유를 가지고 오류를 인정할 건지에 대한 값 디폴트는 1.0  만약 C값을 낮추면 초평면이 매끄러워지고, C값을 높이게 되면 좀 더 예리하게 분류 가능
  • Gamma 파라미터는 값을 낮추면 초평면에서 멀리 떨어진 서포트 벡터들의 영향을 작게 만들고, 값을 높이면 멀리 떨어진 서포트 벡터들의 값들의 영향을 크게 만든다. 또한 값을 높일 경우 초평면에 인접한 서포트 벡터들의 영향이 커지기 때문에 초평면이 울퉁불퉁하게 나타나게 된다.

 

SVM overfitting(과최적화)

과도하게 훈련된 데이터에 대해 모델이 최적화된 경우

과도하게 학습된 모델은 학습한 데이터에 대해서는 분류를 비교적 정확하게 해내지만,

이 학습 데이터의 패턴을 벗어나는 새로운 데이터에 대해선 분류를 제대로 못하는 경우가 생긴다. 학습데이터에만 최적화 되어있다는 문제

과최적화가 일어나지 않도록 SVM paremeter들의 값을 적절히 조정해야한다.

728x90

'AI > 기계학습' 카테고리의 다른 글

KNN  (0) 2021.02.11
K-means  (0) 2021.02.08
텍스트 데이터 분석  (0) 2021.02.05
Naive Bayes  (0) 2021.02.04
인공신경망  (0) 2021.02.02