機械学習の三人組(シリーズVII)----(コード付き)実践ガイドラインサポートベクターマシン

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/x454045816/article/details/79009864
オリジナルリンク:オリジナルのテキストを読みます
公共のマイクロチャンネル番号「スマートアルゴリズム」の懸念へようこそ、私たちは一緒に一緒にし、進捗状況を学びます。
以前のシリーズでは、「公共の数に返信してください 機械学習 表示するには、」!
6シリーズの研究を通じて、我々はリンク詳細は下記を突く、ロジスティック回帰アルゴリズムを学びました。
いいえ公共の懸念「スマートアルゴリズムは、」私たちは一緒に記事のシリーズ全体を知ることはできません。
記事の最後には、ダウンロードコードを返信には、この記事のコード・キー、公開鍵番号を表示します。
実際には、今日はロジスティック回帰アルゴリズムとサポートベクターマシンについて話をし、それらをサポートベクトルマシンは、線形分類器、非線形できる機械学習アルゴリズムの非常に強力で、非常に広範なアプリケーションです、パーセプトロンから多少似て開発されています分類器、線形回帰、非線形回帰の問題、さらには外れ値検出を適用し、それが最も広く使用されている機械学習アルゴリズムの一つ、実際にはこの分析サポートベクターマシンでなければなりません。


線形サポートベクターマシン
私たちは、サポートベクターマシンの基本的な原理を説明するためにいくつかの数字を持って、次の図は、虹彩データセットを分類しているデータが線形分離設定されているので、あなたは、簡単に直線で切り出し可能な花の2種類を見つけることができる3つを残しました可能な分類、基本的には点線二つのカテゴリを分割する方法はありません、他の二つのタッチが正常に分けることができますが、彼らの決定境界近すぎる距離インスタンスは、新しいインスタンスであれば、その後、確かにパフォーマンスの低下を予測するために使用すること。代わりに、図の右側に決定境界は、図中の実線に学習サポートベクターマシンが正常に二つのカテゴリーを切り開いただけでなく、最近の例では、可能な限り離れて距離です。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以前のように、フィット以下のフィット感があった場合は、最適な結果を達成するためにこれら2つのパラメータの値を調整することができます。


V.回帰
記事の冒頭では、我々は、SVMは、線形回帰および非線形回帰の問題の問題を解決することができると述べました。変換対象によって使用される方法は、我々のモデルを訓練しました。二つのカテゴリー間の最大自由距離を探して、できるだけ少ない誤分類を確保するために回帰分類問題を、好きですが、同時にデータのできるだけ多くは、含まれている多くの例として、回帰直線の上に落ちることを確実にするためではありませんインターバルインチ 以下に示すように我々は、いくつかのランダムな線形データで訓練を通じてサポートベクターマシン回帰モデルを持っています:
Εの図は、上記間隔の回帰の大きさを制御します。期間の途中でより多くのトレーニング例を追加すると、予測モデルに影響を与えるので、小文字を区別しないεベクターマシン回帰モデルをサポートしていません。scikit学習回帰モデルを訓練するためにLinearSVRを使用することです。
左の上の対応する回帰モデル図。
非線形回帰タスクは、あなたが同じコアマシンSVMモデルのソリューションを使用することができます。
異なるCとεを提供することによって、異なるモデルが結果を得ました。
左制約即ち正則化パラメータCの比較的少量の添加であり、右の大きな正規化制約条件に追加されます。


第六に、コンテンツの概要
この記事では、線形分離サポートベクトルマシンの分類、切っても切れないリニア含め、実用的な観点から、サポートベクトルマシンを学ぶことです。線形分離ソフトマージン分類、ガウシアンカーネル多項式核のスキルやテクニックに来る直線的に切っても切れない、ハード区間分類になります。回帰、サポートベクトルマシンの使用、サポートベクターマシン回帰特性の問題に基づいて、我々は間隔のサイズのサポートベクターマシンを設定することができ、SVMは、外れ値の検出に適用されます。興味が公共のサポートベクターマシンの数についての詳細を見ることができれば、この記事では、関連する理論的説明SVMとは関係ありません。


(関連知識をより良く理解するために、「スマートアルゴリズム」号グループとQQマイクロチャネルアルゴリズムのグループに参加するために、公共の「コミュニティ」を送って、インテリジェントなアルゴリズムのコミュニティに参加することを歓迎)
この記事のキーワードのコードを返信:svm_codeを

おすすめ

転載: blog.csdn.net/x454045816/article/details/79009864