서포트 벡터 머신 (SVM)
Coddy의 머신 러닝 입문 코스 레슨. 19개 중 18번째.
서포트 벡터 머신(SVM)은 분류와 회귀 작업 모두에 사용되는 강력하고 다재다능한 지도 학습 머신러닝 알고리즘입니다. 하지만 주로 분류 문제에서 더 흔히 사용됩니다. SVM은 높은 정확도를 제공하며 고차원 특징 공간에서 잘 작동하여 이미지 인식부터 생물 정보학에 이르는 다양한 응용 분야에 적합합니다.

출처: 위키백과
SVM 알고리즘의 주요 목표는 특징 공간에서 클래스를 가장 잘 구분하는 최적의 초평면(2차원 공간에서는 직선)을 찾는 것입니다. SVM 모델은 데이터를 공간상의 점으로 표현하며, 서로 다른 카테고리의 데이터들이 가능한 한 넓은 빈 공간으로 구분되도록 매핑합니다.
- 초평면(Hyperplane): 기본적으로 클래스를 구분하는 결정 경계입니다. 2차원에서 이 초평면은 직선이지만, 고차원에서는 더 복잡해질 수 있습니다.
- 서포트 벡터(Support Vectors): 초평면에 가장 가까운 데이터 포인트들로, 초평면의 위치를 정의하는 데 결정적인 역할을 합니다. SVM 분류기는 이러한 포인트들에 큰 영향을 받기 때문에
Support Vector머신이라는 이름이 붙여졌습니다. - 마진(Margin): 서로 다른 클래스의 가장 가까운 데이터 포인트들 사이의 간격입니다. 이는 클래스 간의 분리 척도로 간주될 수 있습니다. 마진을 최대한 넓게 확보하는 것이 SVM 학습의 핵심 목표입니다.
SVM의 유형:
- 선형 SVM: 데이터가 선형적으로 분리 가능할 때, 단일 직선을 사용하여 클래스를 구분할 수 있습니다. 이 시나리오에서는 선형 SVM을 사용합니다.
- 비선형 SVM: 데이터가 선형적으로 분리되지 않을 때, SVM은 커널 트릭(kernel trick)이라는 기법을 사용하여 입력 공간을 초평면으로 분리할 수 있는 고차원 공간으로 변환합니다. 커널 트릭은 데이터 클래스 사이에 명확한 마진이 있는 다른 차원으로 데이터를 변환하는 작업을 포함합니다. 이를 통해 SVM은 비선형 문제를 해결할 수 있습니다. 일반적인 커널은 다음과 같습니다:
- 선형 커널(Linear Kernel): 데이터가 선형적으로 분리 가능할 때 사용됩니다.
- 다항식 커널(Polynomial Kernel): 원래의 특징 공간을 지정된 차수의 다항식 특징 공간으로 변환합니다.
- 가우시안 커널(Gaussian Kernel): 그룹으로 군집화된 비선형 데이터에 유용합니다. 특징 공간을 고차원으로 매핑합니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
챌린지
쉬움서포트 벡터 머신(SVM)은 커널 함수를 사용하여 데이터를 분류하기 더 쉬운 고차원 공간으로 변환합니다. 이 과정은 "커널 트릭"으로 알려져 있습니다. 이를 통해 SVM은 비선형 분류 및 회귀 문제를 효율적으로 해결할 수 있습니다.
여기서는 데이터에서 곡선 경계를 허용하는 다항식 커널(polynomial kernel)을 살펴보겠습니다. 이는 데이터를 지정된 차수 d로 높입니다. 이 커널은 클래스 레이블과 속성 사이의 관계가 다항식일 때 특히 유용합니다.
출처: wikipedia
두 개의 리스트(x, y), 차수(d), 그리고 계수(c)를 받아 다항식 커널을 반환하는 polynomial_kernel이라는 함수를 만드세요.
→ (
x 전치 행렬과 y의 내적에 c를 더한 값)의 d 거듭제곱.
직접 해보기
import numpy as np
def polynomial_kernel(x, y, d, c):
x_arr = np.array(x)
y_arr = np.array(y)
# 여기에 코드를 작성하세요머신 러닝 입문의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러