我先直觀地闡述我對SVM的理解,這其中不會涉及數(shù)學(xué)公式,然后給出Python代碼。
在玄武等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,玄武網(wǎng)站建設(shè)費用合理。
SVM是一種二分類模型,處理的數(shù)據(jù)可以分為三類:
線性可分,通過硬間隔最大化,學(xué)習(xí)線性分類器
近似線性可分,通過軟間隔最大化,學(xué)習(xí)線性分類器
線性不可分,通過核函數(shù)以及軟間隔最大化,學(xué)習(xí)非線性分類器
線性分類器,在平面上對應(yīng)直線;非線性分類器,在平面上對應(yīng)曲線。
硬間隔對應(yīng)于線性可分數(shù)據(jù)集,可以將所有樣本正確分類,也正因為如此,受噪聲樣本影響很大,不推薦。
軟間隔對應(yīng)于通常情況下的數(shù)據(jù)集(近似線性可分或線性不可分),允許一些超平面附近的樣本被錯誤分類,從而提升了泛化性能。
如下圖:
實線是由硬間隔最大化得到的,預(yù)測能力顯然不及由軟間隔最大化得到的虛線。
對于線性不可分的數(shù)據(jù)集,如下圖:
我們直觀上覺得這時線性分類器,也就是直線,不能很好的分開紅點和藍點。
但是可以用一個介于紅點與藍點之間的類似圓的曲線將二者分開,如下圖:
我們假設(shè)這個黃色的曲線就是圓,不妨設(shè)其方程為x^2+y^2=1,那么核函數(shù)是干什么的呢?
我們將x^2映射為X,y^2映射為Y,那么超平面變成了X+Y=1。
那么原空間的線性不可分問題,就變成了新空間的(近似)線性可分問題。
此時就可以運用處理(近似)線性可分問題的方法去解決線性不可分數(shù)據(jù)集的分類問題。
---------------------------------------------------------------------------------------------------------------------------
以上我用最簡單的語言粗略地解釋了SVM,沒有用到任何數(shù)學(xué)知識。但是沒有數(shù)學(xué),就體會不到SVM的精髓。因此接下來我會用盡量簡潔的語言敘述SVM的數(shù)學(xué)思想,如果沒有看過SVM推導(dǎo)過程的朋友完全可以跳過下面這段。
對于求解(近似)線性可分問題:
由最大間隔法,得到凸二次規(guī)劃問題,這類問題是有最優(yōu)解的(理論上可以直接調(diào)用二次規(guī)劃計算包,得出最優(yōu)解)
我們得到以上凸優(yōu)化問題的對偶問題,一是因為對偶問題更容易求解,二是引入核函數(shù),推廣到非線性問題。
求解對偶問題得到原始問題的解,進而確定分離超平面和分類決策函數(shù)。由于對偶問題里目標函數(shù)和分類決策函數(shù)只涉及實例與實例之間的內(nèi)積,即xi,xj。我們引入核函數(shù)的概念。
拓展到求解線性不可分問題:
如之前的例子,對于線性不可分的數(shù)據(jù)集的任意兩個實例:xi,xj。當我們?nèi)∧硞€特定映射f之后,f(xi)與f(xj)在高維空間中線性可分,運用上述的求解(近似)線性可分問題的方法,我們看到目標函數(shù)和分類決策函數(shù)只涉及內(nèi)積f(xi),f(xj)。由于高維空間中的內(nèi)積計算非常復(fù)雜,我們可以引入核函數(shù)K(xi,xj)=f(xi),f(xj),因此內(nèi)積問題變成了求函數(shù)值問題。最有趣的是,我們根本不需要知道映射f。精彩!
我不準備在這里放推導(dǎo)過程,因為已經(jīng)有很多非常好的學(xué)習(xí)資料,如果有興趣,可以看:CS229 Lecture notes
最后就是SMO算法求解SVM問題,有興趣的話直接看作者論文:Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Machines
我直接給出代碼:SMO+SVM
在線性可分數(shù)據(jù)集上運行結(jié)果:
圖中標出了支持向量這個非常完美,支持向量都在超平面附近。
在線性不可分數(shù)據(jù)集上運行結(jié)果(200個樣本):
核函數(shù)用了高斯核,取了不同的sigma
sigma=1,有189個支持向量,相當于用整個數(shù)據(jù)集進行分類。
sigma=10,有20個支持向量,邊界曲線能較好的擬合數(shù)據(jù)集特點。
我們可以看到,當支持向量太少,可能會得到很差的決策邊界。如果支持向量太多,就相當于每次都利用整個數(shù)據(jù)集進行分類,類似KNN。
Python寫程序原則是所有進來的字符串(讀文件,爬網(wǎng)頁),一進來就decode,處理完之后在要輸出的地方在encode。題主讀入(read)和輸出(print)在一行里,要在win下面想不出錯就這么寫 print response.decode('utf-8').encode('gbk')
這個和用不用python沒啥關(guān)系,是數(shù)據(jù)來源的問題。 調(diào)用淘寶API,使用 api相關(guān)接口獲得你想要的內(nèi)容,我 記得api中有相關(guān)的接口,你可以看一下接口的說明。 用python做爬蟲來進行頁面數(shù)據(jù)的獲齲。
網(wǎng)站題目:python核函數(shù)實現(xiàn)的簡單介紹
當前路徑:http://chinadenli.net/article22/heegjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、域名注冊、全網(wǎng)營銷推廣、靜態(tài)網(wǎng)站、虛擬主機、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)