머신 러닝에서 벡터 머신 알고리즘 지원
게시 됨: 2020-08-14서포트 벡터 머신 알고리즘에 대해 알아야 할 모든 것
대부분의 초보자는 기계 학습과 관련하여 회귀 및 분류 알고리즘을 자연스럽게 시작합니다. 이러한 알고리즘은 간단하고 따라하기 쉽습니다. 그러나 기계 학습의 개념을 더 잘 이해하려면 이 두 가지 기계 학습 알고리즘을 넘어서는 것이 중요합니다.
기계 학습에는 더 많은 것을 배울 수 있습니다. 이는 회귀 및 분류만큼 간단하지 않을 수 있지만 다양한 복잡한 문제를 해결하는 데 도움이 될 수 있습니다. 그러한 알고리즘 중 하나인 Support Vector Machine Algorithm 을 소개하겠습니다 . 지원 벡터 머신 알고리즘 ( SVM algorithm )은 일반적으로 회귀 및 분류 문제 모두에 대해 효율성과 정확성을 제공할 수 있는 머신 러닝 알고리즘 중 하나라고 합니다.
기계 학습 분야에서 경력을 쌓는 것을 꿈꾼다면 Support Vector Machine은 학습 무기고의 일부가 되어야 합니다. upGrad 에서 우리는 학생들이 경력을 시작하기 위해 최고의 기계 학습 알고리즘을 갖추게 한다고 믿습니다 . 다음 은 기계 학습에서 SVM 알고리즘 을 시작하는 데 도움이 될 수 있는 것 입니다.
목차
서포트 벡터 머신 알고리즘이란?
SVM은 지도 학습 알고리즘의 한 유형으로 2020년에 매우 인기를 얻었으며 앞으로도 계속 그럴 것입니다. SVM의 역사는 1990년으로 거슬러 올라갑니다. Vapnik의 통계적 학습 이론에서 가져온 것입니다. SVM은 회귀 및 분류 문제 모두에 사용할 수 있습니다. 그러나 분류 문제를 해결하는 데 주로 사용됩니다.
SVM은 N차원 공간에서 초평면을 생성하는 판별 분류기입니다. 여기서 n은 미래 데이터 입력을 식별하는 데 도움이 되는 데이터 세트의 기능 수입니다. 혼란스럽게 들리지만 걱정하지 마십시오. 우리는 간단한 평신도 용어로 이해할 것입니다.

지원 벡터 머신 알고리즘은 어떻게 작동합니까?
SVM의 작동 방식에 대해 자세히 알아보기 전에 몇 가지 주요 용어를 이해해 보겠습니다.
초평면
결정 경계 또는 결정 평면이라고도 하는 초평면은 데이터 포인트를 분류하는 데 도움이 되는 경계입니다. 새로운 데이터 포인트가 있는 초평면 쪽은 분리되거나 다른 클래스에 귀속될 수 있습니다. 초평면의 차원은 데이터세트에 귀속되는 기능의 수에 따라 다릅니다. 데이터 세트에 2개의 특징이 있는 경우 초평면은 단순한 선이 될 수 있습니다. 데이터 세트에 3개의 특징이 있는 경우 초평면은 2차원 평면입니다.
지원 벡터
지지 벡터는 초평면에 가장 가깝고 위치에 영향을 미치는 데이터 점입니다. 이러한 벡터는 초평면 위치에 영향을 미치므로 지지 벡터라고 하며 따라서 이름이 Support Vector Machine Algorithm입니다.
여유
간단히 말해서, 여백은 초평면과 지지 벡터 사이의 간격입니다. SVM은 항상 여백을 최대화하는 초평면을 선택합니다. 마진이 클수록 결과의 정확도가 높아집니다. SVM 알고리즘 에 사용되는 여백 에는 하드 및 소프트 의 두 가지 유형이 있습니다 .
훈련 데이터 세트가 선형으로 분리 가능한 경우 SVM은 주변 거리를 최대화하는 두 개의 평행선을 간단히 선택할 수 있습니다. 이것을 하드 마진이라고 합니다. 훈련 데이터 세트가 완전히 선형으로 분리되지 않은 경우 SVM은 약간의 마진 위반을 허용합니다. 정확도가 손상되지 않도록 일부 데이터 포인트가 초평면의 잘못된 면이나 여백과 초평면 사이에 머무를 수 있습니다. 이것을 소프트 마진이라고 합니다.
주어진 데이터 세트에 대해 가능한 초평면이 많이 있을 수 있습니다. VSM의 목표는 새로운 데이터 포인트를 다른 클래스로 분류하기 위해 가장 큰 마진을 선택하는 것입니다. 새 데이터 포인트가 추가되면 SVM은 초평면의 어느 쪽이 데이터 포인트에 속하는지 결정합니다. 그런 다음 새 데이터 포인트가 떨어지는 초평면의 측면을 기반으로 SVM은 이를 다른 클래스로 분류합니다.
읽기: 기계 학습을 위한 선형 대수학: 중요 개념, ML 전에 배워야 하는 이유
서포트 벡터 머신의 종류는 무엇입니까?
훈련 데이터 세트를 기반으로 SVM 알고리즘 은 두 가지 유형이 될 수 있습니다.
선형 SVM

원천
선형 SVM은 선형으로 분리 가능한 데이터 세트에 사용됩니다. 간단한 실제 예는 선형 SVM의 작동을 이해하는 데 도움이 될 수 있습니다. 사람의 체중이라는 단일 기능이 있는 데이터 세트를 고려하십시오. 데이터 포인트는 비만과 비만이 아닌 두 가지 등급으로 분류될 수 있습니다. 데이터 포인트를 이 두 클래스로 분류하기 위해 SVM은 가장 가까운 지원 벡터의 도움으로 최대 여백 초평면을 생성할 수 있습니다. 이제 새로운 데이터 포인트가 추가될 때마다 SVM은 초평면이 떨어지는 위치를 감지하고 비만 여부를 분류합니다.
비선형 SVM

원천
기능의 수가 증가함에 따라 데이터 세트를 선형으로 분리하는 것이 어려워집니다. 이것이 비선형 SVM이 사용되는 곳입니다. 데이터 세트가 선형으로 분리될 수 없는 경우 데이터 포인트를 분리하기 위해 직선을 그릴 수 없습니다. 따라서 이러한 데이터 포인트를 분리하기 위해 SVM은 다른 차원을 추가합니다. 새 차원 z는 z = x2 + Y2로 계산할 수 있습니다. 이 계산은 데이터 세트의 기능을 선형 형식으로 분리하는 데 도움이 되며 SVM은 초평면을 생성하여 데이터 포인트를 분류할 수 있습니다.
데이터 포인트가 새로운 차원을 추가하여 고차원 공간으로 변환되면 초평면으로 쉽게 분리됩니다. 이것은 커널 트릭이라는 도움으로 수행됩니다. 커널 트릭을 사용하여 SVM 알고리즘 은 분리할 수 없는 데이터를 분리 가능한 데이터로 변환할 수 있습니다.
커널이란 무엇입니까?
커널은 저차원 입력을 받아 고차원 공간으로 변환하는 함수입니다. SVM 출력의 정확도를 높이는 데 도움이 되는 튜닝 매개변수라고도 합니다. 그들은 분리 불가능한 데이터 세트를 분리 가능한 데이터 세트로 변환하기 위해 몇 가지 복잡한 데이터 변환을 수행합니다.


