【轉載】支援向量機通俗導論(理解SVM的三層境界)
前言
第一層、瞭解SVM
1.0、什麼是支援向量機SVM
1.1、線性分類
1.2、線性分類的一個例子
1.3、函式間隔Functional margin與幾何間隔Geometrical margin
1.3.1、函式間隔Functional margin
1.3.2、點到超平面的距離定義:幾何間隔Geometrical margin
1.4、最大間隔分類器Maximum Margin Classifier的定義
1.5、到底什麼是Support Vector
第二層、深入SVM
2.1、從線性可分到線性不可分
2.2、核函式Kernel
2.2.1、如何處理非線性資料
2.2.2、特徵空間的隱式對映:核函式
2.3、使用鬆弛變數處理 outliers 方法
2.4、小結
第三層、證明SVM
3.1、線性學習器
3.1.1、感知機演算法
3.1.2、鬆弛變數
3.2、最小二乘法
3.3、核函式特徵空間
3.4、SMO演算法
3.5、SVM的應用
3.5.1、文字分類
參考文獻及推薦閱讀
預告
前言
動筆寫這個支援向量機(support vector machine)是費了不少勁和困難的,從5月22日凌晨兩點在微博上說我要寫了,到此刻真正動筆要寫此文,中間竟然隔了近半個月(而後你會發現,我寫完此文得花一個半月,修改完善又得再花一個月,故前後加起來至8月底,寫這個SVM便要花足足近3個月)。原因很簡單,一者這個東西本身就並不好懂,要深入學習和研究下去需花費不少時間和精力,二者這個東西也不好講清楚,儘管網上已經有朋友已經寫得不錯了(見文末參考連結),但在描述數學公式的時候還是顯得不夠。得益於同學白石的數學證明,我還是想嘗試寫一下,希望本文在兼顧通俗易懂的基礎上,真真正正能足以成為一篇完整概括和介紹支援向量機的導論性的文章。
本文作為Top 10 Algorithms in Da
在本文中,你將看到,理解SVM分三層境界,
第一層、瞭解SVM(你只需要對SVM有個大致的瞭解,知道它是個什麼東西便已足夠);
第二層、深入SVM(你將跟我一起深入SVM的內部原理,通宵其各處脈絡,以為將來運用它時遊刃有餘);
第三層、證明SVM(當你瞭解了所有的原理之後,你會有大筆一揮,嘗試證明它的衝動);
以此逐層深入,從而照顧到水平深淺度不同的讀者,在保證淺顯直白的基礎上儘可能深入,還讀者一個較為透徹清晰的SVM。
同時,閱讀本文之前,請讀者注意以下兩點:
若讀者用
本文中出現了諸多公式,若想真正理解本文之內容,我希望讀者,能拿張紙和筆出來,把本文所有定理.公式都親自推導一遍或者直接列印下來,在文稿上演算(讀本blog的最好辦法便是直接把某一篇文章列印下來,隨時隨地思考.演算.討論)。
Ok,還是那句原話,有任何問題,歡迎任何人隨時不吝指正 & 賜教,謝謝。
第一層、瞭解SVM
1.0、什麼是支援向量機SVM
然在進入第一層之前,你只需瞭解什麼是支援向量機SVM就夠了,而要明白什麼是SVM,便得從分類說起。
分類作為資料探勘領域中一項非常重要的任務,目前在商業上應用最多(比如分析型CRM裡面的客戶分類模型,客戶流失模型,客戶盈利等等,其本質上都屬於分類問題)。而分類的目的則是學會一個分類函式或分類模型(或者叫做分類器),該模型能吧資料庫中的資料項對映到給定類別中的某一個,從而可以用於預測未知類別。
其實,若叫分類,可能會有人產生誤解,以為凡是分類就是把一些東西或樣例按照類別給區分開來,實際上,分類方法是一個機器學習的方法,分類也成為模式識別,或者在概率統計中稱為判別分析問題。
你甚至可以想當然的認為,分類就是恰如一個商場進了一批新的貨物,你現在要根據這些貨物的特徵分門別類的擺放在相關的架子上,這一過程便可以理解為分類,只是它由訓練有素的計算機程式來完成。
說實話,上面這麼介紹分類可能你不一定內心十分清楚。我來舉個例子吧,比如心臟病的確診中,如果我要完全確診某人得了心臟病,那麼我必須要進行一些高階的手段,或者藉助一些昂貴的機器,那麼若我們沒有那些高科技醫療機器怎麼辦?還怎麼判斷某人是否得了心臟病呢?
當然了,古代中醫是通過望、聞、問、切“四診”,但除了這些,我們在現代醫學裡還是可以利用一些比較容易獲得的臨床指標進行推斷某人是否得了心臟病。如作為一個醫生,他可以根據他以往診斷的病例對很多個病人(假設是500個)進行徹底的臨床檢測之後,已經能夠完全確定了哪些病人具有心臟病,哪些沒有。因為,在這個診斷的過程中,醫生理所當然的記錄了他們的年齡,膽固醇等10多項病人的相關指標。那麼,以後,醫生可以根據這些臨床資料,對後來新來的病人通過檢測那10多項年齡、膽固醇等指標,以此就能推斷或者判定病人是否有心臟病,雖說不能達到100%的標準,但也能達到80、90%的正確率,而這一根據以往臨場病例指標分析來推斷新來的病例的技術,即成為分類classification技術。
OK,既然講到了病例診斷這個例子,接下來咱們就以這個例子來簡單分析下SVM。
假定是否患有心臟病與病人的年齡和膽固醇水平密切相關,下表對應10個病人的臨床資料(年齡用[x1]表示,膽固醇水平用[x2]表示):
這樣,問題就變成了一個在二維空間上的分類問題,可以在平面直角座標系中描述如下:根據病人的兩項指標和有無心臟病,把每個病人用一個樣本點來表示,有心臟病者用“+”形點表示,無心臟病者用圓形點,如下圖所示:
如此我們很明顯的看到,是可以在平面上用一條直線把圓點和“+”分開來的。當然,事實上,還有很多線性不可分的情況,下文將會具體描述。
So,本文將要介紹的支援向量機SVM演算法便是一種分類方法。
所謂支援向量機,顧名思義,分為兩個部分了解,一什麼是支援向量(簡單來說,就是支援 or 支撐平面上把兩類類別劃分開來的超平面的向量點,下文將具體解釋),二這裡的“機”是什麼意思。我先來回答第二點:這裡的“機(machine,機器)”便是一個演算法。在機器學習領域,常把一些演算法看做是一個機器,如分類機(當然,也叫做分類器),而支援向量機本身便是一種監督式學習的方法(什麼是監督學習與非監督學習,請參見第一篇),它廣泛的應用於統計分類以及迴歸分析中。
支援向量機(SVM)是90年代中期發展起來的基於統計學習理論的一種機器學習方法,通過尋求結構化風險最小來提高學習機泛化能力,實現經驗風險和置信範圍的最小化,從而達到在統計樣本量較少的情況下,亦能獲得良好統計規律的目的。
對於不想深究SVM原理的同學(比如就只想看看SVM是幹嘛的),那麼,瞭解到這裡便足夠了,不需上層。而對於那些喜歡深入研究一個東西的同學,甚至究其本質的,咱們則還有很長的一段路要走,萬里長征,咱們開始邁第一步吧(相信你能走完)。
1.1、線性分類
OK,在講SVM之前,咱們必須先弄清楚一個概念:線性分類器(也可以叫做感知機,這裡的機表示的還是一種演算法,本文第三部分、證明SVM中會詳細闡述)。
這裡我們考慮的是一個兩類的分類問題,資料點用
不過,看過支援向量機導論或統計學習方法一書的讀者都知道,我們所熟知的感知機即是一種線性分類模型,如下圖所示(來源:統計學習方法第2章):
1.2、線性分類的一個例子
來理論可能讀者看不懂,咱們來直接舉一個例子吧,且舉最簡單的例子,一個二維平面(一個超平面,在二維空間中的例子就是一條直線),如下圖所示,平面上有兩種不同的點,分別用兩種不同的顏色表示,一種為紅顏色的點,另一種則為藍顏色的點,紅顏色的線表示一個可行的超平面。
從上圖中我們可以看出,這條紅顏色的線把紅顏色的點和藍顏色的點分開來了。而這條紅顏色的線就是我們上面所說的超平面,也就是說,這個所謂的超平面的的確確便把這兩種不同顏色的資料點分隔開來,在超平面一邊的資料點所對應的
接著,我們可以令分類函式(下文將一直用藍色表示分類函式)
f(x)=
顯然,如果
(有一朋友飛狗來自Mare_Desiderii,看了上面的定義之後,問道:請教一下SVM functional margin 為 γ?=y(wTx+b)=yf(x)中的Y是隻取1和-1 嗎?y的唯一作用就是確保functional margin的非負性?真是這樣的麼?當然不是,詳情請見本文評論下第43樓)
當然,有些時候(或者說大部分時候)資料並不是線性可分的,這個時候滿足這樣條件的超平面就根本不存在(不過關於如何處理這樣的問題我們後面會講),這裡先從最簡單的情形開始推導,就假設資料都是線性可分的,亦即這樣的超平面是存在的。更進一步,我們在進行分類的時候,將資料點
1.3、函式間隔Functional margin與幾何間隔Geometrical margin
一般而言,一個點距離超平面的遠近可以表示為分類預測的確信或準確程度。在超平面w*x+b=0確定的情況下,|w*x+b|能夠相對的表示點x到距離超平面的遠近,而w*x+b的符號與類標記y的符號是否一致表示分類是否正確,所以,可以用量y*(w*x+b)的正負性來判定或表示分類的正確性和確信度,於此,我們便引出了函式間隔functional margin的概念。
1.3.1、函式間隔Functional margin
我們定義函式間隔functional margin 為:
接著,我們定義超平面(w,b)關於訓練資料集T的函式間隔為超平面(w,b)關於T中所有樣本點(xi,yi)的函式間隔最小值,即:
γ?=minγ?i (i=1,...n)
然與此同時,問題就出來了。上述定義的函式間隔雖然可以表示分類預測的正確性和確信度,但在選擇分類超平面時,只有函式間隔還遠遠不夠,因為如果成比例的改變w和b,如將他們改變為2w和2b,雖然此時超平面沒有改變,但函式間隔的值f(x)卻變成了原來的改變(代進去一眼便看出來了)。其實,我們可以對法向量w加些約束條件,使其表面上看起來規範化,如此,我們很快又將引出真正定義點到超平面的距離--幾何間隔geometrical margin的概念。
1.3.2、點到超平面的距離定義:幾何間隔Geometrical margin
在給出幾何間隔的定義之前,咱們首先來看下,如上圖所示,對於一個點
又由於
(有的書上會寫成把||w|| 分開相除的形式,如本文參考文獻及推薦閱讀條目9,其中,||w||為w的二階泛數)
不過,這裡的
(代人相關式子可以得出:yi*(w/||w|| + b/||w||))
正如本文評論下讀者popol1991留言:函式間隔y*(wx+b)=y*f(x)實際上就是|f(x)|,只是人為定義的一個間隔度量;而幾何間隔|f(x)|/||w||才是直觀上的點到超平面距離。
想想二維空間裡的點到直線公式:假設一條直線的方程為ax+by+c=0,點P的座標是(x0,y0),則點到直線距離為|ax0+by0+c|/sqrt(a^2+b^2)。如下圖所示:
那麼如果用向量表示,設w=(a,b),f(x)=wx+c,那麼這個距離不正是|f(p)|/||w||麼?OK,下圖中xi,和xj分別到超平面的距離:
1.4、最大間隔分類器Maximum Margin Classifier的定義
於此,我們已經很明顯的看出,函式間隔functional margin 和 幾何間隔geometrical margin 相差一個
通過上節,我們已經知道:
1、functional margin 明顯是不太適合用來最大化的一個量,因為在 hyper plane 固定以後,我們可以等比例地縮放
2、而 geometrical margin 則沒有這個問題,因為除上了
這樣一來,我們的 maximum margin classifier 的目標函式可以定義為:
當然,還需要滿足一些條件,根據 margin 的定義,我們有
其中
通過求解這個問題,我們就可以找到一個 margin 最大的 classifier ,如下圖所示,中間的紅色線條是 Optimal Hyper Plane ,另外兩條線到紅線的距離都是等於
通過最大化 margin ,我們使得該分類器對資料進行分類時具有了最大的 confidence 。但,這個最大分類間隔器到底是用來幹嘛的呢?很簡單,SVM 通過使用最大分類間隙Maximum Margin Classifier 來設計決策最優分類超平面,而為何是最大間隔,卻不是最小間隔呢?因為最大間隔能獲得最大穩定性與區分的確信度,從而得到良好的推廣能力(超平面之間的距離越大,分離器的推廣能力越好,也就是預測精度越高,不過對於訓練資料的誤差不一定是最小的.2012.08.21updated)。
So,對於什麼是Support Vector Machine ,我們可以先這樣理解,如上圖所示,我們可以看到 hyper plane 兩邊的那個 gap 分別對應的兩條平行的線(在高維空間中也應該是兩個 hyper plane)上有一些點,顯然兩個超平面hyper plane 上都會有點存在,否則我們就可以進一步擴大 gap ,也就是增大
1.5、到底什麼是Support Vector
上節,我們介紹了Maximum Margin Classifier,但並沒有具體闡述到底什麼是Support Vector,本節,咱們來重點闡述這個概念。咱們不妨先來回憶一下上節1.4節最後一張圖:
可以看到兩個支撐著中間的 gap 的超平面,它們到中間的純紅線separating hyper plane 的距離相等,即我們所能得到的最大的 geometrical margin
很顯然,由於這些 supporting vector 剛好在邊界上,所以它們是滿足
OK,到此為止,算是瞭解到了SVM的第一層,對於那些只關心怎麼用SVM的朋友便已足夠,不必再更進一層深究其更深的原理。
第二層、深入SVM
2.1、從線性可分到線性不可分
當然,除了在上文中所介紹的從幾何直觀上之外,支援向量的概念也可以從其優化過程的推導中得到。雖然上文1.4節給出了目標函式,卻沒有講怎麼來求解。現在就讓我們來處理這個問題。回憶一下之前得到的目標函式(subject to匯出的則是約束條件):
這個問題等價於(w由分母變成分子,從而也有原來的max問題變為min問題,很明顯,兩者問題等價):
到這個形式以後,就可以很明顯地看出來,它是一個凸優化問題,或者更具體地說,它是一個二次優化問題——目標函式是二次的,約束條件是線性的。這個問題可以用任何現成的 QP (Quadratic Programming) 的優化包進行求解。所以,我們的問題到此為止就算全部解決了。
雖然這個問題確實是一個標準的 QP 問題,但是它也有它的特殊結構,通過 Lagrange Duality 變換到對偶變數 (dual variable) 的優化問題之後,可以找到一種更加有效的方法來進行求解,而且通常情況下這種方法比直接使用通用的 QP 優化包進行優化要高效得多。
也就說,除了用解決QP問題的常規方法之外,還可以應用拉格朗日對偶性,通過求解對偶問題得到最優解,這就是線性可分條件下支援向量機的對偶演算法,這樣做的優點在於:一者對偶問題往往更容易求解;二者可以自然的引入核函式,進而推廣到非線性分類問題。
ok,接下來,你將看到“對偶變數dual variable的優化問題”等類似的關鍵詞頻繁出現,便是解決此凸優化問題的第二種更為高效的解--對偶變數的優化求解.
至於上述提到,關於什麼是Lagrange duality,簡單地來說,通過給每一個約束條件加上一個 Lagrange multiplier(拉格朗日乘值):α,我們可以將約束條件融和到目標函式裡去(也就是說把條件融合到一個函式裡頭,現在只用一個函式表示式便能清楚的表達出我們的問題):
然後我們令
容易驗證,當某個約束條件不滿足時,例如
這裡用
當然,交換以後的問題不再等價於原問題,這個新問題的最優值用
上段說“在滿足某些條件的情況下”,這所謂的“滿足某些條件”就是要滿足KKT條件。而什麼是KKT條件呢?據網上給的資料介紹是(更多見維基百科:KKT 條件),一般地,一個最優化數學模型能夠表示成下列標準形式:
所謂 Karush-Kuhn-Tucker 最優化條件,就是指上式的最小點 x* 必須滿足下面的條件:
我這裡先,直接給結論,後續會證明:我們這裡的問題是滿足 KKT 條件的,因此現在我們便轉化為求解第二個問題。也就是說,現在,咱們的原問題通過滿足一定的條件,已經轉化成了對偶問題。而求解這個對偶學習問題,分為兩個步驟,首先要讓L(w,b,a) 關於
(1)、要讓
帶回上述的
使用拉格朗日定理解凸最優化問題可以使用一個對偶變量表示,用對偶問題表示之後,通常比原問題更容易處理,因為直接處理不等式約束是困難的,而對偶問題通過引入拉格朗日乘子(又稱為對偶變數)來解。
(2)、求對α的極大,即是關於對偶變數dual variable
如前面所說,這個問題有更加高效的優化演算法,不過具體方法在這裡先不介紹,讓我們先來看看推導過程中得到的一些有趣的形式。首先就是關於我們的 hyper plane ,對於一個數據點
w=∑ni=1αiyixi
因此分類函式為:
這裡的形式的有趣之處在於,對於新點 x的預測,只需要計算它與訓練資料點的內積即可(?,?表示向量內積),這一點至關重要,是之後使用 Kernel 進行非線性推廣的基本前提。此外,所謂 Supporting Vector 也在這裡顯示出來——事實上,所有非 Supporting Vector 所對應的係數 α 都是等於零的,因此對於新點的內積計算實際上只要針對少量的“支援向量”而不是所有的訓練資料即可。
為什麼非支援向量對應的
注意到如果
從1.5節到上述所有這些東西,便得到了一個maximum margin hyper plane classifier,這就是所謂的支援向量機(Support Vector Machine)。當然,到目前為止,我們的 SVM 還比較弱,只能處理線性的情況,不過,在得到了對偶dual 形式之後,通過 Kernel 推廣到非線性的情況就變成了一件非常容易的事情了(相信,你還記得本節開頭所說的:通過求解對偶問題得到最優解,這就是線性可分條件下支援向量機的對偶演算法,這樣做的優點在於:一者對偶問題往往更容易求解;二者可以自然的引入核函式,進而推廣到非線性分類問題)。
2.2、核函式Kernel
咱們首先給出核函式的來頭:
在上文中,我們已經瞭解到了SVM處理線性可分的情況,而對於非線性的情況,SVM 的處理方法是選擇一個核函式
也就是說,Minsky和Papert早就在20世紀60年代就已經明確指出線性學習器計算能力有限。為什麼呢?因為總體上來講,現實世界複雜的應用需要有比線性函式更富有表達能力的假設空間,也就是說,目標概念通常不能由給定屬性的簡單線性函式組合產生,而是應該一般地尋找待研究資料的更為一般化的抽象特徵。
而下文我們將具體介紹的核函式則提供了此種問題的解決途徑,從下文你將看到,核函式通過把資料對映到高維空間來增加第一節所述的線性學習器的能力,使得線性學習器對偶空間的表達方式讓分類操作更具靈活性和可操作性。我們知道,訓練樣例一般是不會獨立出現的,它們總是以成對樣例的內積形式出現,而用對偶形式表示學習器的優勢在為在該表示中可調引數的個數不依賴輸入屬性的個數,通過使用恰當的核函式來替代內積,可以隱式得將非線性的訓練資料對映到高維空間,而不增加可調引數的個數(當然,前提是核函式能夠計算對應著兩個輸入特徵向量的內積)。
1、簡而言之:線上性不可分的情況下,支援向量機通過某種事先選擇的非線性對映(核函式)將輸入變數對映到一個高維特徵空間,在這個空間中構造最優分類超平面。我們使用SVM進行資料集分類工作的過程首先是同預先選定的一些非線性對映將輸入空間對映到高維特徵空間(下圖很清晰的表達了通過對映到高維特徵空間,而把平面上本身不好分的非線性資料分了開來):
使得在高維屬性空間中有可能最訓練資料實現超平面的分割,避免了在原輸入空間中進行非線性曲面分割計算。SVM資料集形成的分類函式具有這樣的性質:它是一組以支援向量為引數的非線性函式的線性組合,因此分類函式的表示式僅和支援向量的數量有關,而獨立於空間的維度,在處理高維輸入空間的分類時,這種方法尤其有效,其工作原理如下圖所示:
2、具體點說:在我們遇到核函式之前,如果用原始的方法,那麼在用線性學習器學習一個非線性關係,需要選擇一個非線性特徵集,並且將資料寫成新的表達形式,這等價於應用一個固定的非線性對映,將資料對映到特徵空間,在特徵空間中使用線性學習器,因此,考慮的假設集是這種型別的函式:
這裡?:X->F是從輸入空間到某個特徵空間的對映,這意味著建立非線性學習器分為兩步:
首先使用一個非線性對映將資料變換到一個特徵空間F,
然後在特徵空間使用線性學習器分類。
在上文我提到過對偶形式,而這個對偶形式就是線性學習器的一個重要性質,這意味著假設可以表達為訓練點的線性組合,因此決策規則可以用測試點和訓練點的內積來表示:
如果有一種方式可以在特徵空間中直接計算內積〈φ(xi · φ(x)〉,就像在原始輸入點的函式中一樣,就有可能將兩個步驟融合到一起建立一個非線性的學習器,這樣直接計演算法的方法稱為核函式方法,於是,核函式便橫空出世了。
這裡我直接給出一個定義:核是一個函式K,對所有x,z(-X,滿足,這裡φ是從X到內積特徵空間F的對映。
3、總而言之,舉個簡單直接點的例子,則是如果不是用核技術,就會先計算線性對映phy(x1)和phy(x2),然後計算這兩個特徵的內積,使用了核技術之後,先把phy(x1)和phy(x2)的通用表示式子:< phy(x1),phy(x2) >=k( <x1,x2> )計算出來,注意到這裡的< , >表示內積,k( , )就是對應的核函式,這個表達往往非常簡單,所以計算非常方便。
....
OK,接下來,咱們就進一步從外到裡,來探探這個核函式的真面目。
2.2.1、如何處理非線性資料
在2.1節中我們介紹了線性情況下的支援向量機,它通過尋找一個線性的超平面來達到對資料進行分類的目的。不過,由於是線性方法,所以對非線性的資料就沒有辦法處理了。舉個例子來說,則是如下圖所示的兩類資料,分別分佈為兩個圓圈的形狀,這樣的資料本身就是線性不可分的,你準備如何把這兩類資料分開呢(下文將會有一個相應的三維空間圖)?
上圖所述的這個資料集,就是用兩個半徑不同的圓圈加上了少量的噪音生成得到的,所以,一個理想的分界應該是一個“圓圈”而不是一條線(超平面)。如果用
注意上面的形式,如果我們構造另外一個五維的空間,其中五個座標的值分別為
關於新的座標
2.2.2、特徵空間的隱式對映:核函式
再進一步描述 Kernel 的細節之前,不妨再來看看這個例子對映過後的直觀例子。當然,你我可能無法把 5 維空間畫出來,不過由於我這裡生成資料的時候就是用了特殊的情形,具體來說,我這裡的超平面實際的方程是這個樣子(圓心在
因此我只需要把它對映到
現在讓我們再回到 SVM 的情形,假設原始的資料時非線性的,我們通過一個對映
現在則是在對映過後的空間,即:
而其中的
這樣一來問題就解決了嗎?似乎是的:拿到非線性資料,就找一個對映
不妨還是從最開始的簡單例子出發,設兩個向量
相關推薦
【轉載】支援向量機通俗導論(理解SVM的三層境界)
前言第一層、瞭解SVM 1.0、什麼是支援向量機SVM 1.1、線性分類 1.2、線性分類的一個例子 1.3、函式間隔Functional margin與幾何間隔Geometrical margin 1.3.1、函式間隔Functional margin 1.3.2、點到超平面的距離定
支援向量機通俗導論(理解SVM的三層境界)
作者:July 。致謝:pluskid、白石、JerryLead。 說明:本文最初寫於2012年6月,而後不斷反反覆覆修改&優化,修改次數達上百次,最後修改於2016年11月。 宣告:本文於2012年便早已附上所有參考連結,並註明是篇“學習筆記”,
機器學習之旅:支援向量機通俗導論(理解SVM的三層境界)
支援向量機通俗導論(理解SVM的三層境界)作者:July、pluskid ;致謝:白石、JerryLead出處:結構之法演算法之道blog。前言 動筆寫這個支援向量機(support vector machine)是費了不少勁和困難的,原因很簡單,一者這個東西本身就並
支援向量機通俗導論(理解SVM的三層境界)(2)
第二層、深入SVM 2.1、從線性可分到線性不可分 2.1.1、從原始問題到對偶問題的求解 接著考慮之前得到的目標函式: 由於求的最大值相當於求的最小值,所以上述目標函式等價於(w由分母變成分子,從而也有原來的max問題變為min問題,很明顯,兩者問
機器學習--支援向量機通俗導論(理解SVM的三層境界)
支援向量機通俗導論(理解SVM的三層境界) 作者:July 。致謝:pluskid、白石、JerryLead。 說明:本文最初寫於2012年6月,而後不斷反反覆覆修改&優化,修改次數達上百次,最後修改於2016年11月。 前言
【影象識別】【轉】支援向量機通俗導論
原文:http://www.36dsj.com/archives/24596 作者:July ;致謝:pluskid、白石、JerryLead。 出處:結構之法演算法之道blog。 前言 動筆寫這個支援向量機(support vector mach
支援向量機通俗導論(一)
第一層、瞭解SVM 支援向量機,因其英文名為support vector machine,故一般簡稱SVM,通俗來講,它是一種二類分類模型,其基本模型定義為特徵空間上的間隔最大的線性分類器,其學習策略
支援向量機通俗導論 理解SVM的三層境界
支援向量機通俗導論(理解SVM的三層境界)作者:July 。致謝:pluskid、白石、JerryLead。說明:本文最初寫於2012年6月,而後不斷反反覆覆修改&優化,修改次數達上百次,最後修改於2016年11月。宣告:本文於2012年便早已附
SVM:支援向量機通俗導論
有大量修改,作者的篇幅較長,分析比較直觀,由淺入深,不過不適於數學專業閱讀,更適合於軟體工程師閱覽。建議拜訪原作者。 支援向量機通俗導論(理解SVM的三層境界) 作者:July、pluskid ;致謝:白石、JerryLead 出處:結構之法演算法之道blo
支援向量機通俗導論 ——理解 SVM 的三層境界
AI菌今天要推薦的不是一本書,而是一篇關於向量機的超詳細博文:http://blog.csdn.
【轉載】統計學之三大相關性係數(pearson、spearman、kendall)
三個相關性係數(pearson, spearman, kendall)反應的都是兩個變數之間變化趨勢的方向以及程度,其值範圍為-1到+1,0表示兩個變數不相關,正值表示正相關,負值表示負相關,值越大表示相關性越強。 person correlation coefficient(皮
【轉載】CSS3 常用四個動畫(旋轉 放大 旋轉放大 移動)
CSS3 常用四個動畫(旋轉、放大、旋轉放大、移動)在頁面設計中,給一些圖示或者圖片加上一些動畫效果,會給人非常舒服的感覺。這裡收集了四個常用動畫效果,以便不時之需。轉載原文效果一:360°旋轉 修改rotate(旋轉度數)* { transition:All
【演算法學習】求兩陣列求差數(Java,三重境界)
【題目描述】:兩個陣列,一個A陣列200個,,另一個B陣列199個,兩個陣列亂序,但是差一個數,,,找出差的是那個數。 一。境界1(60分) 【1】遍歷A陣列,對每個數執行【2】操作 【2】遍歷B陣列對比是否存在此數。 參考程式碼如下: /**
【機器學習筆記17】支援向量機
【參考資料】 【1】《統計學習方法》 基本概念 當訓練資料線性可分時,通過硬間隔最大化,學習一個線性的分類器,即線性可分支援向量機,又稱硬間隔支援向量機; 當訓練資料近似線性可分時,通過軟間隔(增加一個鬆弛因子)後學習一個線性的分類器,即軟間隔支援向量機;
【機器學習實戰】支援向量機----分類庫和簡單訓練mnist
前面已經對mnist資料集進行了讀取,現在我們可以直接使用sklearn.svm模組中的演算法庫對mnist資料集進行訓練。 【svm模組】 演算法庫: sklearn.svm模組中提供了這些庫: 大概分成這幾類(除了svm_l1_min_c
【機器學習演算法推導】支援向量機
線性可分 在二維平面中,正樣本和負樣本可以由一條直線完全隔開。假設存在直線 y =
【機器學習實戰-python3】支援向量機(Support Vecrtor Machines SVM)
工具:PythonCharm 書中的程式碼是python2的,而我用的python3,結合實踐過程,這裡會標註實踐時遇到的問題和針對python3的修改。 實踐程式碼和訓練測試資料可以參考這裡 https://github.com/stonycat/ML
【機器學習】支援向量機SVM原理及推導
參考:http://blog.csdn.net/ajianyingxiaoqinghan/article/details/72897399 部分圖片來自於上面部落格。 0 由來 在二分類問題中,我們可以計算資料代入模型後得到的結果,如果這個結果有明顯的區別,
【深度學習基礎-06】支援向量機SVM(下)-線性不可分
1 SVM的優點
【深度學習基礎-05】支援向量機SVM(上)-線性可分
Support Vector Machine 目錄 1背景 2 機器學習的一般框架 3 什麼是超平面 4 線性可區分(linear separatable)和線性不可區分(linear inseparatable) 5 如何計算超平面以及舉例 1背景 Vladim