지원 벡터 시스템 튜토리얼 - SVM의 개념을 쉽게 이해할 수 있도록 포괄적이고 대화형 튜토리얼로 만들려고 합니다.
며칠 전, 나는 아버지가 과일가게에서 과일을 사고 있는 아이를 만났다. 저 아이는 딸기를 먹고 싶었지만 똑같이 생긴 두 과일을 헷갈렸다. 그는 잠시 동안 어떤 것이 딸기인지 알고 바구니에서 하나를 골랐다. 그 아이와 마찬가지로 서포트 벡터 머신이 작동한다. 데이터를 보고 두 범주 중 하나로 정렬합니다.
아직도 헷갈리나요? 아래 기사를 읽고 SVM에 대해 자세히 알아보십시오.
지원 벡터 시스템 소개
SVM은 머신 러닝 알고리듬에서 분류에 가장 널리 사용되는 알고리듬이다. 그들의 수학적 배경은 두 계층 사이의 기하학적 구분을 위한 기초 블록을 구축하는 데 있어 필수적이다. Python에서 구현을 관찰하여 Support Vector 머신의 작동 방식을 확인하고 마지막으로 몇 가지 중요한 애플리케이션에 대해 알아보겠습니다.
SVM이란 무엇입니까?
지원 벡터 머신(Support Vector Machine)은 분류 및 회귀 분석을 위한 데이터 분석을 제공하는 지도 머신 러닝 알고리즘의 일종이다. 회귀 분석에 사용할 수 있지만 SVM은 주로 분류에 사용됩니다. 우리는 n차원 공간에서 음모를 꾸민다. 각 형상의 값도 특정 좌표의 값입니다. 그런 다음, 우리는 두 클래스를 구별하는 이상적인 초평면을 찾는다.
이러한 지지 벡터는 개별 관측치의 좌표 표현이다. 그것은 두 계층을 분리하기 위한 개척 방법이다.
SVM은 어떻게 작동합니까?
Support 벡터 머신의 작업 이면의 기본 원칙은 간단하다. 즉, 데이터 세트를 클래스로 분리하는 하이퍼 플레인 생성이다. 샘플 문제부터 시작하겠습니다. 특정 데이터 집합의 경우 파란색 원에서 빨간색 삼각형을 분류해야 한다고 가정합니다. 데이터를 두 개의 클래스로 분류하여 빨간색 삼각형과 파란색 원을 구별하는 선을 만드는 것이 목표입니다.
두 클래스를 구분하는 선에 대한 가설을 세울 수 있지만 이 작업을 수행할 수 있는 선에는 여러 가지가 있을 수 있습니다. 따라서 이 작업을 수행할 수 있는 한 줄의 동의가 없습니다. 다음과 같이 두 클래스를 구분할 수 있는 몇 개의 선을 시각화합니다.
위의 시각화에서 녹색 선과 빨간색 선이 있습니다. 어떤 것이 데이터를 두 개의 클래스로 구분하는 것이 더 나을 것 같습니까? 빨간색 선을 선택하면 두 클래스를 올바르게 분할하는 것이 이상적인 선입니다. 그러나, 우리는 여전히 우리의 데이터를 가장 효율적으로 분류하는 것이 보편적인 선이라는 사실을 구체화하지 못했다.
이 시점에서, 여러분은 인공 신경망에 대해 배우는 것을 놓칠 수 없습니다.
녹색 선은 빨간색 클래스에 너무 가깝기 때문에 이상적인 선이 될 수 없습니다. 따라서, 그것은 우리의 최종 목표인 적절한 일반화를 제공하지 않습니다.
녹색 선은 빨간색 클래스에 너무 가깝기 때문에 이상적인 선이 될 수 없습니다. 따라서, 그것은 우리의 최종 목표인 적절한 일반화를 제공하지 않습니다
SVM 모델은 잘 정의된 결정 경계를 만들어 두 클래스 사이의 거리를 확대하려고 한다. 위의 경우, 우리의 초평면이 데이터를 나누었습니다. 데이터가 2차원에 있는 동안 초평면은 1차원에 있었습니다. 더 높은 차원, 예를 들어 n차원 유클리드 공간의 경우 공간을 두 개의 분리된 구성 요소로 나누는 n-1차원 부분 집합이 있다.
다음은 이 SVM 튜토리얼에서 Python에서 SVM 구현에 대해 살펴보겠습니다. 따라서 계속하기 전에 Python Concepts를 수정하는 것이 좋습니다.
Python에서 SVM을 구현하는 방법
첫 번째 단계에서는 프로젝트에서 SVM 구현에 사용할 중요한 라이브러리를 가져올 것입니다.
파이썬에서 SVM을 구현하는 두 번째 단계에서는 load_iris() 방법으로 사용할 수 있는 홍채 데이터 세트를 사용할 것이다. 우리는 이 분석에서 꽃잎 길이와 너비만을 사용할 것입니다.
코드:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
%pylab inline
경고!! 중요한 것을 놓쳤습니다. 최신 머신 러닝 프로젝트를 연습하는 것을 잊지 마십시오. 다음은 기계 학습을 사용한 신용카드 부정행위 탐지입니다.
다음 단계에서는 train_test_split() 기능을 사용하여 데이터를 교육 및 테스트 세트로 분할합니다.
코드:
pylab.rcParams['figure.figsize'] = (10, 6)
iris_data = datasets.load_iris()
# We'll use the petal length and width only for this analysis
X = iris_data.data[:, [2, 3]]
y = iris_data.target
# Input the iris data into the pandas dataframe
iris_dataframe = pd.DataFrame(iris_data.data[:, [2, 3]],
columns=iris_data.feature_names[2:])
# View the first 5 rows of the data
print(iris_dataframe.head())
# Print the unique labels of the dataset
print('\n' + 'Unique Labels contained in this data are '
+ str(np.unique(y)))
이제 데이터를 시각화하겠습니다. 우리는 클래스 중 하나가 선형적으로 분리 가능하다는 것을 관찰한다.
코드:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
print('The training set contains {} samples and the test set contains {} samples'.format(X_train.shape[0], X_test.shape[0]))
그런 다음, 우리는 데이터에 대한 확장을 수행합니다. 스케일링은 모든 데이터 값이 극단값이 없도록 공통 범위에 있도록 보장합니다.
코드:
markers = ('x', 's', 'o')
colors = ('red', 'blue', 'green')
cmap = ListedColormap(colors[:len(np.unique(y_test))])
for idx, cl in enumerate(np.unique(y)):
plt.scatter(x=X[y == cl, 0], y=X[y == cl, 1],
c=cmap(idx), marker=markers[idx], label=cl)
서포트 벡터 머신의 장점과 단점
SVM의 이점
- 보장된 최적성: 볼록 최적화의 특성 때문에, 설루션은 항상 로컬 최솟값이 아니라 전역 최솟값이 될 것이다.
- 다양한 구현: 파이썬이나 매트랩에서 편리하게 접속할 수 있습니다.
- SVM은 선형 분리 가능 데이터뿐만 아니라 비선형 분리 가능 데이터에도 사용할 수 있습니다. 선형 분리 가능 데이터는 하드 마진인 반면 비선형 분리 가능 데이터는 부드러운 마진을 나타낸다.
- SVM은 준지도 학습 모델을 준수합니다. 데이터 레이블이 지정되거나 레이블이 지정되지 않은 영역에서도 사용할 수 있습니다. 이를 위해서는 변환 SVM이라고 하는 최소화 문제에 대한 조건만 필요합니다.
- 특징 매핑은 모델의 전체적인 훈련 성능의 계산 복잡성에 상당한 부담을 주곤 했다. 그러나 커널 트릭의 도움으로 SVM은 간단한 도트 제품을 사용하여 기능 매핑을 수행할 수 있습니다.
SVM의 단점
- SVM은 텍스트 구조를 처리할 수 없습니다. 이로 인해 순차적 정보가 손실되어 성능이 저하됩니다.
- 바닐라 SVM은 로지스틱 회귀 분석과 유사한 확률적 신뢰 값을 반환할 수 없습니다. 이는 예측의 신뢰성이 여러 응용 분야에서 중요하기 때문에 많은 설명을 제공하지 않는다.
- 커널 선택은 아마도 지원 벡터 시스템의 가장 큰 한계일 것이다. 존재하는 수많은 커널을 고려하면 데이터에 적합한 커널을 선택하기가 어려워진다.
SVM 매개 변수를 조정하는 방법
커널
SVM의 커널은 입력 데이터를 필요한 형식으로 변환하는 역할을 합니다. SVM에 사용되는 커널 중 일부는 선형, 다항식 및 방사형 기본 함수(RBF)이다. 비선형 초평면을 생성하기 위해 RBF 및 다항식 함수를 사용한다. 복잡한 애플리케이션의 경우, 보다 고급 커널을 사용하여 본질적으로 비선형인 클래스를 분리해야 한다. 이 변환으로 정확한 분류기를 얻을 수 있다.
정규화
Scikit-learn's C 매개 변수에서 정규화를 조정하여 정규화를 유지할 수 있다. C는 오류 또는 모든 형태의 오분류를 나타내는 페널티 매개 변수를 나타낸다. 이 오분류를 통해 실제로 얼마나 많은 오차가 견딜 수 있는지 이해할 수 있다. 이를 통해 잘못 분류된 항과 결정 경계 사이의 보정을 무효화할 수 있습니다. 더 작은 C 값으로 작은 여백의 초평면을 얻고 더 큰 C 값으로 더 큰 값의 초평면을 얻는다.
범위.
감마 값이 낮을수록 훈련 데이터 세트가 느슨하게 적합된다. 반대로 감마 값이 높으면 모형이 더 적절하게 적합될 수 있습니다. 감마 값이 낮으면 별도의 평면을 계산하기 위해 인근 지점만 고려하는 반면, 감마 값이 높으면 최종 분리선을 계산하기 위해 모든 데이터 지점을 고려한다.
SVM의 애플리케이션
Support Vector Machine이 사용되는 영역 중 일부는 다음과 같습니다.
얼굴 감지
- 얼굴 감지
SVM은 얼굴과 다른 얼굴을 구분하는 사각 상자를 만들어 환경에 있는 사람의 이미지를 분류할 수 있습니다.
텍스트 및 하이퍼텍스트 분류
- 텍스트 및 하이퍼텍스트 분류
SVM은 텍스트 및 하이퍼텍스트 분류를 수행한다는 의미에서 문서 분류에 사용할 수 있습니다. 생성된 점수를 기준으로 임계값과의 비교를 수행합니다.
생물정보학
- 생물정보학
생물정보학 분야에서 SVM은 단백질과 게놈 분류에 사용된다. 그들은 그들의 생물학적 문제를 바탕으로 환자의 유전 구조를 분류할 수 있다.
필기 인식
- 필기 인식
서포트 벡터 머신이 시각 인식을 위해 사용되는 또 다른 영역은 필기 인식입니다.
요약.
이 기사에서는 Support Vector Machines에 대해 연구하였다. 우리는 이러한 SVM 알고리즘의 작동 방식을 배우고 실제 사례를 통해 이를 구현했다. 또한 일상생활에서 SVM의 다양한 애플리케이션에 대해서도 논의했습니다. 이제 SVM의 완전한 이론을 이해하셨으면 합니다.
'IT' 카테고리의 다른 글
Dimensionality Reduction의 기술과 방법 (0) | 2021.05.17 |
---|---|
SVM(지원 벡터 머신)의 사례 (0) | 2021.05.17 |
딥러닝과 오디오 분석 (0) | 2021.05.17 |
20개의 딥러닝 용어 (0) | 2021.05.17 |
머신러닝과 기업 경영지침 (0) | 2021.05.17 |
댓글