기계 학습 삼인조 (시리즈 VII) ---- (코드) 연습 가이드 라인 지원 벡터 머신

면책 조항 :이 문서는 블로거 원본입니다은 허용 블로거없이 복제 할 수 없다. https://blog.csdn.net/x454045816/article/details/79009864
원본 링크 : 원본 텍스트를 읽기
공공 마이크로 채널 번호 "스마트 알고리즘 '의 우려에 오신 것을 환영합니다, 우리는 함께 함께 진행 배웁니다.
이전 시리즈의 경우, "공공의 숫자에 회신 해 주시기 바랍니다 학습 기계 볼 수 있습니다!"
여섯 일련의 연구를 통해, 우리는 로지스틱 회귀 알고리즘, 아래 링크를 찔러 세부 사항을 배웠습니다 :
어떤 공공 우려 "스마트 알고리즘은"우리는 함께 기사의 전체 시리즈를 배울 수 있습니다.
기사의 끝 다운로드 코드를 회신이 기사의 코드 키, 공개 키 번호를 볼 수 있습니다.
사실, 오늘 로지스틱 회귀 알고리즘과 지원 벡터 머신에 대해 얘기하고, 그들이지지 벡터 머신 선형 분류, 비선형 할 수있는 기계 학습 알고리즘의 매우 강력하고 매우 광범위한 응용 프로그램입니다, 퍼셉트론에서 다소 유사한 개발한다 분류, 회귀, 비선형 회귀 문제, 심지어는 아웃 라이어 검출을 적용이 가장 널리 사용되는 기계 학습 알고리즘 중 하나, 실제로는이 분석 서포트 벡터 머신이어야한다.


선형 지원 벡터 머신
우리는 지원 벡터 머신의 기본 원리를 설명하는 몇 가지 수치를 가지고 다음 그림은 홍채 데이터 세트를 분류 데이터가 선형 적으로 분리 설정되어 있기 때문에, 당신은 쉽게 직선으로 타개 할 수있는 꽃 두 종류의를 찾을 수있는 세 가지를 남겨 수 분류, 기본적으로 점선 두 가지 범주를 나눌 수있는 방법, 다른 두 개의 터치가 성공적으로 나눌 수 있습니다,하지만 그들의 결정 경계 너무 가까운 거리의 인스턴스는, 새로운 인스턴스의 경우, 다음 확실히 성능 저하를 예측할 수. 대신 그림의 오른쪽에있는 결정 경계는 그림에서 실선으로 학습 지원 벡터 기계가 아니라 성공적으로 두 가지 범주를 조각하고, 최근의 예는 가능한 한 멀리 거리. SVM은 의사 결정 먼 경계의 가장 가까운 예 사이의 거리를 찾기도 최대 마진 분류로 알려진 벡터 머신을 지원하는 것으로 간주 될 수있다.
장거리 및 지역 결정 경계 훈련 예제의 큰 숫자를 추가하는 결정 경계에 영향을 미치지 않을 경우 위의 그림은, 결정은 전적으로 그 원 위의 이미지의 몇 가지 예제의 가장 가까운 가장자리에서 서로 다른 범주의 경계에 달려 있다고 지적 일부는 이러한 예는 지원 벡터라고합니다.


