본문 바로가기
머신러닝/머신러닝 실무

5주차 머신러닝 :: Support Vector Machine(SVM)

by udeserveit1 2024. 8. 9.

3차원 이상은 비선형 - Kernel 방법을 이용

 

 

1. 서포트 벡터 머신 및 Kernel 방법 학습

    서포트 벡터 머신(Support Vector Machine)이란?

 

• 회귀(Regression), 분류(Classification), 이상치 검출(Outlier Detection)에 사용할 수 있는 지도학습 모델

• 분류를 위한 기준선을 정의하는 모델

• 분류를 위한 기준선 = 결정 경계(Decision Boundary)

 

 

 

 

 

결정경계는 속성에 따라 변화

▪ 속성 2개 = 2차원 형태 ⇒ 선 형태

▪ 속성 3개 = 3차원 형태 ⇒ 평면 형태

N개 속성일 때 결정경계 = “초평면”(Hyperplane)

- (단순한 평면이 아닌 고차원일때)

 

 

 

좋은 결정 경계란?

 

▪ 각 클래스의 데이터와 결정경계 사이의 거리가

▪ 가장 멀 때 이상적인 집합 범위

데이터와 결정경계 사이의 거리 = 마진(Margin)

 

 

 

 

▪ 마진 구하기

   ▪ 가장 가까운 데이터들 사이에 위치하도록 결정경계 를 긋고, 마진을 구함.

   ▪ 결정 경계와 가까이 있는 데이터를 Support Vector 라고 함.

▪ Outlier (이상치)

   ▪ 특정 지정된 그룹으로 분류되지 못하는 데이터

   ▪ 마진의 크기 결정에 따라서 데이터의 이상치를 얼마 나 허용할 지 결정됨 → 소프트마진과 하드마진

 

 

 

 

SVM의 결정경계

 

 

 

Soft Margin

이상치 많이 허용, 마진이 큼

   ▪ 이상치를 허용해서 Support Vector와 결정 경 계가 멀어져 마진이 커짐

   ▪ 과소적합(Under fitting)의 가능성 증가(= 모델 학습이 잘안됨)

   ▪ 학습을 위해 충분한 데이터를 활용하지 못함

 

Soft Margin

 

Hard Margin

 

  이상치 허용 X, 마진이 작음

    ▪ 이상치를 허용하지 않아 Support Vector와 결 정 경계가 매우 가까워져 마진이 작아짐

    ▪ 과대적합(Over fitting)의 가능성 증가 (= 새로운 데이터가 어딘가 들어있는지 힘듦)

    ▪ 모든 데이터를 활용하여 그대로 학습 (이상치까 지 포함)

 

 

 

Hard Margin

 

 

 

 

 

 

 

  사이킷런의 SVM 알고리즘에서 이상치를 얼마나 허용할지 지정가능(기본값은 C=1) C값이 클수록 하드 마진이 되고, C값이 작을수록 소프트 마진이 됨

▪ 최적의 C값은 입력 데이터마다 다르므로, 검증이 필요

 

 

 

선형 분류의 어려움

  기존의 선형 분류 방법으로 분류가 되지 않는 경우

 

 

 

▪ 비선형 데이터 다루기

    ▪ 커널 방법(Kernel trick)

    ▪ 현재 차원의 데이터들을 더 높은 차원으로 변환: 변환된 차원에서 선형적으로 분류 가능

     ▪ 2차원 데이터: x  = [q, p]         3차원 데이터: φ([q,p]) = (q2 ,√2qp,p2 )

 

 

커널 함수 (Kernel Function)

Poly

▪ 2차원 데이터를 3차원 데이터 공간으로 변형한 후, 선형 분류

 

 

RBF

▪ 2차원 데이터를 무한한 차원의 공간상으로 변형한 후 분류

▪ Gamma 파라미터: 결정경계를 얼마나 유연하게 그을지 결정

 

 

 

 

gamma 가 너무 커도 overfitting 될 수도 있다 

 

 

데이터 마이닝과 머신러닝과 비슷하다 데이터마이닝(데이터 웨어하우스에 저장 , 데이터에 집중)머신러닝 (예측과 추론)

---새로운 데이터가 들어왔을 때 뭐일까 ? 예측 그래서 왼쪽의 그래프처럼 

 

 

예제 1 ) SVM의 간단한 예제

 

 

 

▪ 분류기: SVC(C =0.01)

▪ 높은 c값=하드 마진,

▪ 낮은 c값=소프트 마진

 

Polynomial(다항커널)

▪ SVC(kernel=‘poly')

▪ 2차원 —> 3차원

 

 

RBF(Radial Basis Function)

▪ 2차원 —> 무한대 차원

▪ SVC(kernel = "rbf", C = 2, gamma = 0.5)

▪ gamma: 높을 경우 -> 과대적합(overfitting)? 낮을 경우 -> 과소적합(underfitting)?

데이터를 잘 나누면 새로운 데이터가 애매해진다

 

 

사이킷런의 SVC(Support Vector Classification)

▪ SVC

   ▪ SVM 분류를 위한 사이킷런 알고리즘

   ▪  SVC, NuSVC, LinearSVC