sci-kit learn에서 제공하는 SVM 모델 중 SVC 알고리즘은 다양한 커널을 제공한다.
주로 ‘linear’, ‘poly’, ‘rbf’ 이렇게 세 가지가 주로 쓰이는데 SVC 알고리즘을 가져왔다면 주로
‘rbf’를 쓰기 위함일 경우가 많다. (default값도 rbf이다.)
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
rbf_kernel_svm_clf = Pipeline([
("scaler", StandardScaler()),
("svm_clf", SVC(kernel="rbf", gamma=1, C=0.001)
])
RBF는 가우시안 방사 기저 함수(radial basis function)으로 불리며,
- 특정 샘플을 랜드마크로 지정해서
- 각 샘플이 랜드마크와 얼마나 유사한지를 구하는 유사도 함수를 대입하여
- 나온 결과값을 해당 샘플의 새로운 특성으로 추가하고,
- 이를 기준으로 결정 경계를 만드는 방식입니다.
샘플 $x_0$, $x_1$, $x_2$가 있고, $x_1$과 $x_2$를 랜드마크로 지정했다고 했을 때
$x_1$의 값을 x축에 놓고 y축에서 1이 되는 지점이 종모양의 최대점이 되도록 가우시안 분포를 그립니다.
$x_2$의 값도 동일하게 가우시안 분포를 그려줍니다.
그 뒤 $x_0$값을 x축에 놓아서 $x_1$ 분포와 $x_2$ 분포에 각각 대입했을 때 얻을 수 있는 각각의 y값을
새로운 특성으로 추가합니다.
이때 새로운 특성을 정의하는 함수는 아래와 같습니다.
$\phi_\gamma(x, l) = exp(-\gamma||x-l||^2)$
x값과 랜드마크로 지정된 샘플값의 거리를 제곱한 뒤
-$\gamma$를 대입하여 지수 함수를 적용합니다.
위에서 설명한 가우시안 분포 대입 결과가 동일합니다.
여기서 감마값을 크게할수록 결정 경계의 구부러지는 정도가 증가합니다.
그러므로 과도할 경우 오버피팅이 발생할 수 있습니다.
또다른 하이퍼 파라미터인 C값도 감마와 비슷한 기능을 가집니다.
참고로 C값은 결정 경계를 중심으로 마진 사이의 영역에 오류값이 존재하는 것을
얼마나 허용할 것인가에 대한 수치입니다.
값이 놓을수록 허용하지 않는다는 뜻으로 결정경계를 중심으로 최대한 샘플이 잘 분류되도록 합니다.
그렇게 되면 학습 데이터에 오버피팅된 모델이 될 수 있으므로 이 또한 하이퍼 파라미터 답게
적절한 조율 필요합니다.
'데이터사이언스 이론 공부' 카테고리의 다른 글
딥러닝 기초 용어에 대한 간단 정리 (0) | 2022.11.02 |
---|---|
Word Embedding에 대한 간략 정리 (0) | 2022.10.31 |
엔트로피(Entropy)와 크로스 엔트로피(Cross Entropy) (0) | 2022.10.07 |
NDCG로 랭킹 추천모델 평가하기 (0) | 2022.09.15 |
딥러닝에는 왜 활성함수를 적용할까? (0) | 2022.09.15 |