공부

BDA X 이지스퍼블리싱 서평단 이벤트 [Do it! 데이터 과학자를 위한 실전 머신러닝]/ 10장: 서포트 벡터 머신 모델

무른2 2023. 12. 31. 12:15

 

 

 

 

BDA X 이지스퍼블리싱 서평단 이벤트 [Do it! 데이터 과학자를 위한 실전 머신러닝]/ 9장: K-최근접

사전지식 : 거리 메트릭 거리 메트릭(distance metric) : 공간에서 두 점 사이의 거리를 측정하는 방법이나 함수를 나타낸다. 민코프스키 메트릭(Minkowski metric) : 유클리드 거리와 맨허탄 거리를 표현

sol-butter1472.tistory.com

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 클래스

→ 오차가 앱실론보다 작으면 비용을 부과하지 않음