9장: KNN 모델 정리
SVM
: 두 클래스 레이블이 분포된 영역을 최대한 잘 분리하는 결정 경계를 찾는 것
- 결정 경계에서 점까지의 마진(=최소거리)을 최대화하는 직선
- 경계선과 데이터 포인트 사이에 조그마한 노이즈라도 있다면 예측에 실패할 수 있음
- 분류와 회귀 모두 적용 가능한 지도 학습 모델
- 따라서 L은 좋은 경계선
SVM의 이론
좋은 분할은 초평면과 각각의 클래스와의 마진이 최대화된 것
- 마진이 클수록 이 분류기의 일반화 오차가 작아질 것으로 예상
- 분할해야 할 집합을 선형으로 분할할 수 없을 때 원래의 공간을 고차원으로 매핑하여 그 고차원 공간에서 쉽게 분할할 수 있다 → 커널 트릭
커널 SVM
저차원의 데이터를 고차원의 데이터로 변환 → 주어진 데이터가 휘어진 경계로 구분될 때
사용 예: XOR 문제
→ 데이터를 특별히 변환할 필요 없이 x값의 커널 변환만 정의해주면 간단히 분류할 수 있음
→ Φ 함수를 모르더라도 결과값을 구할 수 있음!
Linear Kernel | K < x1, x2 >=< x1, x2 > |
Polinomial Kernel | k < x1 , x2 >= (a < x1 , x2 > +b) d |
Sigmoid Kernel | tanh(a < x1 , x2 > +b) |
Gaussian Kernel | k < x1, x2 >= \frac{exp(-\left\|x_{1}-x_{2} \right\|)_{2}^{2}}{2a^{2}} |
선형 SVM
최대 마진 초평면 = W^Tx +b = 0
- 분할이 성공적이려면 가장 가까운 두 점에 대해 |W^Tx +b| = 1를 만족해야 함
- 모든 i에 대해 y_i (W^Tx +b)>=1 을 만족해야 함
단점
- 노이즈 때문에 일부 샘플이 다른 클래스 레이블을 가진 샘플 사이에 놓이면 최적해를 구할 수 없다
- 비선형 문제를 해결 할 수 없다 → 소프트 마진과 커널 트릭을 이용하면 해결 가능
소프트 마진 SVM
: 어느 정도 오차를 허용하되 오차가 발생할 때 마다 패널티를 비용 함수에 부과하는 방식
→ SVM에 규제 패널티를 도입하여 하드 마진 SVM을 일반화한 것
- ||w^2|| = w^Tw 최소화하여 마진 최대화
- 샘플이 잘못 분류되거나 마진 경계 안에 들어갈 경우 패널티 부과 → 하이퍼 파라미터 C
- ζ: 오차를 허용하는 정도
시간복잡도
- 학습 벡터의 수가 증가함에 따라 급속도로 증가함
- O(n^2p)~O(n^3p) 사이 -> 데이터셋의 성질에 따라 다름
패키지로 표현하기
하이퍼파라미터 | 주요값 | 기본값 | 의미 |
C | float>0 | 1.0 | 규제 강도의 역수 |
kernel | 'linear','poly','rbf','sigmoid','precomputed' | 'rbf' | 사용할 커널의 종류 |
probability | bool | False | 확률적 추정을 사용할지의 여부,교차검증법을 사용하므로 속도가 떨어질 수 있음 |
tol | float>0 | 1e-3 | 정지 조건에 대한 허용 오차 |
class_weight | None,'balanced',dict | None | 클래스 가중치 설정 클래스 불균형 효과 줄이기에 유용 None: 모든 클래스에 같은 가중치 부여 balanced:클래스 빈도에 반비례하는 가중치 설정 dict:사용자 지정 가중치 부여 |
max_iter | int>0또는 int=-1 | -1 | 이터레이션의 상한선 -max_iter=-1:상한성 없음.tol에 의한 정지 조건에 도달할 때까지 계속 학습함 |
decision_function_shape | 'ovr','ovo' | 'ovr' | 다중 클래스일 때 반환할 결정 함수의 종류 설정. 이진 분류라면 무시함 |
random_state | None,int | None | probability=True에 한해 데이터 셔플링에 대한 랜덤성을 제어 |
→ sklearn.svm.LinearSVC클래스와 sklearn.svm 모듈의 NuSVC 클래스도 사용 가능함
SVR(서포트 벡터 회귀)
SVR 클래스
- 예측값이 실제값보다 ε 크기 이상으로 벗어난 샘플에만 규제 적용 → 패널티는 벗어난 방향에 따라ζ_i,ζ^*_i 중에서 적용
- SVC 클래스와 다른 점은 epsilon 파라미터(오차허용 범위)를 사용하는 것
LinearSVR 클래스
→ 오차가 앱실론보다 작으면 비용을 부과하지 않음
'공부' 카테고리의 다른 글
[BDA x 이지스 퍼블리싱] Easy Study Project 마무리를 하며 (0) | 2024.01.26 |
---|---|
BDA X 이지스퍼블리싱 서평단 이벤트 [Do it! 데이터 과학자를 위한 실전 머신러닝]/ 11장:다층 퍼셉트론 모델 (0) | 2023.12.31 |
BDA X 이지스퍼블리싱 서평단 이벤트 [Do it! 데이터 과학자를 위한 실전 머신러닝]/ 9장: K-최근접 이웃 모델 (0) | 2023.12.31 |
뉴럴네트워크모델1(구조,비용함수,경사하강법) (0) | 2023.12.29 |
오차역전파 (0) | 2023.12.29 |