天天看點

svm理論與實驗之2: 線性分類器

徐海蛟博士 Teaching

線性分類器(一定意義上,也可以叫做感覺機) 是最簡單也很有效的分類器形式.在一個線性分類器中,可以看到SVM形成的思路,并接觸很多SVM的核心概念.

  用一個二維空間裡僅有兩類樣本的分類問題來舉個小例子。如圖所示

svm理論與實驗之2: 線性分類器
svm理論與實驗之2: 線性分類器

  C1和C2是要區分的兩個類别,在二維平面中它們的樣本如上圖所示。中間的直線就是一個分類函數,它可以将兩類樣本完全分開。一般的,如果一個線性函數能夠将樣本完全正确的分開,就稱這些資料是線性可分的,否則稱為非線性可分的。

  什麼叫線性函數呢?在一維空間裡就是一個點,在二維空間裡就是一條直線,三維空間裡就是一個平面,可以如此想象下去,如果不關注空間的維數,這種線性函數還有一個統一的名稱——超平面!

  實際上,一個線性函數是一個實值函數(即函數的值是連續的實數),而我們的分類問題(例如這裡的二進制分類問題——回答一個樣本屬于還是不屬于一個類别的問題)需要離散的輸出值,例如用1表示某個樣本屬于類别C1,而用0表示不屬于(不屬于C1也就意味着屬于C2),這時候隻需要簡單的在實值函數的基礎上附加一個門檻值即可,通過分類函數執行時得到的值大于還是小于這個門檻值來确定類别歸屬。 例如我們有一個線性函數:

  g(x)=wx+b

  我們可以取門檻值為0,這樣當有一個樣本xi需要判别的時候,我們就看g(xi)的值。若g(xi)>0,就判别為類别C1,若 g(xi)<0,則判别為類别C2(等于的時候我們就拒絕判斷,呵呵)。此時也等價于給函數g(x)附加一個符号函數sgn(),即 f(x)=sgn [g(x)]是我們真正的判别函數。

  關于g(x)=wx+b這個表達式要注意三點:

一,式中的x不是二維坐标系中的橫軸,而是樣本的向量表示,例如一個樣本點的坐标是(3,8),則xT=(3,8) ,而不是x=3(一般說向量都是說列向量,是以以行向量形式來表示時,加上轉置T)。

二,這個形式并不局限于二維的情況,在n維空間中仍然可以使用這個表達式,隻是式中的w成為了n維向量(在二維的這個例子中,w是二維向量,注意這裡的w嚴格的說也應該是轉置的形式,為了表示起來友善簡潔,以下均不差別列向量和它的轉置,聰明的讀者一看便知);

三,g(x)是判别函數,而不是中間那條直線的表達式,中間那條直線的表達式是g(x)=0,即wx+b=0,我們也把這個函數叫做分類面。

  實際上很容易看出來,中間那條分界線并不是唯一的,我們把它稍微旋轉一下,隻要不把兩類資料分錯,仍然可以達到上面說的效果,稍微平移一下,也可以。此時就牽涉到一個問題,對同一個問題存在多個分類函數的時候,哪一個函數更好呢?

顯然必須要先找一個名額來量化“好”的程度,通常使用的都是叫做“分類間隔”的名額。下節我們就仔細說說分類間隔,也補一補相關的數學知識。

徐海蛟博士 Teaching

線性分類器(一定意義上,也可以叫做感覺機) 是最簡單也很有效的分類器形式.在一個線性分類器中,可以看到SVM形成的思路,并接觸很多SVM的核心概念.

  用一個二維空間裡僅有兩類樣本的分類問題來舉個小例子。如圖所示

svm理論與實驗之2: 線性分類器
svm理論與實驗之2: 線性分類器

  C1和C2是要區分的兩個類别,在二維平面中它們的樣本如上圖所示。中間的直線就是一個分類函數,它可以将兩類樣本完全分開。一般的,如果一個線性函數能夠将樣本完全正确的分開,就稱這些資料是線性可分的,否則稱為非線性可分的。

  什麼叫線性函數呢?在一維空間裡就是一個點,在二維空間裡就是一條直線,三維空間裡就是一個平面,可以如此想象下去,如果不關注空間的維數,這種線性函數還有一個統一的名稱——超平面!

  實際上,一個線性函數是一個實值函數(即函數的值是連續的實數),而我們的分類問題(例如這裡的二進制分類問題——回答一個樣本屬于還是不屬于一個類别的問題)需要離散的輸出值,例如用1表示某個樣本屬于類别C1,而用0表示不屬于(不屬于C1也就意味着屬于C2),這時候隻需要簡單的在實值函數的基礎上附加一個門檻值即可,通過分類函數執行時得到的值大于還是小于這個門檻值來确定類别歸屬。 例如我們有一個線性函數:

  g(x)=wx+b

  我們可以取門檻值為0,這樣當有一個樣本xi需要判别的時候,我們就看g(xi)的值。若g(xi)>0,就判别為類别C1,若 g(xi)<0,則判别為類别C2(等于的時候我們就拒絕判斷,呵呵)。此時也等價于給函數g(x)附加一個符号函數sgn(),即 f(x)=sgn [g(x)]是我們真正的判别函數。

  關于g(x)=wx+b這個表達式要注意三點:

一,式中的x不是二維坐标系中的橫軸,而是樣本的向量表示,例如一個樣本點的坐标是(3,8),則xT=(3,8) ,而不是x=3(一般說向量都是說列向量,是以以行向量形式來表示時,加上轉置T)。

二,這個形式并不局限于二維的情況,在n維空間中仍然可以使用這個表達式,隻是式中的w成為了n維向量(在二維的這個例子中,w是二維向量,注意這裡的w嚴格的說也應該是轉置的形式,為了表示起來友善簡潔,以下均不差別列向量和它的轉置,聰明的讀者一看便知);

三,g(x)是判别函數,而不是中間那條直線的表達式,中間那條直線的表達式是g(x)=0,即wx+b=0,我們也把這個函數叫做分類面。

  實際上很容易看出來,中間那條分界線并不是唯一的,我們把它稍微旋轉一下,隻要不把兩類資料分錯,仍然可以達到上面說的效果,稍微平移一下,也可以。此時就牽涉到一個問題,對同一個問題存在多個分類函數的時候,哪一個函數更好呢?

顯然必須要先找一個名額來量化“好”的程度,通常使用的都是叫做“分類間隔”的名額。下節我們就仔細說說分類間隔,也補一補相關的數學知識。