728x90
5장 서포트 벡터 머신¶
- 서포트 벡터 머신(SVM)은 매우 강력하고 선형이나 비선형 분류, 회귀, 이상치 탐색에도 사용할 수 있는 다목적 머신러닝 모델
5.1 선형 SVM 분류¶
5.1.1 소프트 마진 분류¶
- 모든 샘플이 올바르게 분류되어 있다면 이를 하드 마진 분류라고 함, 하지만 데이터가 선형적으로 구분될 수 있어야 제대로 작동하며 이상치에 민감함
- 소프트 마진 분류 : 하드 마진 분류보다 더 유연한 모델로 도로의 폭을 가능한 한 넓게 유지하는 것과 마진 오류 사이에 적절한 균형을 잡는 것
- SVM 모델에서 하이퍼파라미터 C를 조절하여 과대적합을 규제할 수 있음
- SVM 분류기는 로지스틱 회귀 분류기와는 다르게 클래스에 대한 확률을 제공하지 않음
5.2 비선형 SVM 분류¶
- 비선형 데이터셋을 다루는 한 가지 방법은 다항 특성과 같은 특성을 추가하여 선형적으로 구분
5.2.1 다항식 커널¶
- 다항 특성 추가는 낮은 차수의 다항식은 매우 복잡한 데이터셋을 잘 표현하지 못하고 높은 차수의 다항식은 굉장히 많은 특성을 추가하므로 모델을 느리게 만드는 단점 존재
- SVM에는 커널 트릭 존재, 특서을 추가하지 않으면서 다항식 특성을 많이 추가한 것과 같은 결과를 얻게 해 준다.
5.2.2 유사도 특성¶
- 각 샘플 특성 랜드마크와 얼마나 닮았는지 측정하는 유사도 함수로 계산한 특성을 추가하는 것
- 데이터셋에 있는 모든 샘플 위치에 랜드마크를 설정하는 것, 이렇게 하면 차원이 매우 커지고 따라서 변환된 훈련 세트가 선형적으로 구분될 가능성이 높음(단점은 많은 특성이 생성됨)
5.2.4 계산 복잡도¶
- LinearSVC 파이썬 클래쓰는 선형 SVM을 위한 최적화된 알고리즘을 구현한 liblinear 라이브러리를 기반
- SVC는 커널 트릭 알고리즘을 구현한 libsvm 라이브러리를 기반
5.3 SVM 회귀¶
- 일정한 마진 오류 안에서 두 클래스 간의 도로 폭이 가능한 한 최대가 되도록 하는 대신, SVM 회귀는 제한된 마진 오류 안에서 도로 안에 가능한 한 많은 샘플이 들어가도록 학습
- SVR은 SVC의 회귀 버전, LinearSVR은 LinearSVC의 회귀 버전
- SVM은 이상치 탐지에도 사용 가능
5.4 SVM 이론¶
- 생략
연습문제 풀이¶
1. 서포터 벡터 머신의 근본 아이디어는 무엇인가요?
- 근본적인 아이디어는 클래스 사이에 가능한 한 가장 넓은 '도로'를 내는 것이다. 두 클래스를 구분하는 결정 경계와 샘플 사이의 마진을 가능한 크게 내겠다는 것 이다.
2. 서포트 벡터가 무엇인가요?
- SVM이 훈련된 후에 경계를 포함해 도로에 놓인 어떤 샘플 (속해있다) 결정 경계는 서포트 벡터에 의해 결정이 된다. 서포트 벡터가 아닌, 어떤 샘플도 영향을 주지 못한다. 예측할 때에는 전체 훈련 세트가 아니라 서포트 벡터만 관여됨.
3. SVM을 사용할 때 입력값의 스케일이 왜 중요한가요?
- 가장 큰 마진을 내는 결정 경계를 만드는 것이 목표인데, 훈련세트의 스케일이 맞지 안으면 크기가 작은 특성을 무시하는 경향이 있다.
4. SVM 분류기가 샘플을 분류할 때 신뢰도 점수와 확률을 출력할 수 있나요?
- 테스트 샘플과 결정 경계 사이의 거리를 출력할 수 있으므로 이를 신뢰도 점수로 사용할 수 있다. 하지만 점수를 바로 확률의 추정값으로는 변환하지 못한다. sklearn에서 SVM모델을 만들 때 probability = True 로 설정하면 훈련이 끝난 후 SVM의 점수에 로지스틱 회귀를 훈련시켜 확률을 계산한다. 이 설정은 predict_proba() 와 predict_log_proba() 메서드를 추가 시킨다.
5. 수백만 개의 샘플과 수백 개의 특성을 가진 훈련 세트에 SVM 모델을 훈련시키려면 원 문제와 쌍대 문제 중 어떤 것을 사용해야 하나요?
- 커널 SVM은 쌍대 형식만 사용 가능하기에 이 문제는 '선형 SVM'에만 해당한다. 원 문제의 계산 복잡도는 훈련 샘플 수(m)에 비례하지만, 쌍대 형식의 계산 복잡도는 m2~m3 사이의 값에 비례한다. 그러므로 수백 만개의 샘플과 특성이 있다면 쌍대는 너무 느려서 원 문제를 사용해야 한다.
6. RBF 커널을 사용해 SVM 분류기를 훈련시켰더니 훈련 세트에 과소적합된 것 같습니다. γ (gamma)를 증가시켜야 할까, 감소시켜야 할까? C의 경우는 어떠한가?
- 훈련 세트에 과소 적합 되었다는 것은 규제가 너무 큰 것일 수도 있다. 따라서 규제를 줄이기 위해 γ 와 C를 둘 다 증가시키는 것이 모델에 규제를 주어 과소적합을 해결할 수 있다.
In [1]:
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:80% !important;}</style>"))
C:\Users\20229069\AppData\Local\Temp\ipykernel_12060\529043151.py:1: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display
from IPython.core.display import display, HTML
728x90
'Book report > 핸즈온 머신러닝' 카테고리의 다른 글
[핸즈온 머신러닝] Chapter 7. 앙상블 학습과 랜덤 포레스트 (0) | 2024.04.05 |
---|---|
[핸즈온 머신러닝] Chapter 6. 결정 트리 (0) | 2024.04.01 |
[핸즈온 머신러닝] Chapter 4. 모델 훈련 (0) | 2023.09.06 |
[핸즈온 머신러닝] Chapter 3. 분류 (0) | 2023.08.28 |
[핸즈온 머신러닝] Chapter 2. 머신러닝 프로젝트 처음부터 끝까지 (0) | 2023.08.04 |