本文分為三個(gè)部分:第一部分為原理及概念說(shuō)明;第二部分為方法評(píng)價(jià)及應(yīng)用;第三部分為R實(shí)現(xiàn)及參數(shù)說(shuō)明。 一、原理及概念說(shuō)明 支持向量機(jī)(SVM)是一種線性和非線性數(shù)據(jù)的分類方法,它使用非線性映射將原始數(shù)據(jù)映射到高維空間,在該空間內(nèi)搜索最佳分離超平面。在線性可分的情況下,存在這樣的超平面把空間中的類分開,并且該超平面與類的距離最大即最大邊緣超平面,它等價(jià)于求解約束的凸二次最優(yōu)化問(wèn)題(在此不詳述,請(qǐng)參考Reference),此時(shí)是在原輸入空間(n維)內(nèi)尋找最大邊緣超平面;在線性不可分的情況下,可以允許個(gè)別樣本分類錯(cuò)誤,但需要借助非線性映射把原輸入數(shù)據(jù)變換到高維空間,在該空間搜索最大邊緣超平面(此時(shí)是線性的,可用二次最優(yōu)化求解),將該超平面對(duì)應(yīng)到原輸入空間的非線性超平面。然而這個(gè)過(guò)程中的點(diǎn)積計(jì)算量極大,幸而二次最優(yōu)化求解中含有訓(xùn)練元組的點(diǎn)積等價(jià)于核函數(shù)應(yīng)用于原輸入數(shù)據(jù),這些核函數(shù)在原輸入空間上產(chǎn)生非線性分類器,利用核函數(shù)不僅可以省略變換后數(shù)據(jù)元組上的點(diǎn)積計(jì)算,也避免了這種映射,此時(shí)仍在原輸入空間計(jì)算,因此與非線性映射后的維度相比降低了不少。 軟邊緣(Soft Margin):即線性不可分情況下,允許個(gè)別樣本跑到其它類別之中。但要使用參數(shù)來(lái)權(quán)衡兩端,一個(gè)是要保持最大邊緣的分離,另一個(gè)要使這種破例不能太離譜。這種參數(shù)就是對(duì)錯(cuò)誤分類的懲罰程度C。 分離超平面(separating hyperplane):即將類進(jìn)行分離的超平面,這樣的超平面很多,而從超平面到其邊緣的兩側(cè)距離最短且相等的超平面即為最大邊緣超平面(Maximal Margin Hyperplane,MMH),它具有更高的泛化準(zhǔn)確率,此時(shí)MMH到類的最近的訓(xùn)練元組即為支持向量(support vector)。 支持向量是最難分類(臨界)的訓(xùn)練元組,給出了最多的分類信息,它定義了邊緣及最大邊緣超平面。因此,學(xué)習(xí)后的分類器的復(fù)雜度由支持向量數(shù)而不是數(shù)據(jù)維度刻畫,SVM也不太容易過(guò)分?jǐn)M合。過(guò)擬合的原因與不穩(wěn)定性密切相關(guān),改動(dòng)一個(gè)或兩個(gè)訓(xùn)練元組會(huì)引起大范圍的決策邊界的變化,但決策最大邊緣超平面則相對(duì)比較穩(wěn)定,只有當(dāng)被增加或去除的訓(xùn)練元組是支持向量時(shí),邊緣才會(huì)變動(dòng)。過(guò)度擬合的起因是邊緣過(guò)分?jǐn)M合。而支持向量通常只是訓(xùn)練元組中的極小部分,幾乎不會(huì)發(fā)生過(guò)分?jǐn)M合。 即使數(shù)據(jù)維度很高,具有少量支持向量的SVM可以具有很好的泛化性能。利用支持向量數(shù)可計(jì)算SVM分類器的期望誤差率的上界,同樣獨(dú)立于數(shù)據(jù)維度。 支持向量機(jī)回歸(SVR):是由SVM發(fā)展出來(lái)的回歸方法,同樣也有線性可分與不可分情況。與SVM的區(qū)別在于,目標(biāo)是使預(yù)測(cè)誤差最小化同時(shí)函數(shù)平面度最大化。這種權(quán)衡是通過(guò)設(shè)置參數(shù)C來(lái)控制。參數(shù)ε是在回歸函數(shù)周圍定義的一個(gè)管道,管道內(nèi)的誤差將被忽略。如果所有的訓(xùn)練元組都在寬度為2ε的管道內(nèi),算法輸出一個(gè)位于最平的管道中央的函數(shù),這個(gè)管道包含所有訓(xùn)練元組,這種情況下總誤差為0。因此,ε控制了函數(shù)與訓(xùn)練元組的擬合程度。支持向量即在管道外或管道邊緣的訓(xùn)練元組。 二、方法評(píng)價(jià)及應(yīng)用 SVM訓(xùn)練速度較慢;SVM能夠?qū)?fù)雜的非線性邊界建模,不容易過(guò)分?jǐn)M合;SVM總能發(fā)現(xiàn)全局最優(yōu)解。 在實(shí)踐中,不可能事先判定一個(gè)數(shù)據(jù)集是否線性可分,因此可以先假設(shè)數(shù)據(jù)可分并驗(yàn)證,如果不成立再假設(shè)數(shù)據(jù)不可分。 如前所述,支持向量機(jī)可用于回歸、分類和異常檢驗(yàn),前者即為支持向量機(jī)回歸,后者為支持向量機(jī)分類。支持向量機(jī)應(yīng)用在許多領(lǐng)域,包括手寫數(shù)字識(shí)別、對(duì)象識(shí)別、演說(shuō)人識(shí)別,以及基準(zhǔn)時(shí)間序列預(yù)測(cè)檢驗(yàn)。 SVM的研究目標(biāo)主要是提高訓(xùn)練和檢驗(yàn)速度,使得SVM可以成為超大型數(shù)據(jù)集更可行的選擇。其他問(wèn)題包括,為給定的數(shù)據(jù)集確定最佳核函數(shù),為多類問(wèn)題找出更有效的方法。 本帖隱藏的內(nèi)容三、R實(shí)現(xiàn)及參數(shù)說(shuō)明kernlab包: 函數(shù)ksvm()通過(guò)。Call接口,使用bsvm和libsvm庫(kù)中的優(yōu)化方法。對(duì)于分類,有C-SVM分類算法和v-SVM分類算法,同時(shí)還包括C分類器的有界約束的版本;對(duì)于回歸,提供了ε-SVM回歸算法和v-SVM回歸算法;對(duì)于多類分類,有一對(duì)一(one-against-one)方法和原生多類分類方法。 e1071包: 使用libsvm庫(kù)中的優(yōu)化方法。多分類通過(guò)一對(duì)一的投票機(jī)制(one-against-one voting scheme)實(shí)現(xiàn)。e1071包的tune()函數(shù)在指定的范圍內(nèi)選取合適的參數(shù)。 klaR包: klaR對(duì)庫(kù)SVMlight進(jìn)行了簡(jiǎn)單的包裝,提供了函數(shù)svmlight()以分類,可視化。Svmlight()支持C-SVM進(jìn)行分類,ε-SVM進(jìn)行回歸;以一對(duì)所有(one-against-all)進(jìn)行多類分類。SVMlight支持高斯核,多項(xiàng)式,線性和sigmoid核。Svmlight()的參數(shù)形式為字符串形式。 svmpath包: svmpath包里的函數(shù)可用來(lái)選取支持向量機(jī)的cost參數(shù)C rminer包 。。。 核函數(shù): Linear:使用它的話就成為線性向量機(jī),效果基本等價(jià)于Logistic回歸。但它可以處理變量極多的情況,例如文本挖掘。 Polynomial:n次多項(xiàng)式核函數(shù),適用于圖像處理問(wèn)題。選擇n的好方法是從1(一個(gè)線性模型)開始,然后遞增至估計(jì)誤差不再改進(jìn)為止。通常,相當(dāng)小的數(shù)目就足夠了。 Radial basis,高斯核函數(shù),最流行易用的選擇。參數(shù)包括了sigma,其值若設(shè)置過(guò)小,會(huì)有過(guò)度擬合出現(xiàn)。 Sigmoid:反曲核函數(shù),多用于神經(jīng)網(wǎng)絡(luò)的激活函數(shù)。 實(shí)踐中,核函數(shù)的選擇一般并不導(dǎo)致結(jié)果準(zhǔn)確率的很大差別(也有特例!)。 軟邊緣參數(shù)C: cost |
|