機器學習 今天想跟大家聊聊SVM

2021-08-25 10:59:19 字數 2328 閱讀 1627

8.2-8.4號在聽smp會議的時候,發現svm其實還是很常用的(在其他的計算機相關領域)。

在**中資料的baseline中,基本很多都是svm做基線。

我覺得未來演算法的趨勢應該是深度學習方法+傳統的機器學習方法。這樣說的原因在於我了解到了我之前參加的cail2018比賽的第一名有乙個任務用的就是這兩者的結合(一種方法是將深度學習的特徵向量作為傳統機器學習的輸入)。

svm,support vector machine支援向量機(也被叫做支撐向量機)。曾經因為svm的出現,淹沒了之前的一次深度學習革命。但是現在深度學習找到突破口又一次捲土重來,淹沒了svm,但是在一些和計算機交叉的領域,svm還是有自己的一席之地,因為,並不是任何任務都能用深度學習來做的,比如一些小資料。svm既能做分類,也能做回歸,目前先從分類說起。

比如有一組資料

我們可以在這兩組資料中間任意畫一條線作為分割,比如下面的兩條線

但是這樣會導致線的不確定性,也會導致分類的還不確定性。這樣的分類存在侷限性,比如有乙個測試點在這裡

在上述分類情況中,你說它應該屬於哪一類呀?當然應該屬於藍色的類別,但是實際上它應該屬於紅色的類別。像上述的分類情況,沒有泛化能力。那麼怎麼設定分類邊界呢?大家應該都能猜出來,就是離這兩類邊界處的點盡可能的遠。如下

使得邊界點距離分類線最大,這個方法就是svm。

svm就是尋找乙個最優的決策邊界,距離兩個類別的最近的樣本最遠,其中最近的樣本點稱為支援(支撐)向量:

轉化成數學問題,就是使得中間的直線距離兩邊的直線的間隔(margin)最大(這兩邊的直線的斜率是一樣的),也就是svm演算法就是最大化margin。

確定決策線(分類線)的表示式

線的表示式為ax1 + bx2 + c = 0,其中abc為引數,為了寫成矩陣的形式,這裡將abc寫為:

w1x1 + w2x2 + b = 0

矩陣形式為

[w1, w2].t * [x1, x2] + b = 0

簡寫為w.t * x + b = 0

接下來要用到距離公式,這裡先擺出來:

而改完之後的距離公式為:

其中現在我們知道中間的決策線公式為

現在設定紅色點label y=1,藍色點label y=-1(這樣設定y值是為了後續的計算方便,當然取別的值也可以),邊界直線到決策線長度為d,那麼就有公式:

因為d>0,現在做個變換(分母同除以d):

這裡可以看設定w.t / ||w||d 為w.t_d,b / ||w||d 為b_d:

此時可以得出這三條線的公式分別為

而我們看中間的線,右邊是0,左右兩邊同時除以乙個常數||w||*d,是不影響這個直線的,所以改為

這個時候,我們可以看出

引數都為w.t_d和b_d,所以我們可以統一替換為w.t和b,就相當於重新命名而已(該w.t和b非之前的w.t和b):

最後再對條件公式做乙個變形:

大家應該能看懂,僅僅為了方便計算。

現在我們的優化目標就是最大化距離:

而資料都是在兩邊線線上和線外,所以 |w.t*x + b| 的結果永遠大於等於1,所以優化的目標只有||w||:

也就是而為了容易求導和計算,改為;

該公式即為目標函式。

最終問題轉化為數學公式:

(該公式為數學中常見的有條件的數學優化問題。)

寫部落格3年多了今天非常感動跟大家聊聊

算來算去,寫部落格已經3年多了。還記得申請部落格專家成功後的喜悅,確實是一種純粹的喜悅,很高階的喜悅。說實話人生匆匆數十載,往事如風盡付笑談中。有時候回頭想,回頭望,最珍貴的東西是你留下的美好的事情得到別人的欣賞,對別人有所幫助。我還依稀記得我寫這個系列教程時候,確實十分耗盡心血。雖然是個入門教程,...

買西瓜跟機器學習

開坑,記錄機器學習和自然語言處理閱讀的內容。為什麼乙個色澤青綠 根蒂蜷縮 敲聲渾響的西瓜,人們能判斷是正熟的好瓜?因為我們吃過 看過很多西瓜,所以基於色澤 根蒂 敲聲這幾個特徵我們可以做出相當好的判斷。對經驗的利用是 我們人類靠自身完成的,計算機能幫忙嗎?機器學習正是這樣一門學科,它致力於研究如何通...

今天,你用「機器學習即服務」了嗎?

上世紀50年代末,ibm先驅研究員亞瑟 塞繆爾 arthur samuel 訓練了世界上第一台自學電腦學下跳棋遊戲,自那以後,人們就在等待智慧型機器來臨的未來。而 未來 就是現在。塞繆爾當年為我們這個世界引入了機器學習的計算方法,現在這個方法已經成熟,而且已經誕生了各種新產品,形成了渠道計畫的規模。...