svm之大間距分類(斯坦福machine learning week 7)

1 構建支持向量機

擁有了這些定義之後,現在我們就開始構建支持向量機。

1.1 替換邏輯迴歸函數

這就是我們在邏輯迴歸中使用的代價函數J(θ):
這裏寫圖片描述

J ( θ ) = 1 m i = 1 m [ y ( i )   log ( h θ ( x ( i ) ) ) + ( 1 y ( i ) )   log ( 1 h θ ( x ( i ) ) ) ] + λ 2 m j = 1 n θ j 2

對於支持向量機而言,實際上,我們要將

上面式子中的這一項: ( l o g h θ ( x ( i ) ) ) 替換爲: c o s t 1 ( z ) ,即: c o s t 1 ( θ T x ( i ) )
同樣,這一項: ( ( l o g ( 1 h θ ( x ( i ) ) ) ) ) 替換爲: c o s t 0 ( z ) : c o s t 0 ( θ T x ( i ) )
其中cost分別爲下面的紅線:

圖片描述
我們命名爲 c o s t 1 ( z )
圖片描述

我們命名爲 c o s t 2 ( z )

這裏替換之後的 c o s t 1 ( z ) c o s t 0 ( z ) 就是上面提到的那兩條靠近邏輯迴歸函數的折線。

所以對於支持向量機的最小化代價函數問題,代價函數的形式如下:

m i n θ 1 m [ i = 1 m y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + λ 2 m j = 1 n θ j 2

1.2 去除多餘的常數項 1 m

現在按照支持向量機的慣例,我們去除 1 m 這一項,因爲這一項是個常數項,即使去掉我們也可以得出相同的 θ 最優值:

m i n θ i = 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + λ 2 j = 1 n θ j 2

1.3 正則化項係數的處理

在邏輯迴歸的目標函數中,我們有兩項表達式:

來自於訓練樣本的代價函數:

1 m [ i = 1 m y ( i ) ( l o g h θ ( x ( i ) ) ) + ( 1 y ( i ) ) ( ( l o g ( 1 h θ ( x ( i ) ) ) ) ) ]

正則化項:
λ 2 j = 1 n θ j 2

我們不得不使用正則化項來平衡我們的代價函數。這就相當於:

A + λ B

其中A相當於上面的第一項,B相當於第二項。

我們通過修改不同的正則化參數 λ 來達到優化目的,這樣我們就能夠使得訓練樣本擬合的更好。

但對於支持向量機,按照慣例我們將使用一個不同的參數來替換這裏使用的 λ 來實現權衡這兩項的目的。這個參數我們稱爲C。同時將優化目標改爲:

C A + B

因此,在邏輯迴歸中,如果給 λ 一個很大的值,那麼就意味着給與B了一個很大的權重,而在支持向量機中,就相當於對C設定了一個非常小的值,這樣一來就相當於對B給了比A更大的權重。

因此,這只是一種來控制這種權衡關係的不同的方式。當然你也可以把這裏的C當做 f a r c 1 λ 來使用。

因此,這樣就得到了在支持向量機中的我們的整個優化目標函數:

m i n θ C i = 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + 1 2 j = 1 n θ j 2

最後有別於邏輯迴歸的一點,對於支持向量機假設函數的形式如下:

h θ ( x ) = 1       i f   θ T x 0

h θ ( x ) = 0       i f   θ T x < 0

而不是邏輯迴歸中的S型曲線:

h θ ( x ) = 1 1 + e x

2 由邏輯迴歸到svm

安全距離因子

事實上,在邏輯迴歸中:

如果你有一個正樣本,即y=1的情況下,我們僅僅需要\theta^{T}x\ge0;
如果你有一個負樣本,即y=0的情況下,我們僅僅需要\theta^{T}x\lt0;

就能將該樣本恰當的分類了。

但是支持向量機的要求更高,不僅僅要求 θ T x 0 θ T x < 0 ,而且要求 θ T x 比0大很多,或小很多。比如這裏要求 θ T x 1 以及 θ T x 1

這就相當於在支持向量機中嵌入了一個額外的安全因子(或者說是安全距離因子)。接下來讓我們來看看這個因子會導致什麼結果:

具體而言,我接下來會將代價函數中的常數項C設置成一個非常大的值,比如100000或者其他非常大的數,然後再來觀察支持向量機會給出什麼結果。

當代價函數中

m i n θ C i = 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + 1 2 j = 1 n θ j 2

C的值非常大時,則最小化代價函數的時候,我們會很希望找到一個使第一項:

i = 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 y (i) ) +
相關文章
相關標籤/搜索