二、软间隔最大化
如果所有实例能够严格的分布在分离间隔的两侧,此时的支持向量机是根据硬间隔最大化,上面讨论的支持向量机就是这种,那么这里涉及两个问题:1,硬间隔分类器只在线性可分情况下可用,2、对离群值比较敏感。如下图中:
左图中多了一个离群值,此时没有办法找到硬间隔,因此没办法使用上面的支持向量机,右图由于出现一个离群值导致决策边界右移,严重影响了模型的泛化能力。
为了避免上面说的问题,我们需要一个更加灵活的模型,能够在最大间隔和误分类点之间寻找一个平衡,从而使得数据集变得可分类。因此获取的支持向量机是根据软间隔最大化计算的。
在Skicit-learn中,支持向量机是通过超参数C,来控制这个平衡的,C越小,能够获取到更宽的的分类间隔,但是有很多的误分类点,下图中就展示了在线性不可分的数据集上,两种不同软间隔支持向量机。
左图是使用较小的超参数C计算的支持向量机,决策间隔较大,但是出现很多的样本在分类间隔中导致不可分,右图是使用较大的参数C计算的支持向量机,得到了较小的决策间隔,较少的误分类点。
另外,如果你的训练的软间隔支持向量机出现了过拟合情况,也可以通过降低超参数C的值来达到正则化的目的。
下面我们通过支持向量机的对Iris进行分类。
svm_clf.predict([[5.5, 1.7]]),得到分类的结果为1。这里上节讲解的逻辑回归不同,并不会输出预测概率,而是直接输出预测分类值。你还可以使用scikit-learn的SVC(kernel="linear",C=1)来将支持向量机模型,但是比较的慢,特别是在数据集比较大时,因此并不推荐,另外还有SGDClassifier在建支持向量机,通过设置SGDClassifier(loss="hinge",alpha=1/(m*C)),这是使用系列五中正则化的随机梯度下降方法来训练一个线性支持向量机,SGDClassifier训练的支持向量机虽然没有LinearSVC收敛的速度快,但是在处理大型数据集(特别是电脑的配置无法训练的数据集)和在线分类任务上很有用。


三、线性不可分支持向量机
虽然线性支持向量机非常的高效,而且在很多数据集上效果出奇的好,但是有很多的数据集并不是线性可分的,而且加入超参数C之后,效果还是很差。一种处理这种非线性数据集的方法是加入更多的特征,比如多项式特征,在一些情况下,可以将非线性数据集变成线性可分。如下图中,左图是一个简单的数据集中只有一个特征X1,这个数据集并不是线性可分的,但是我们加入第二个特征X2,X2=(X1*X1)之后,变成一个2维的数据集了,此时数据集变成线性可分了。
因此我们对非线性数据集训练支持向量机之前,加入一个多项式的特征。我们通过一个实例来看一下怎么应用,下图是一个月牙形的数据集。通过from sklearn.datasets import make_moons
X, y = make_moons(n_samples=100, noise=0.15, random_state=42)产生。
很明显数据集是线性不可分的情况,我们来看加入一个多项式之后再训练支持向量机。
分类之后的结果如下:
在训练之前加入一些多项式特征是一个简单但是高效的特征处理方法,在各种机器学习算法都是有效果的,但是一个低次多项式并不能处理一些非常复杂的数据集,而高次多项式生成的大量特征会使得训练出来的模型非常的慢。幸运的是,我们通过支持向量机中核技巧来解决这个问题,通过核技巧加入多项式特征不仅能够得到和上面一样的结果,甚至是高次的多项式。下面来试一下。
代码中degree是选择多项式的幂次,coef0是控制通过多项式对模型的影响程度,即下图中的r。下面我们通过加入3次的多项式和10次的多项式,来看看它们分别效果。
很显然,右图出现了过拟合现象,可以尝试降低多项式的幂次,相反如果出现欠拟合,可以适当的加大多项式的幂次。因此最优的幂次和r,可以通过网格搜索的方式寻找。


