官术网_书友最值得收藏!

3.4 使用支持向量機(jī)最大化分類間隔

另外一種強(qiáng)大而且廣泛應(yīng)用的機(jī)器學(xué)習(xí)算法是支持向量機(jī)(SVM),它可以看作感知器的擴(kuò)展。感知器算法的目標(biāo)是最小化分類誤差。而支持向量機(jī)算法的優(yōu)化目標(biāo)是最大化的分類間隔。此處間隔定義為可分離的超平面(決策邊界)與其最近的訓(xùn)練樣本之間的距離,而最靠近超平面的訓(xùn)練樣本稱為支持向量,如圖3-9所示。

067-01

圖 3-9

3.4.1 對(duì)分類間隔最大化的直觀認(rèn)識(shí)

該模型的原理是決策邊界間隔較大往往會(huì)產(chǎn)生較低的泛化誤差,而間隔較小的模型則更容易產(chǎn)生過(guò)擬合。為了更好地解釋間隔最大化的概念,讓我們仔細(xì)看看那些與決策邊界平行的正超平面和負(fù)超平面,表示如下:

w0+wTxpos=1 (1)

w0+wTxneg=-1 (2)

上述兩個(gè)線性等式(1)和(2)相減可以得到:

?wTxpos-xneg)=2

可以通過(guò)求解向量w的長(zhǎng)度來(lái)規(guī)范化該方程,具體計(jì)算如下:

067-02

因此得到以下的結(jié)果:

067-03

可以把方程的左邊解釋為正、負(fù)超平面之間的距離,即想要最大化的間隔。

在樣本分類正確的條件約束下,最大化分類間隔也就是使067-04最大化,這也是支持向量機(jī)的目標(biāo)函數(shù)可以將其表示為:

067-05

這里N為數(shù)據(jù)集的樣本總數(shù)。

這兩個(gè)方程可以解釋為:所有的負(fù)類樣本基本上都落在負(fù)超平面一側(cè),而所有的正類樣本都落在正超平面一側(cè),我們可以用更為緊湊的方式表達(dá)如下:

y(i)(w0+wTx(i))≥1 ?i

實(shí)際上,計(jì)算最小化067-06的倒數(shù)更為容易,這可以通過(guò)二次規(guī)劃的方法實(shí)現(xiàn)。然而,對(duì)二次規(guī)劃細(xì)節(jié)的討論已經(jīng)超出了本書(shū)的范圍。你可以閱讀The Nature of Statistical Learning Theory一書(shū)學(xué)習(xí)更多關(guān)于支持向量機(jī)方面的知識(shí)。該書(shū)的作者為Vladimir Vapnik,由Springer出版,也可以閱讀由Chris J. C. Burges的A Tutorial on Support Vector Machines for Pattern Recognition(Data Mining and Knowledge Discovery, 2(2):121-167, 1998)。

3.4.2 用松弛變量解決非線性可分問(wèn)題

盡管我們不想對(duì)最大間隔分類背后更復(fù)雜的數(shù)學(xué)概念進(jìn)行討論,但還是要簡(jiǎn)要地提一下由Vladimir Vapnik于1995年提出的松弛變量ξ,它引出了所謂的軟間隔分類。引入松弛變量ξ的目的是對(duì)于非線性可分?jǐn)?shù)據(jù)來(lái)說(shuō),需要放松線性約束,以允許在分類錯(cuò)誤存在的情況下通過(guò)適當(dāng)代價(jià)的懲罰來(lái)確保優(yōu)化可以收斂。

我們可以直接把取值為正的松弛變量加入線性約束:

w0+wTx(i)≥1-ξ(i) 如果y(i)=1

w0+wTx(i)≤-1+ξ(i) 如果y(i)=-1

對(duì)于i=1…N

其中N為數(shù)據(jù)集樣本總數(shù)量。因此新的最小化(有約束)目標(biāo)為:

068-01

可以通過(guò)變量C來(lái)控制對(duì)分類錯(cuò)誤的懲罰。C值越大相應(yīng)的錯(cuò)誤懲罰就越大,如果選擇的目標(biāo)較小,則對(duì)分類錯(cuò)誤的要求就不那么嚴(yán)格。因此,可以用參數(shù)C來(lái)控制間隔的寬度來(lái)權(quán)衡偏置-方差,如圖3-10所示。

068-02

圖 3-10

這個(gè)概念與上節(jié)所討論的正則化回歸相關(guān),即減小C值會(huì)增加偏差并降低模型的方差。

既然已經(jīng)了解了線性支持向量機(jī)背后的基本概念,我們現(xiàn)在可以訓(xùn)練一個(gè)支持向量機(jī)模型來(lái)對(duì)鳶尾花數(shù)據(jù)集中的不同種類的花進(jìn)行分類:

068-03

執(zhí)行前面的代碼示例,在鳶尾花數(shù)據(jù)集上訓(xùn)練分類器之后得到SVM的三個(gè)決策區(qū)域,如圖3-11所示。

069-01

圖 3-11

008-01

邏輯回歸與支持向量機(jī)

在實(shí)際的分類任務(wù)中,線性邏輯回歸和線性支持向量機(jī)通常會(huì)產(chǎn)生非常相似的結(jié)果。邏輯回歸試圖最大化訓(xùn)練數(shù)據(jù)的條件似然,使其比支持向量機(jī)更容易處理異常值點(diǎn),支持向量機(jī)主要關(guān)心的是最接近決策邊界(支持向量)的點(diǎn)。另一方面,邏輯回歸也有優(yōu)點(diǎn),其模型更簡(jiǎn)單且更容易實(shí)現(xiàn)。此外,邏輯回歸模型更容易更新,這在處理流式數(shù)據(jù)時(shí)很有吸引力。

3.4.3 其他的scikit-learn實(shí)現(xiàn)

在前幾節(jié)中,我們用到了scikit-learn中的LogisticRegression類,它利用基于C/C++開(kāi)發(fā)和高度優(yōu)化的LIBLINEAR庫(kù)。類似地,用于訓(xùn)練SVM的SVC類使用了LIBSVM,它是一個(gè)專門為SVM準(zhǔn)備的C/C++庫(kù)。

與原生Python相比,用LIBLINEAR和LIBSVM的好處是,它允許快速訓(xùn)練大量線性分類器。然而,有時(shí)候數(shù)據(jù)集太大而無(wú)法加載到內(nèi)存。因此,scikit-learn也提供了SGDClassifier類供用戶選擇,這個(gè)類還通過(guò)partial_fit方法支持在線學(xué)習(xí)。SGDClassifier類的邏輯與第2章為Adaline實(shí)現(xiàn)的隨機(jī)梯度算法類似。初始化隨機(jī)梯度下降感知器、邏輯回歸感知器和帶有默認(rèn)參數(shù)的支持向量機(jī)的具體過(guò)程如下所示:

069-02
主站蜘蛛池模板: 睢宁县| 富川| 古丈县| 安新县| 汉中市| 灵璧县| 阳城县| 老河口市| 肇州县| 姚安县| 鞍山市| 宾阳县| 漳浦县| 民勤县| 北川| 无锡市| 潼南县| 循化| 金阳县| 新绛县| 江北区| 巫溪县| 仁寿县| 鄯善县| 扶风县| 璧山县| 商城县| 长丰县| 新巴尔虎右旗| 珠海市| 临湘市| 阳江市| 当涂县| 阿勒泰市| 肇庆市| 吐鲁番市| 灵川县| 平山县| 五家渠市| 江门市| 苏尼特右旗|