원천
SVM 커널의 다른 유형은 무엇입니까?
선형 커널
이름에서 알 수 있듯이 선형 커널은 선형으로 분리 가능한 데이터 세트에 사용됩니다. 예를 들어 모든 알파벳이 새로운 기능인 텍스트 분류와 같이 많은 수의 기능이 있는 데이터 세트에 주로 사용됩니다. 선형 커널의 구문은 다음과 같습니다.
K(x, y) = 합계(x*y)
구문의 x와 y는 두 벡터입니다.
선형 커널로 SVM을 훈련하는 것은 감마 매개변수가 아닌 C 정규화 매개변수만 최적화해야 하므로 다른 커널로 훈련하는 것보다 빠릅니다.
다항식 커널
다항식 커널은 비선형 데이터 세트를 변환하는 데 유용한 선형 커널의 보다 일반화된 형태입니다. 다항식 커널의 공식은 다음과 같습니다.
K(x, y) = (xT*y + c)d
여기서 x와 y는 두 개의 벡터이고, c는 더 높은 차원과 더 낮은 차원의 항에 대한 트레이드오프를 허용하는 상수이고, d는 커널의 차수입니다. 개발자는 알고리즘에서 수동으로 커널의 순서를 결정해야 합니다.
방사형 기저 함수 커널
가우스 커널이라고도 하는 방사형 기저 함수 커널은 분류 문제를 해결하기 위해 SVM 알고리즘 에서 널리 사용되는 커널입니다. 입력 데이터를 무한한 고차원 공간에 매핑할 수 있는 가능성이 있습니다. 방사형 기저 함수 커널은 수학적으로 다음과 같이 나타낼 수 있습니다.
K(x, y) = exp(-감마*합(x – y2))
여기서 x와 y는 두 개의 벡터이고 gamma는 0에서 1 사이의 조정 매개변수입니다. 감마는 학습 알고리즘에서 수동으로 미리 정의됩니다.
선형, 다항식 및 방사형 기저 함수는 초평면 생성 결정과 정확성을 위한 수학적 접근 방식이 다릅니다. 선형 및 다항식 커널은 훈련 시간을 덜 소비하지만 정확도는 낮습니다. 반면에, 방사형 기저 함수 커널은 훈련에 더 많은 시간이 걸리지만 결과 측면에서 더 높은 정확도를 제공합니다.
이제 발생하는 질문은 데이터 세트에 사용할 커널을 선택하는 방법입니다. 결정은 데이터 세트의 복잡성과 원하는 결과의 정확성에 전적으로 의존해야 합니다. 물론 모든 사람은 높은 정확도의 결과를 원하지만 솔루션을 개발하는 데 필요한 시간과 비용에 따라 달라집니다. 또한 방사형 기저 함수 커널은 일반적으로 더 높은 정확도를 제공하지만 일부 상황에서는 선형 커널과 다항식 커널이 동등하게 잘 수행될 수 있습니다.
예를 들어, 선형으로 분리 가능한 데이터의 경우 선형 커널은 방사형 기저 커널과 마찬가지로 훈련 시간을 덜 소모하면서 성능을 발휘합니다. 따라서 데이터 세트가 선형으로 분리 가능한 경우 선형 커널을 선택해야 합니다. 비선형 데이터의 경우 시간과 비용에 따라 다항식 또는 방사형 기저 함수를 선택해야 합니다.
커널에 사용되는 조정 매개변수는 무엇입니까?
C 정규화
C 정규화 매개변수는 각 훈련 데이터 세트에서 특정 수준의 오분류를 허용하기 위해 값을 허용합니다. C 정규화 값이 높을수록 마진이 작은 초평면이 생성되고 많은 오분류가 허용되지 않습니다. 반면 낮은 값은 높은 마진과 더 큰 오분류로 이어집니다.
감마
감마 매개변수는 초평면의 위치 지정에 영향을 미칠 지원 벡터의 범위를 정의합니다. 높은 감마 값은 가까운 데이터 포인트만 고려하고 낮은 값은 멀리 떨어진 포인트를 고려합니다.
Python에서 지원 벡터 머신 알고리즘을 구현하는 방법은 무엇입니까?

원천
SVM 알고리즘 이 무엇이고 어떻게 작동하는지에 대한 기본 아이디어가 있으므로 더 복잡한 것을 살펴보겠습니다. 이제 Python에서 SVM 알고리즘 을 구현하고 실행하는 일반적인 단계를 살펴보겠습니다 . SVM 알고리즘 을 구현하는 방법을 배우기 위해 Python의 Scikit-Learn 라이브러리를 사용할 것입니다 .
무엇보다도 SVM 알고리즘 을 실행하는 데 필요한 Pandas 및 NumPy와 같은 필요한 모든 라이브러리를 가져와야 합니다 . 모든 라이브러리가 있으면 교육 데이터 세트를 가져와야 합니다. 다음으로 데이터 세트를 분석해야 합니다. 데이터 세트를 분석하는 방법에는 여러 가지가 있습니다.
예를 들어 데이터의 차원을 확인하고 응답 변수와 설명 변수로 나누고 KPI를 설정하여 데이터 세트를 분석할 수 있습니다. 데이터 분석이 완료되면 데이터 세트를 전처리해야 합니다. 데이터세트에서 관련성이 없고 불완전하며 잘못된 데이터를 확인해야 합니다.
이제 훈련 부분이 나옵니다. 관련 커널로 알고리즘을 코딩하고 훈련해야 합니다. Scikit-Learn에는 SVM 라이브러리가 포함되어 있으며 여기에서 훈련 알고리즘을 위한 몇 가지 기본 제공 클래스를 찾을 수 있습니다. SVM 라이브러리에는 알고리즘을 훈련하는 데 사용할 커널 유형에 대한 값을 허용하는 SVC 클래스가 포함되어 있습니다.
그런 다음 fit 메서드에 대한 매개변수로 삽입된 알고리즘을 훈련하는 SVC 클래스의 fit 메서드를 호출합니다. 그런 다음 SVC 클래스의 predict 메서드를 사용하여 알고리즘을 예측해야 합니다. 예측 단계를 완료하면 메트릭 라이브러리의 classification_report 및confusion_matrix를 호출하여 알고리즘을 평가하고 결과를 확인해야 합니다.