四、高斯核函数
另外一个处理非线性问题的方式是,使用一个相似性函数,计算每个实例和选定的标识的相似度作为特征加入到训练集中。例如:还是选用前面使用的只有一维特征X1的数据集,在x1 = -2和x1 = 1处加入两个标识,接下来定义一个相似性函数,高斯核函数,选定γ = 0.3。
高斯核函数能够比较x和 ℓ的相似度,并映射到0到1。然后我们来计算新特征,例如,实例x1 = -1处,距离第一个标识距离是1,距离第二个标识是2,因此新的特征,x 2 = exp (–0.3 × 1*1) ≈ 0.74和 x 3 = exp (–0.3 × 2*2 ) ≈ 0.30。实例由x1 = -1,转变成了(0.74,0.3)上面了。因此将所有点转换之后变成下图的右图,数据集变得线性可分。
但是,上面的标识应该如何选取呢,一个简单的方法是对数据集上的每个实例都创建一个标识,这会创建很多维度,也增加了转换之后数据集的线性可分的概率。这个方法的缺点是,如果一个训练集有m个实例,n个特征,转换之后的数据集就有m个实例,m个特征。一旦训练集非常大,会导致出现很大数量的特征,增加计算的时间。
그리고 다항식, 지원 벡터 머신 알고리즘과 같은 방법으로 특징은 또한 다음과 같은 방법을 사용하여, 가우시안 커널, 또는 초승달 데이터 세트의 사용을 위해 사용된다 :
다른 효과는 설정 다른 분류 및 C. 감마에 의해 획득 될 수있다
정규화 매개 변수와 같은 감마 및 C 이전과 같이, 크기, 덜 맞는이 있었다, 당신은 최적의 결과를 달성하기 위해이 두 매개 변수의 값을 조정할 수 있습니다.


V. 회귀
기사의 시작, 우리는 SVM 선형 회귀 및 비선형 회귀 문제의 문제를 해결할 수 있음을 언급했다. 변환 대상으로 사용되는 방법은 우리의 모델을 훈련했다. 회귀 분류 문제를 좋아하지 어디에 두 범주 사이의 최대 무료로 거리를 찾고, 오 분류를 보장하기 위해, 그러나 동시에 데이터의 정도는있는 등 많은 예제로, 회귀 라인에 떨어질 수 있도록 가능한 한 적은 간격이다. 아래 그림과 같이 우리는 어떤 임의의 선형 데이터의 교육을 통해 지원 벡터 기계 회귀 모델을 가지고 :
Ε 도표 위에 간격 회귀의 크기를 제어한다. 간격의 중간에 더 많은 교육 사례를 추가하면 예측 모델에 영향을 미치는, 따라서 벡터 머신 회귀 모델은 영향을받지 ε 지원하지 않습니다. scikit 배우기는 회귀 모델을 훈련 LinearSVR을 사용하는 것입니다.
상응하는 회귀 모델은 상기도 떠났다.
비선형 회귀 작업, 당신은 동일한 핵심 기계 SVM 모델 솔루션을 사용할 수 있습니다.
다른 C 및 ε을 제공함으로써, 상이한 모델 결과를 얻었다.
좌측은 제한 즉, 정규화 파라미터 C의 상대적으로 작은 부가하고, 오른쪽 큰 정규화 제약에 첨가된다.


여섯째, 내용 요약
이 문서에서는 선형 분리 지원 벡터 기계의 분류, 분리 선형을 포함하여, 실용적인 관점에서 지원 벡터 머신을 배우는 것입니다. 선형 분리 선형 분리 소프트 마진 분류, 가우스 커널 다항식의 핵 기술과 기법에 관해서, 하드 간격으로 분류되어 있습니다. 회귀 서포트 벡터 머신을 사용, 지원 벡터 머신 회귀 문제의 특성에 기초하여, 우리는 간격 크기 서포트 벡터 머신을 설정할 수 SVM은 특이점의 검출에 적용 하였다. 관심은 대중의지지 벡터 머신의 수에 대한 자세한 내용을 볼 수있는 경우이 문서는 관련 이론적 설명의 SVM 관련되지 않습니다.


(관련 지식의 더 나은 이해를 들어, "스마트 알고리즘"번호가 그룹과 QQ 마이크로 채널 알고리즘 그룹에 가입하기 위해, "커뮤니티"공공 보내 지능형 알고리즘의 커뮤니티에 가입을 환영합니다)
이 문서에 키워드에 대한 코드를 회신 : svm_code를

추천

출처blog.csdn.net/x454045816/article/details/79009864