1. 程式人生 > >SVM基礎及java原始碼實現

SVM基礎及java原始碼實現

當權重向量是單位向量時,幾何間隔就是函式間隔!

【1】最速下降法(或:梯度法)

最速下降法(梯度下降法)只用到了梯度資訊,即目標函式的一階導數資訊,

【2】牛頓法

而牛頓法則同時用到了一階導數和二階導數(Hesse矩陣(二階導數矩陣))資訊。在start point點處,對目標函式進行泰勒展開,並只取二階導數及其之前的幾項(更高階的導數項忽略),

【3】共軛方向法

選定搜尋方向d,使之滿足共軛條件以及下降條件,在此搜尋方向上通過精確線搜尋確定移動的步長,然後將當前點移動到下一點,再重新選定搜尋方向,周而復始,直到滿足終止條件。


【4】共軛梯度法

“共軛梯度法”是一種特殊的“共軛方向法”。共軛方向法與梯度也有關係——共軛方向法利用了目標函式的梯度資訊(梯度與方向的積滿足“下降”條件)。共軛梯度法與此關係有所區別:用當前點的負梯度方向,與前面的搜尋方向進行共軛化,以得到新的搜尋方向。

當前點的搜尋方向是當前點的負梯度方向與前面所有方向的線性組合。

共軛梯度法的收斂性:比最速下降法的收斂性要好得多。

********************************************

若line search的步長αk滿足精確搜尋條件αk=argminα>0f(xk+αdk),搜尋方向dk與負梯度方向−gk的夾角<90°(稱為下降條件),那麼,必然會發生下面3種情況中的一種:

(1)存在某個有限的k,使得gk=0

 (2)f(xk)→−∞ 

(3)gk→0  

也就意味著收斂了

********************************************

線性流形

在迭代過程中,我們會從初始點開始,在搜尋方向上通過精確線搜尋的方法,找到使目標函式值符合要求(例如,min f(X))的步長,然後將點移動到下一點。這樣不斷進行下去,就會得到很多個點。在N維空間Rn中,在每一個搜尋方向上,都有無數個點,它們構成了一個軌跡(或者說一個集合),我們稱之為線性流形

**********************************************

 【最小二乘法】

********************************************

目標:我們最大化的是離超平面最近的點到超平面的距離;

我們的目的是最大化支援向量到分割超平面的幾何間隔r,而不是最大化函式間隔g(x);

我們需要最大化的是幾何間隔r,這等價於我們固定||w0||,然後最大化函式間隔g(x)。

但是實際上我們不會這麼做,通常的處理方法是固定函式間隔g(x)的絕對值為1,然後最小化||w0||。

也就是說我們把支援向量到分割超平面的函式間隔g(x)的絕對值設定為1,然後最小化||w0||。

為了使問題變得易於處理,我們的方法是把目標函式和約束全部融入一個新的函式,即拉格朗日函式,再通過這個函式來尋找最優點。


  SVM得到的目標函式:

 經過論證,我們這裡的問題是滿足 KKT 條件的(首先已經滿足Slater condition,再者f和gi也都是可微的,即L對w和b都可導),因此現在我們便轉化為求解第二個問題。

也就是說,原始問題通過滿足KKT條件,已經轉化成了對偶問題。



***************************************************************
最優化理論與KKT條件

最優化問題可以根據目標函式和約束條件的型別進行分類:
1). 如果目標函式和約束條件都為變數的線性函式, 稱該最優化問題為線性規劃;
2). 如果目標函式為變數的二次函式, 約束條件為變數的線性函式, 稱該最優化問題為二次規劃;
3). 如果目標函式或者約束條件為變數的非線性函式, 稱該最優化問題為非線性規劃.

KTT條件是指在滿足一些有規則的條件下, 一個非線性規劃(Nonlinear Programming)問題能有最優化解法的一個必要和充分條件. 這是一個廣義化拉格朗日乘數的成果

  • 對於等式約束的優化問題,可以應用拉格朗日乘子法去求取最優值;
  • 如果含有不等式約束,可以應用KKT條件去求取;

******************************************

**************************************