1. 程式人生 > >吳恩達機器學習(第十三章)---支援向量機SVM

吳恩達機器學習(第十三章)---支援向量機SVM

一、優化目標

邏輯迴歸中的代價函式:

 畫出兩種情況下的函式影象可得:

y=1: 我們找一條折線來近似表示這個函式影象

y=0: 

 

我們用這兩條折線來近似表示原來的曲線函式可得新的代價函式(假設-log(h(x))為cost_1(\theta^Tx),-log(1-h(x))為cost_0(\theta^Tx)):

\frac{1}{m}\sum_{i=1}^{m}{(y^icost_1(\theta^Tx^i)+(1-y^i)cost_0(\theta^Tx^i))}+\frac{\lambda}{2m}\sum_{i=1}^{m}{\theta_i^2}(θ從第二個開始算起)在svm中的表示會與邏輯迴歸中有些差別

即:C\sum_{i=1}^{m}{(y^icost_1(\theta^Tx^i)+(1-y^i)cost_0(\theta^Tx^i))}+\frac{1}{2}\sum_{i=1}^{m}{\theta_i^2}(去掉1/m,C扮演這1/λ的作用但是不等於1/λ)

 

二、大間隔理解

1.svm與邏輯迴歸的差異

                                                                                         \theta^Tx

的值 

  邏輯迴歸 svm
y=0 小於等於-1 小於0
y=1 大於等於1 大於等於0

2.直觀影象

\theta^Tx>=1(y=1),  \theta^Tx<=-1(y=0) 最後優化得到的影象為下圖的黑線:

如果我們用正常的邏輯迴歸,可能會得到綠線,紅線等其他可能的線,但他們到藍線即邊界的距離都沒有黑線大,黑線所表示的函式是到邊界距離最大的函式。所以稱為大間距分類器。

3.C的大小與異常點 

正常資料的情況下我們會得到上面的決策邊界。但是如果存在異常點如下圖:

如果C很大,那麼svm會盡量將所有點都去分開, 所以黑色的決策邊界就會變成紅色的,所以當出現這種情況的時候,我們需要把C的值調小一些。

 

 三、核函式

當遇到一些複雜的非線性決策邊界的時候,我們決策邊界的函式就會比較複雜(eg:z=\theta_0x_0+\theta_1x_1+\theta_2x_2^2+\theta_3x_1x_2+....

這是我們採用另一種方式來替換特徵,修改為 z=\theta_0x_0+\theta_1f_1+\theta_2f_2+\theta_3f_3+....,即用f1來代替x1,f2代替x2^2等等。

那麼如何得到這些f特徵呢?

我們可以選取一些近似於x^1,x^2..x^i的點l^1,l^2..l^i然後用函式來求出各個f的值,這個函式就是核函式,通常我們可以使用高斯函式

f_j=exp(-\frac{\left \| x-l^j \right \|^2}{2\sigma^2})=exp(-\frac{\sum_{i=1}^{n}{(x_i-l^j_i)^2}}{2\sigma^2})(f_0=1)

當x與l很接近時,f就會接近1;當x與l差的很遠時,f就會接近0

通常初始化L的時候把x的對應的值賦給l,l1=x1,l2=x2等等

 求x_i的特徵向量f:

f_1^i=sim(x^i,l^1)

f_2^i=sim(x^i,l^2)......別忘了在f向量中加上f_0哦

對於每個x^i可以求出一個f^i

\theta^Tf>0時,y=1,反之y=0,帶入代價函式可得

(在這裡n=m)

 

四、邏輯迴歸與svm的選擇

假設特徵數為n,訓練樣本為m

1)n相對於m很大的時候,用邏輯迴歸或者svm(核函式為線性函式/無核函式)(n=10000,m=10,100...)

2)n比較小,m大小適中用svm(核函式為高斯函式)(n=1-1000,m=10-10000)

3)n比較小,m比較大則新增特徵項,然後用邏輯迴歸或者svm(核函式為線性函式/無核函式)

五、偏差與方差

1.C比較大或者σ的平方比較小的時候偏差小,方差大

2.C比較小或者σ的平方比較大的是偶偏差大,方差小