3차원 이상은 비선형 - Kernel 방법을 이용
1. 서포트 벡터 머신 및 Kernel 방법 학습
서포트 벡터 머신(Support Vector Machine)이란?
• 회귀(Regression), 분류(Classification), 이상치 검출(Outlier Detection)에 사용할 수 있는 지도학습 모델
• 분류를 위한 기준선을 정의하는 모델
• 분류를 위한 기준선 = 결정 경계(Decision Boundary)
▪ 결정경계는 속성에 따라 변화
▪ 속성 2개 = 2차원 형태 ⇒ 선 형태
▪ 속성 3개 = 3차원 형태 ⇒ 평면 형태
▪ N개 속성일 때 결정경계 = “초평면”(Hyperplane)
- (단순한 평면이 아닌 고차원일때)
좋은 결정 경계란?
▪ 각 클래스의 데이터와 결정경계 사이의 거리가
▪ 가장 멀 때 이상적인 집합 범위
▪ 데이터와 결정경계 사이의 거리 = 마진(Margin)
▪ 마진 구하기
▪ 가장 가까운 데이터들 사이에 위치하도록 결정경계 를 긋고, 마진을 구함.
▪ 결정 경계와 가까이 있는 데이터를 Support Vector 라고 함.
▪ Outlier (이상치)
▪ 특정 지정된 그룹으로 분류되지 못하는 데이터
▪ 마진의 크기 결정에 따라서 데이터의 이상치를 얼마 나 허용할 지 결정됨 → 소프트마진과 하드마진
Soft Margin
▪ 이상치 많이 허용, 마진이 큼
▪ 이상치를 허용해서 Support Vector와 결정 경 계가 멀어져 마진이 커짐
▪ 과소적합(Under fitting)의 가능성 증가(= 모델 학습이 잘안됨)
▪ 학습을 위해 충분한 데이터를 활용하지 못함
Hard Margin
▪ 이상치 허용 X, 마진이 작음
▪ 이상치를 허용하지 않아 Support Vector와 결 정 경계가 매우 가까워져 마진이 작아짐
▪ 과대적합(Over fitting)의 가능성 증가 (= 새로운 데이터가 어딘가 들어있는지 힘듦)
▪ 모든 데이터를 활용하여 그대로 학습 (이상치까 지 포함)
▪ 사이킷런의 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
'머신러닝 > 머신러닝 실무' 카테고리의 다른 글
[머신러닝] 10주차 학습 알고리즘 최적화 : 경사하강법(Gradient Descent) (0) | 2024.08.22 |
---|---|
4주차 머신러닝 :: 선형회귀 (0) | 2024.08.10 |
3주차 머신러닝 데이터 시각화 (1) | 2024.08.05 |
2주차 - 머신러닝 데이터분석 :: 판다스(Pandas) (0) | 2024.08.02 |
2주차 - 머신러닝 데이터분석 :: Numpy, Pandas 실습 (0) | 2024.08.01 |