[파이썬][scikit-learn] scikit-learn에서 서포트 벡터 머신 (SVM)

서포트 벡터 머신(Support Vector Machine, SVM)은 강력한 머신러닝 알고리즘으로 분류와 회귀 문제에 사용됩니다. scikit-learn은 파이썬에서 SVM을 구현한 간편하고 효율적인 도구입니다. 이번 블로그 포스트에서는 scikit-learn을 사용하여 SVM을 구현하는 방법에 대해 알아보겠습니다.

SVM의 개요

SVM은 데이터를 고차원 공간으로 매핑한 뒤, 클래스 사이에서 가장 큰 폭을 가진 결정 경계(하이퍼플레인)를 찾는 알고리즘입니다. SVM은 데이터의 분포에 크게 의존하지 않으며, 서포트 벡터라고 불리는 일부 샘플만을 고려하여 결정 경계를 정의합니다. 이를 통해 SVM은 분류 문제에서 과적합을 방지하고 일반화 성능을 향상시킬 수 있습니다.

scikit-learn에서 SVM 사용하기

scikit-learn은 SVM을 구현한 svm 모듈을 제공합니다. svm 모듈에서는 다양한 SVM 알고리즘과 관련된 클래스와 함수를 제공합니다. 이번 포스트에서는 가장 기본적인 선형 SVM에 대해 다루겠습니다.

데이터 준비하기

SVM 알고리즘을 사용하기 위해 먼저 데이터를 준비해야 합니다. 예제로는 붓꽃 데이터셋을 사용해보겠습니다. scikit-learn에 기본으로 포함된 load_iris() 함수를 사용하여 데이터를 로드합니다.

from sklearn.datasets import load_iris

# 데이터 로드
iris = load_iris()
X = iris.data
y = iris.target

모델 생성하기

SVM 모델을 생성하기 위해 svm.SVC 클래스를 사용합니다. 주요 매개변수로는 Ckernel이 있습니다. C는 오차 허용범위를 조절하는 매개변수인데, 값이 클수록 오차를 허용하지 않고 결정 경계를 구분하기 위해 노력합니다. kernel은 데이터를 고차원 공간으로 매핑하는 함수입니다. 일반적으로 선형 SVM에서는 linear 커널을 사용합니다.

from sklearn import svm

# 모델 생성
model = svm.SVC(C=1.0, kernel='linear')

모델 학습하기

모델을 학습하기 위해 fit() 메서드를 사용합니다. fit() 메서드는 입력 데이터 X와 해당하는 타겟값 y를 전달합니다.

# 모델 학습
model.fit(X, y)

예측하기

학습된 모델을 사용하여 새로운 데이터의 클래스를 예측할 수 있습니다. predict() 메서드를 사용하여 입력 데이터의 예측 클래스를 반환합니다.

# 예측
X_new = [[5.0, 3.6, 1.3, 0.25], [6.1, 3.1, 4.6, 1.4]]
y_pred = model.predict(X_new)
print(y_pred)  # 예측 결과 출력

결론

이번 포스트에서는 scikit-learn을 사용하여 SVM을 구현하는 방법에 대해 알아보았습니다. SVM은 분류와 회귀 문제에 강력한 성능을 발휘하는 머신러닝 알고리즘입니다. scikit-learn을 활용하면 간편하게 SVM 모델을 구현하고 학습할 수 있습니다. 다음 포스트에서는 SVM의 다양한 매개변수와 파라미터 튜닝에 대해 더 자세히 알아보겠습니다.