-
當前位置:首頁 > 創(chuàng)意學院 > 技術(shù) > 專題列表 > 正文
svm四種核函數(shù)(svm中常用的核函數(shù)包括哪些)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于svm四種核函數(shù)的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、在svm算法中引入核函數(shù),核函數(shù)是什么意思
只了解一些SVM中的核函數(shù),歡迎交流
SVM本身是線性分類器,使用了核函數(shù)后,相當于把原來的數(shù)據(jù),映射到一個高維空間(在相對低維度的空間中難分類的樣本,很可能在映射到高維空間后用線性分類器就可以分開)。
而在SVM中使用核函數(shù),我理解是替換了SVM中衡量內(nèi)積的方式 (x * z)為K(x,z),以此來達到映射的目的的。
二、哪位朋友能介紹一下支持向量機工具libsvm的用法
LIBSVM的簡單介紹 2006-09-20 15:59:48
大 中 小
1. LIBSVM 軟件包簡介
LIBSVM 是臺灣大學林智仁(Chih-Jen Lin)博士等開發(fā)設(shè)計的一個操作簡單、易于使用、快速有效的通用SVM 軟件包,可以解決分類問題(包括C- SVC、n - SVC )、回歸問題(包括e - SVR、n - SVR )以及分布估計(one-class-SVM )等問題,提供了線性、多項式、徑向基和S形函數(shù)四種常用的核函數(shù)供選擇,可以有效地解決多類問題、交叉驗證選擇參數(shù)、對不平衡樣本加權(quán)、多類問題的概率估計等。LIBSVM 是一個開源的軟件包,需要者都可以免費的從作者的個人主頁http://www.csie.ntu.edu.tw/~cjlin/
處獲得。他不僅提供了LIBSVM的C++語言的算法源代碼,還提供了Python、Java、R、MATLAB、Perl、Ruby、LabVIEW以及C#.net 等各種語言的接口,可以方便的在Windows 或UNIX 平臺下使用。另外還提供了WINDOWS 平臺下的可視化操作工具SVM-toy,并且在進行模型參數(shù)選擇時可以繪制出交叉驗證精度的等高線圖。
2. LIBSVM 使用方法簡介
LibSVM是以源代碼和可執(zhí)行文件兩種方式給出的。如果是Windows系列操作系統(tǒng),可以直接使用軟件包提供的程序,也可以進行修改編譯;如果是Unix類系統(tǒng),必須自己編譯。
LIBSVM 在給出源代碼的同時還提供了Windows操作系統(tǒng)下的可執(zhí)行文件,包括:進行支持向量機訓練的svmtrain.exe;根據(jù)已獲得的支持向量機模型對數(shù)據(jù)集進行預測的svmpredict.exe;以及對訓練數(shù)據(jù)與測試數(shù)據(jù)進行簡單縮放操作的svmscale.exe。它們都可以直接在DOS 環(huán)境中使用。如果下載的包中只有C++的源代碼,則也可以自己在VC等軟件上編譯生成可執(zhí)行文件。
3. LIBSVM 使用的一般步驟是:
1) 按照LIBSVM軟件包所要求的格式準備數(shù)據(jù)集;
2) 對數(shù)據(jù)進行簡單的縮放操作;
3) 考慮選用RBF 核函數(shù);
4) 采用交叉驗證選擇最佳參數(shù)C與g ;
5) 采用最佳參數(shù)C與g 對整個訓練集進行訓練獲取支持向量機模型;
6) 利用獲取的模型進行測試與預測。
4. LIBSVM使用的數(shù)據(jù)格式
1)訓練數(shù)據(jù)和檢驗數(shù)據(jù)文件格式如下:
<label> <index1>:<value1> <index2>:<value2> ...
其中<label> 是訓練數(shù)據(jù)集的目標值,對于分類,它是標識某類的整數(shù)(支持多個類);對于回歸,是任意實數(shù)。<index> 是以1開始的整數(shù),可以是不連續(xù)的;<value>為實數(shù),也就是我們常說的自變量。檢驗數(shù)據(jù)文件中的label只用于計算準確度或誤差,如果它是未知的,只需用一個數(shù)填寫這一欄,也可以空著不填。
在程序包中,還包括有一個訓練數(shù)據(jù)實例:heart_scale,方便參考數(shù)據(jù)文件格式以及練習使用軟件??梢跃帉懶〕绦?,將自己常用的數(shù)據(jù)格式轉(zhuǎn)換成這種格式
2)Svmtrain和Svmpredict的用法
LIBSVM軟件提供的各種功能都是DOS命令執(zhí)行方式。我們主要用到兩個程序,svmtrain(訓練建模)和svmpredict(使用已有的模型進行預測),下面分別對這兩個程序的使用方法、各參數(shù)的意義以及設(shè)置方法做一個簡單介紹:
(1)Svmtrain的用法:
svmtrain [options] training_set_file [model_file]
Options:可用的選項即表示的涵義如下
-s svm類型:SVM設(shè)置類型(默認0)
0 -- C-SVC
1 --v-SVC
2 – 一類SVM
3 -- e -SVR
4 -- v-SVR
-t 核函數(shù)類型:核函數(shù)設(shè)置類型(默認2)
0 – 線性:u'v
1 – 多項式:(r*u'v + coef0)^degree
2 – RBF函數(shù):exp(-r|u-v|^2)
3 –sigmoid:tanh(r*u'v + coef0)
-d degree:核函數(shù)中的degree設(shè)置(默認3)
-g 函數(shù)設(shè)置(默認1/ k)r(gama):核函數(shù)中的
-r coef0:核函數(shù)中的coef0設(shè)置(默認0)
-c cost:設(shè)置C-SVC, -SVR的參數(shù)(默認1)-SVR和
- SVR的參數(shù)(默認0.5)-SVC,一類SVM和-n nu:設(shè)置
-SVR-p e:設(shè)置的值(默認0.1)中損失函數(shù)
-m cachesize:設(shè)置cache內(nèi)存大小,以MB為單位(默認40)
-e :設(shè)置允許的終止判據(jù)(默認0.001)
-h shrinking:是否使用啟發(fā)式,0或1(默認1)
-wi C(C-SVC中的C)(默認1)weight:設(shè)置第幾類的參數(shù)C為weight
-v n: n-fold交互檢驗?zāi)J?/p>
其中-g選項中的k是指輸入數(shù)據(jù)中的屬性數(shù)。option -v 隨機地將數(shù)據(jù)剖分為n部分并計算交互檢驗準確度和均方根誤差。以上這些參數(shù)設(shè)置可以按照SVM的類型和核函數(shù)所支持的參數(shù)進行任意組合,如果設(shè)置的參數(shù)在函數(shù)或SVM類型中沒有也不會產(chǎn)生影響,程序不會接受該參數(shù);如果應(yīng)有的參數(shù)設(shè)置不正確,參數(shù)將采用默認值。training_set_file是要進行訓練的數(shù)據(jù)集;model_file是訓練結(jié)束后產(chǎn)生的模型文件,文件中包括支持向量樣本數(shù)、支持向量樣本以及l(fā)agrange系數(shù)等必須的參數(shù);該參數(shù)如果不設(shè)置將采用默認的文件名,也可以設(shè)置成自己慣用的文件名。
(2)Svmpredict的用法:
svmpredict test_file model_file output_file
model_file 是由svmtrain產(chǎn)生的模型文件;test_file是要進行預測的數(shù)據(jù)文件;Output_file是svmpredict的輸出文件。svm-predict沒有其它的選項。
下面是具體的使用例子
svmtrain -s 0 -c 1000 -t 1 -g 1 -r 1 -d 3 data_file
訓練一個由多項式核(u'v+1)^3和C=1000組成的分類器。
svmtrain -s 1 -n 0.1 -t 2 -g 0.5 -e 0.00001 data_file =-SVM (在RBF核函數(shù)exp(-0.5|u-v|^2)和終止允許限0.00001的條件下,訓練一個 0.1)分類器。 svmtrain -s 3 -p 0.1 -t 0 -c 10 data_file =以線性核函數(shù)u'v和C=10及損失函數(shù) 0.1求解SVM回歸。
三、SVM常考細節(jié)
SVM的原理是什么?
SVM是一種二類分類模型。它的基本模型是在特征空間中尋找間隔最大化的分離超平面的線性分類器。(間隔最大是它有別于感知機)
(1)當訓練樣本線性可分時,通過硬間隔最大化,學習一個線性分類器,即線性可分支持向量機;
(2)當訓練數(shù)據(jù)近似線性可分時,引入松弛變量,通過軟間隔最大化,學習一個線性分類器,即線性支持向量機;
(3)當訓練數(shù)據(jù)線性不可分時,通過使用核技巧及軟間隔最大化,學習非線性支持向量機。
注:以上各SVM的數(shù)學推導應(yīng)該熟悉: 硬間隔最大化(幾何間隔)---學習的對偶問題---軟間隔最大化(引入松弛變量)---非線性支持向量機(核技巧)。
SVM為什么采用間隔最大化?
當訓練數(shù)據(jù)線性可分時,存在無窮個分離超平面可以將兩類數(shù)據(jù)正確分開。
感知機利用誤分類最小策略,求得分離超平面,不過此時的解有無窮多個。
線性可分支持向量機 利用間隔最大化求得最優(yōu)分離超平面 ,這時,解是唯一的。另一方面,此時的分隔超平面所產(chǎn)生的分類結(jié)果是 最魯棒 的,對未知實例的 泛化能力最強 。
然后應(yīng)該借此闡述,幾何間隔,函數(shù)間隔,及從函數(shù)間隔—>求解最小化1/2 ||w||^2 時的w和b。即線性可分支持向量機學習 算法 —最大間隔法的由來。
為什么要將求解SVM的原始問題轉(zhuǎn)換為其對偶問題?
一、是對偶問題往往更易求解(當我們尋找約束存在時的最優(yōu)點的時候,約束的存在雖然減小了需要搜尋的范圍,但是卻使問題變得更加復雜。為了使問題變得易于處理,我們的方法是 把目標函數(shù)和約束全部融入一個新的函數(shù),即拉格朗日函數(shù),再通過這個函數(shù)來尋找最優(yōu)點。 )
二、自然引入核函數(shù),進而推廣到非線性分類問題。
為什么SVM要引入核函數(shù)?
當樣本在原始空間線性不可分時,可將樣本從原始空間映射到一個更高維的特征空間,使得樣本在這個特征空間內(nèi)線性可分。
引入映射后的對偶問題:
在學習預測中,只定義核函數(shù) K ( x , y ),而不是顯式的定義映射函數(shù) ϕ 。因為 特征空間維數(shù)可能很高,甚至可能是無窮維,因此直接計算 ϕ ( x )· ϕ ( y )是比較困難的。 相反,直接計算 K ( x , y )比較容易(即直接在原來的低維空間中進行計算,而不需要顯式地寫出映射后的結(jié)果)。
核函數(shù)的定義: K ( x , y )=< ϕ ( x ), ϕ ( y )>,即在特征空間的內(nèi)積等于它們在原始樣本空間中通過核函數(shù)K計算的結(jié)果。
除了 SVM 之外,任何將計算表示為數(shù)據(jù)點的內(nèi)積的方法,都可以使用核方法進行非線性擴展。
svm RBF核函數(shù)的具體公式?
Gauss徑向基函數(shù)則是局部性強的核函數(shù),其外推能力隨著參數(shù)σ的增大而減弱。
這個核會將原始空間映射為無窮維空間。不過,如果 σ 選得很大的話,高次特征上的權(quán)重實際上衰減得非常快,所以實際上(數(shù)值上近似一下)相當于一個低維的子空間;反過來,如果 σ 選得很小,則可以將任意的數(shù)據(jù)映射為線性可分——當然,這并不一定是好事,因為隨之而來的可能是非常嚴重的過擬合問題。不過,總的來說,通過調(diào)控參數(shù) σ , 高斯核實際上具有相當高的靈活性,也是使用最廣泛的核函數(shù)之一。
為什么SVM對缺失數(shù)據(jù)敏感?
這里說的缺失數(shù)據(jù)是指缺失某些特征數(shù)據(jù),向量數(shù)據(jù)不完整。SVM沒有處理缺失值的策略(決策樹有)。而SVM希望樣本在特征空間中線性可分,所以特征空間的好壞對SVM的性能很重要。缺失特征數(shù)據(jù)將影響訓練結(jié)果的好壞。
SVM是用的是哪個庫?Sklearn/libsvm中的SVM都有什么參數(shù)可以調(diào)節(jié)?
用的是sklearn實現(xiàn)的。采用sklearn.svm.SVC設(shè)置的參數(shù)。本身這個函數(shù)也是基于libsvm實現(xiàn)的(PS: libsvm中的二次規(guī)劃問題的解決算法是SMO)。
SVC函數(shù)的訓練時間是隨訓練樣本平方級增長,所以不適合超過10000的樣本。
對于多分類問題,SVC采用的是one-vs-one投票機制,需要兩兩類別建立分類器,訓練時間可能比較長。
sklearn.svm.SVC( C=1.0 , kernel='rbf' , degree=3 , gamma='auto' , coef0=0.0 , shrinking=True , probability=False , tol=0.001 , cache_size=200 , class_weight=None , verbose=False , max_iter=-1 , decision_function_shape=None , random_state=None )
參數(shù):
l C:C-SVC的懲罰參數(shù)C?默認值是1.0
C越大,相當于懲罰松弛變量,希望松弛變量接近0,即對誤分類的懲罰增大,趨向于對訓練集全分對的情況,這樣對訓練集 測試 時準確率很高,但泛化能力弱。C值小,對誤分類的懲罰減小,允許容錯,將他們當成噪聲點,泛化能力較強。
l kernel :核函數(shù),默認是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’
0 – 線性:u'v
1 – 多項式:(gamma*u'*v + coef0)^degree
2 – RBF函數(shù):exp(-gamma|u-v|^2)
3 –sigmoid:tanh(gamma*u'*v + coef0)
l degree :多項式poly函數(shù)的維度,默認是3,選擇其他核函數(shù)時會被忽略。
l gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函數(shù)參數(shù)。默認是’auto’,則會選擇1/n_features
l coef0 :核函數(shù)的常數(shù)項。對于‘poly’和 ‘sigmoid’有用。
l probability: 是否采用概率估計?.默認為False
l shrinking :是否采用shrinking heuristic方法,默認為true
l tol: 停止訓練的誤差值大小,默認為1e-3
l cache_size :核函數(shù)cache緩存大小,默認為200
l class_weight :類別的權(quán)重,字典形式傳遞。設(shè)置第幾類的參數(shù)C為weight*C(C-SVC中的C)
l verbose :允許冗余輸出?
l max_iter :最大迭代次數(shù)。-1為無限制。
l decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3
l random_state :數(shù)據(jù)洗牌時的種子值,int值
主要調(diào)節(jié)的參數(shù)有:C、kernel、degree、gamma、coef0。
SVM如何處理多分類問題?
一般有兩種做法:一種是直接法,直接在目標函數(shù)上修改,將多個分類面的參數(shù)求解合并到一個最優(yōu)化問題里面??此坪唵蔚怯嬎懔繀s非常的大。
另外一種做法是間接法:對訓練器進行組合。其中比較典型的有 一對一 ,和 一對多 。
一對多,就是對每個類都訓練出一個分類器,由svm是二分類,所以將此而分類器的兩類設(shè)定為目標類為一類,其余類為另外一類。這樣針對k個類可以訓練出k個分類器,當有一個新的樣本來的時候,用這k個分類器來測試,那個分類器的概率高,那么這個樣本就屬于哪一類。這種方法效果不太好,bias比較高。
svm一對一法(one-vs-one),針對任意兩個類訓練出一個分類器,如果有k類,一共訓練出C(2,k) 個分類器,這樣當有一個新的樣本要來的時候,用這C(2,k) 個分類器來測試,每當被判定屬于某一類的時候,該類就加一,最后票數(shù)最多的類別被認定為該樣本的類。
四、SVM到底是什么?
SVM叫做支持向量機( Support Vector Machines)是由Vanpik領(lǐng)導的AT&TBell實驗室研究小組
在1963年提出的一種新的非常有潛力的分類技術(shù), SVM是一種基于統(tǒng)計學習理論的模式識別方法,主要應(yīng)用于模式識別領(lǐng)域.由于當時這些研究尚不十分完善,在解決模式識別問題中往往趨于保守,且數(shù)學上比較艱澀,因此這些研究一直沒有得到充的重視.直到90年代,一個較完善的理論體系—統(tǒng)計學習理論 ( StatisticalLearningTheory,簡稱SLT) 的實現(xiàn)和由于神經(jīng)網(wǎng)絡(luò)等較新興的機器學習方法的研究遇到一些重要的困難,比如如何確定網(wǎng)絡(luò)結(jié)構(gòu)的問題、過學習與欠學習問題、局部極小點問題等,使得SVM迅速發(fā)展和完善,在解決小樣本 、非線性及高維模式識別問題中表現(xiàn)出許多特有的優(yōu)勢,并能夠推廣應(yīng)用到函數(shù)擬合等其他機器學習問題中.從此迅速的發(fā)展起來,現(xiàn)在已經(jīng)在許多領(lǐng)域(生物信息學,文本和手寫識別等)都取得了成功的應(yīng)用。
SVM的關(guān)鍵在于核函數(shù),這也是最喜人的地方。低維空間向量集通常難于劃分,解決的方法是將它們映射到高維空間。但這個辦法帶來的困難就是計算復雜度的增加,而核函數(shù)正好巧妙地解決了這個問題。也就是說,只要選用適當?shù)暮撕瘮?shù),我們就可以得到高維空間的分類函數(shù)。在SVM理論中,采用不同的核函數(shù)將導致不同的SVM算法
它是一種以統(tǒng)計學理論為基礎(chǔ)的,以結(jié)構(gòu)風險最小化的學習機學習方法,要優(yōu)于神經(jīng)網(wǎng)絡(luò)學習
以上就是關(guān)于svm四種核函數(shù)相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
百度網(wǎng)盤svip7天激活碼免費(百度網(wǎng)盤svip七天激活碼)
深圳華創(chuàng)集團董事長(深圳華創(chuàng)集團董事長字宏軍)