본문 바로가기

Python/Data Analysis

Data Analysis / ML / SVM

< Support Vector Machine (SVM) >

▷ 데이터를 선형으로 분리하는 최적의 선형 Decision Boundary를 찾는 알고리즘

Support Vector Machine (SVM)

▷ Support Vector : 데이터의 경계를 나타내는 데이터

▷ Decision Boundary : 분류를 나누는 선으로 두 support vector의 평균(그림의 Hyperplane)

▷ Margin : support vector 간의 거리

▷ Margin을 최대화 하는 것이 optimal한 Decision Boundary


※ SVM에서의 이상치 처리

▷ 이상치 존재 → support vector 변경 → Margin 감소 → 모든 데이터를 다 포함하는 Decision Boundary 생성 → Overfitting 발생 → Hard margin

▷ 반대현상은 Soft margin

▷ sklearn 에서는 이를 해결하기 위해 'C' 라는 hyperparameter를 이용

  • C가 크면 hard marign - overfitting
  • C가 작으면 soft margin - underfitting

▷ C 값을 적절하게 조절해서 적당한 값을 찾아야 한다.


< Kernel >

Kernel

▷ 주어진 데이터를 고차원의 공간으로 projection(투영)하는 기법

▷ 위의 그림에서는 2차원으로는 Decision Boundary를 구하기 어려운데, 3차원으로 차원을 늘려 분류하면 쉽다.


※ sklearn에서 kernel 종류

  • linear : 직선
  • poly : 2차원에서 3차원으로 늘일 때
  • RBF : Radial Basis Function(방사형 기저 함수) 
    • gamma 라는 hyperparameter가 존재하고, 데이터가 영향력을 행사하는 거리를 나타낸다.
    • gamma값이 클수록 영향력을 행사하는 거리가 줄어듬 -> 구불구불해짐 -> Overfitting
    • gamma값이 작을수록 영향력을 행사하는 거리가 커짐 -> 직선형 -> Underfitting

※ C와 gamma값을 어떻게 하면 잘 설정할 수 있을까?

1. 수동으로 적합한 값을 찾기 -> 적합하지 않음

2. sklearn이 자동으로 최적의 parameter를 찾을 수 있는 방법을 제공해준다.

  • GridSearchCV : 사용할 parameter를 여러개 지정하고, CV를 실행해서 최적의 accuracy를 도출하는 값을 찾아준다.

< SVM 실습 >

1. mglearn의 데이터 활용

SVM 실습 결과

2. BMI 예제

BMI 예제 결과

3. MNIST 예제

 

'Python > Data Analysis' 카테고리의 다른 글

Data Analysis / DL / CNN  (0) 2020.11.02
Data Analysis / DL / Basic(2)  (0) 2020.10.16
Data Analysis / DL / Basic  (0) 2020.10.16
Data Analysis / ML / Tensorflow 2.x(2)  (0) 2020.10.15
Data Analysis / ML / Tensorflow 2.x(1)  (0) 2020.10.15