인공지능
서포트 벡터 머신 (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(정확도)에 대해서는 자세히쓰진 않았습니다. 다음에 정확도, 민감도등 다양한 분류분석의 평가지표에 대해서 알아보겠습니다.