Support Vector Machine 알고리즘의 응용 프로그램은 무엇입니까?
SVM 알고리즘 에는 다양한 회귀 및 분류 문제에 대한 응용 프로그램이 있습니다. SVM 알고리즘 의 주요 응용 프로그램 은 다음과 같습니다.
- 텍스트 및 하이퍼텍스트 분류
- 이미지 분류
- SAR(Synthetic-Aperture Radar) 등 위성 데이터 분류
- 단백질과 같은 생물학적 물질의 분류
- 손으로 쓴 텍스트의 문자 인식
지원 벡터 머신 알고리즘을 사용하는 이유는 무엇입니까?
SVM 알고리즘 은 다음과 같은 다양한 이점을 제공합니다.
- 비선형 데이터 분리에 효과적
- 저차원 및 고차원 공간 모두에서 매우 정확함
- 지지 벡터는 초평면의 위치에만 영향을 미치므로 과적합 문제에 면역입니다.
확인: 신경망에서 알아야 할 6가지 유형의 활성화 기능
합산
이 기사에서 Support Vector Machine Algorithm 을 자세히 살펴보았습니다 . SVM 알고리즘 , 작동 방식, 유형, 응용 프로그램, 이점 및 Python 구현에 대해 배웠습니다 . 이 기사에서는 SVM 알고리즘 에 대한 기본 아이디어를 제공 하고 몇 가지 질문에 답합니다.
그러나 SVM 알고리즘 이 올바른 초평면이 무엇인지, Python에서 사용할 수 있는 다른 라이브러리는 무엇인지, 훈련 데이터 세트를 어디에서 찾을 수 있는지 와 같은 몇 가지 다른 질문도 가져올 것입니다 . 기계 학습에 대해 자세히 알아보려면 IIIT-B 및 upGrad의 기계 학습 및 AI PG 디플로마를 확인하세요. 이 PG 디플로마는 일하는 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제, IIIT- B 동문 자격, 5개 이상의 실용적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.
기계 학습에서 지원 벡터 기계 알고리즘을 사용할 때의 제한 사항은 무엇입니까?
SVM 방법은 방대한 데이터 세트에 권장되지 않습니다. 도전적인 과정인 SVM에 이상적인 커널을 선택해야 합니다. 또한 SVM은 훈련 데이터 샘플의 수가 각 데이터 세트의 기능 수보다 작을 때 성능이 좋지 않습니다. 서포트 벡터 머신은 확률적 모델이 아니기 때문에 확률 측면에서 분류를 설명할 수 없습니다. 또한 SVM의 알고리즘 복잡성과 메모리 요구 사항은 상당히 높습니다.
선형 및 비선형 SVM 모델은 어떻게 다른가요?
선형 모델의 경우 비선형 서포트 벡터 머신 모델의 경우가 아닌 직선을 그리면 데이터를 쉽게 분류할 수 있습니다. 선형 SVM은 비선형 SVM에 비해 훈련 속도가 더 빠릅니다. 선형 SVM 알고리즘은 각 데이터 포인트에 대한 선형 분리성을 전제로 합니다. 비선형 SVM에서 소프트웨어는 주어진 상황에 가장 적합한 비선형 커널 함수를 사용하여 데이터 벡터를 변환합니다.
C 매개변수는 SVM에서 어떤 역할을 합니까?
SVM에서 C 매개변수는 알고리즘이 달성해야 하는 분류 정확도의 정도를 나타냅니다. 요컨대, C 매개변수는 특정 곡선의 각 오분류된 점에 대해 모델에 패널티를 적용할 정도를 결정합니다. 낮은 C는 결정 표면을 부드럽게 하는 반면 높은 C는 모델이 지원 벡터로 더 많은 샘플을 선택할 수 있도록 하여 모든 훈련 인스턴스를 정확하게 분류하려고 합니다.
