인공지능

서포트 벡터 머신 (SVM)의 개념,

큐트아리 2023. 11. 18. 17:09

1. 서포트 벡터 머신 (SVM)

1.1. 서포트 벡터 머신의 목적

서포트 벡터 머신은 주어진 데이터를 가장 잘 분류할 수 있는 최적의 결정 경계를 찾는 것이 목적입니다. 결정 경계는 데이터를 나누는 초평면(2차원에서는 선, 3차원에서는 면)으로 표현됩니다.

1.2. 마진 (Margin)

  • 마진이란?: 결정 경계와 클래스에 속한 데이터 포인트 사이의 거리로, 이를 최대화하면 일반화 성능이 향상됩니다.
  • 마진 최적화: 서포트 벡터 머신은 이러한 마진을 최대화하는 결정 경계를 찾는 것이 주요 목표입니다.

1.3. 서포트 벡터 (Support Vectors)

  • 서포트 벡터란?: 결정 경계에서 가장 가까이 있는 데이터 포인트를 의미하며, 이들이 결정 경계를 찾는 데 큰 역할을 합니다.
  • 서포트 벡터의 역할: 이들은 마진의 경계를 정의하고 결정 경계의 위치를 조절하는 데 사용됩니다.

1.4. 결정 경계 (Decision Boundary)

  • 초평면: 결정 경계는 데이터를 나누는 초평면으로 표현됩니다. 이 초평면은 데이터가 고차원에서 투영된 것입니다.
  • 선형 분리 가능성: 데이터가 선형으로 분리 가능한 경우에 사용되며, 이 경우에는 선형 결정 경계를 찾습니다.

1.5. 커널 기법 (Kernel Trick)

  • 커널 기법: 데이터를 고차원 공간으로 매핑하여 선형으로 분리할 수 있도록 도와주는 방법입니다.
  • 종류: 다항 커널, 가우시안 커널(RBF), 시그모이드 커널 등.

2. LinearSVC (Linear Support Vector Classification)

2.1. 소개

LinearSVC는 서포트 벡터 머신(SVM) 알고리즘 중 하나로, 주로 이진 및 다중 클래스 분류 문제에 사용됩니다. 각 클래스를 잘 구분하는 선(또는 초평면)을 찾아주는 방식으로 작동합니다.

2.2. 선형 결정 경계

  • 선형 결정 경계: LinearSVC는 선형 결정 경계를 찾는데 중점을 둡니다. 이 결정 경계는 데이터 공간을 두 영역으로 나누는 선 또는 초평면입니다.

2.3. 지도 학습

  • 지도 학습 알고리즘: LinearSVC는 지도 학습에 기반하며, 학습 전용 데이터와 해당 클래스 레이블(결과 전용 데이터)을 필요로 합니다. 이를 통해 모델은 주어진 입력 데이터에 대해 클래스를 예측할 수 있습니다.

2.4. 서포트 벡터

  • 서포트 벡터: LinearSVC도 SVM의 개념 중 하나인 서포트 벡터를 사용합니다. 서포트 벡터는 결정 경계와 가장 가까이에 위치한 데이터 포인트들을 의미하며, 결정 경계의 위치를 조절하는 데 중요한 역할을 합니다.

2.5. 특징

  • 다중 클래스 분류: LinearSVC는 다중 클래스 분류 문제를 해결할 수 있는데, 이때는 일대다(OvA 또는 OvR) 방식을 통해 각 클래스를 다른 모든 클래스와 구분합니다.
  • 손실 함수: LinearSVC는 훈련 중에 손실 함수를 최소화하여 최적의 결정 경계를 찾습니다.

6. 코드 예제

from sklearn.svm import LinearSVC #svm알고리즘을 사용해서 LinearSVC이면 분류, LinearSVR이면 회귀선 그림
from sklearn.metrics import accuracy_score

# accuracy_score(정답, 예측)

# 학습데이터 준비
learn_data = [[0,0],[1,0],[0,1],[1,1]]
learn_label = [0,0,0,1] # 종속변수

# 모델 객체 생성
svc = LinearSVC()
# 학습
svc.fit(learn_data,learn_label)

# 검증데이터 준비
test_data = [[0,0],[1,0],[0,1],[1,1]]

# 검증
test_label = svc.predict(test_data)
test_label

# 결과 검증
print(test_data, '의 예측결과 ', test_label)
print('정답률',accuracy_score([0,0,0,1],test_label))

이 코드 예제는 LinearSVC를 사용하여 간단한 데이터셋에 대한 분류 모델을 학습하고 평가하는 방법을 보여줍니다.

7. 주의사항

  • 선형 분리 가능한 경우: LinearSVC는 주로 선형 분리 가능한 경우에 사용됩니다. 비선형 데이터에는 커널 기법을 사용하는 다른 SVM 변형이 더 적합할 수 있습니다.

오늘은 accuracy_score(정확도)에 대해서는 자세히쓰진 않았습니다. 다음에 정확도, 민감도등 다양한 분류분석의 평가지표에 대해서 알아보겠습니다.