1. 程式人生 > >機器學習-19:MachineLN之SVM(1)

機器學習-19:MachineLN之SVM(1)

你要的答案或許都在這裡小鵬的部落格目錄

我想說:

其實很多事情,只要你想做,是肯定有方法做的,並且可以做好;

說起SVM很多人都會感覺頭疼,無非就是公式多一個,其實很多時候你真是用的話,都不用你手動自己實現,你是在學習的一種機器學習的思維方式,就要比為什麼要提出svm?svm解決了什麼問題?svm中的kernel又是想解決線性svm解決不了的問題?svm的優勢在哪裡?就好比生活中不缺乏美,只是缺少發現美的眼睛,在學習中發現問題的能力及其重要,當你問題多了很多人會感覺你煩,但是沒關係,解決了就會柳暗花明;並且要時常問自己從中學到了什麼?再遇到問題是否可以拿來主義?還是可以從中借鑑?

說起SVM,那麼我的問題:(根據

MachineLN之三要素:模型、策略、演算法)

(1)什麼是SVM?(模型)

(2)SVM是如何學習的?(策略)

(3)SVM學習演算法?(演算法)

順便後面的要寫的展望一下: SVM軟間隔最大化;SVM核技巧;SVM求解對偶問題的SMO演算法;SVM不用提到的拉格朗日求解,使用梯度下降損失函式應該怎麼設計;SVM原始碼:smo演算法求解引數 和 使用梯度下降求解引數;

看到這裡你的答案是什麼?下面是我的答案:

(1)什麼是SVM?(模型)

MachineLN之感知機中有提到:感知機的不足和svm的提出;

SVM(支援向量機)表示式:


那麼分類超平面:


這裡和感知機是一樣的,不清楚的可以回過頭看一下;不同的是在策略和演算法上;

(2)SVM是如何學習的?(策略)

先看這麼一句話,開始看可能比較難理解:下面我畫個圖就好理解了,一般來說,一個點距離分離超平面的遠近可以表示分類預測的確信程度,在超平面wx+b=0確定的情況下,|w x+b|能夠相對地表示點距離超平面的遠近,看下圖:


這個理解了,那麼提到函式間隔應該就好理解了,在感知機章節我們就注意過wx+b與類標記符號y的問題,他倆是否一致表示分類似否正確,所以可用y(wx+b)表示分類的正確性和確信度,這就是函式間隔;

那麼函式間隔 functiona lmargin:對於給定的訓練資料集T和超平面(w, b),定義超平面關於樣本點(xi, yi)的函式間隔為:


定義超平面(w,b)關於訓練資料集T的函式間隔為超平面(w,b)關於T中所有樣本點(xi, yi)的函式間隔之最小值,即:


但是把手撕那部分除以||w||作為超平面,你會發現,此時w,b成倍的改變,超平面不變,h1和h2也不變,這就引出了幾何間隔,也可以直接理解為點到直接的距離。(大家不要怪學術的大牛不點透點,這些都是基礎)

接下來幾何間隔 geometric margin:對於給定的訓練資料集T和超平面(w, b),定義超平面關於樣本點(xi, yi)的函式間隔為:


定義超平面(w,b)關於訓練資料集T的函式間隔為超平面(w,b)關於T中所有樣本點(xi, yi)的函式間隔之最小值,即:


那麼接下來就可以引出支援向量機的思想:求解能夠正確分類訓練集並且幾何間隔最大的分類超平面,對線性可分的訓練資料集而言,線性可分分離超平面有無窮多個(等價於感知機),但是幾何間隔最大的分離超平面是唯一的。這裡的間隔最大化又稱為硬間隔(有硬就有軟)最大化。

定義SVM的策略為:

(1)幾何間隔最大化;

(2)並且每個樣本點的幾何間隔大於設最大函式間隔;

可表示為:


整理後:


你會發現成倍的增加w,b對上式沒有影響,那麼就可以轉化為一個等價問題,將取1;整理後可得:


說到這裡了就可以談一下支援向量的由來:線上性可分情況下,訓練資料集的樣本點中與分離超平面蹌離最近的樣本點的例項稱為支援向量( support vector )。支援向量是使約束條件式等號成立的點,即


對於二分類yi的取值為:[-1, 1],那麼應該有表示式滿足上式:


對這兩個就是支援向量H1和H2,看下圖:


到這裡svm的原理應該大概清楚了;下面就是如何求解引數的問題了。

(3)SVM學習演算法?(演算法)

轉為對偶問題(KKT條件成立):對於拉格朗日大家應該很熟悉,用來構建函式求解凸優化問題,svm優化問題引入拉格朗日因子後成了:


根據拉格朗日對偶性,原始問題的對偶問題是拉格朗日函式的極大極小問題:


求最值問題我們最擅長的是求導,那麼接下來就手撕一下吧:


可總結為:


先聊到這裡吧,接下來的內容:SVM軟間隔最大化;SVM核技巧;SVM求解對偶問題的SMO演算法;SVM不用提到的拉格朗日求解,使用梯度下降損失函式應該怎麼設計;SVM原始碼:smo演算法求解引數 和 使用梯度下降求解引數;更精彩!

推薦閱讀: