본문 바로가기

Machine Learning/분류(Classification)

Classification - SVM 서포트 벡터 머신

반응형

https://steadiness-193.tistory.com/257

 

Machine Learning - valid와 test를 train으로 전처리

https://steadiness-193.tistory.com/256 Machine Learning - train_test_split https://steadiness-193.tistory.com/253 Machine Learning - 랜덤으로 train과 test로 나누기 데이터 불러오기 seaborn의 iris 데..

steadiness-193.tistory.com

 

위 포스팅에서 만든 데이터셋을 이용한다.

 

 

 

분류이기 때문에 SVM에서의 SVC를 불러왔다.

 

아무 파라미터 없이 기본으로 SVC로 예측한 뒤 

 

정확도를 평가했다.

 

[Support Vector Machine, SVM]

데이터를 선형으로 분리하는 최적의 선형 결정 경계를 찾는 알고리즘

주어진 데이터를 바탕으로하여
각 클래스 사이의 간격(Margin, 마진)을 최대화하는 데이터 포인트(Support Vector, 서포트 벡터)를 찾아내고,
그 서포트 벡터에 수직인 경계를 통해 데이터를 분류하는 알고리즘



마진을 최대화 하는 이유?

Unseen 데이터에 대해서도 위험 최소화 (구조적 위험 최소화)



파라미터


- C : 모델에 규제를 적용하는 값 (float)
- kernel : kernel trick에서 사용할 kernel 종류
- degree : poly 커널 적용 시 차수를 결정하는 값 (int)
- gamma : rbf 커널 적용 시 결정경계의 곡률을 정해주는 값 (float)
- class_weight : 모델 학습 시 클래스의 비율에 맞춰 손실값에 가중치 부여 (dict)

 

 

 

 

 

C (cost)

 

C : 얼마나 많은 데이터 샘플이 다른 클래스에 놓이는 것을 허용하는지를 결정

 

Soft Margin : C값을 낮게 설정한 경우 유연한 경계면을 만들어 일반적인 결정 경계를 찾음

Hard Margin : C값을 높게 설정한 경우 분명한 경계면을 만들어 타이트한 결정 경계를 찾음

 

C가 너무 낮으면 underfitting, 너무 높으면 overfitting될 위험이 있다.

 

 

좌 : 소프트 마진 / 우 : 하드 마진

 

 

 

 

 

Kernel Trick

 

커널 기법 : 주어진 데이터를 고차원 특징 공간으로 사상해주는 것

 

kernel trick을 하는 이유 : 저차원에서 선형 분리가 어려운 데이터를 고차원으로 보내 선형분리를 해냄

(고차원 Mapping과 고차원에서의 내적 연산을 한번에 할 수 있는 방법)

 

가장 널리 쓰이는 커널은 가우시안 RBF 커널

 

고차원에서 선형 분리를 해낸 그림

 

 

 

 

 

RBF 커널

 

gamma : 모델이 생성하는 경계가 복잡해지는 정도

 

값이 클 수록 작은 표준편차를 가져, 데이터 포인트가 행사하는 영향력이 작아진다.

 

반대로 gamma 값이 낮을 수록 데이터 포인터가 영향력을 행사하는 거리가 길어져 경계가 단순해진다. 

 

C 처럼 너무 낮으면 underfitting, 너무 높으면 overfitting될 위험이 있다.

 

 

 

즉, 위 두가지 매개변수의 최적값을 grid search를 통해 찾아내야 한다.

 

 

 

C값과 gamma값을 조정하니 정확도가 약 1%p 상승한 것을 볼 수 있다.

 

 

 

참고 및 이미지 출처

https://bskyvision.com/163

반응형