SVM入門 線性分類器(2)

2021-05-25 02:17:27 字數 2673 閱讀 8593

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

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

­c1和c2是要區分的兩個類別,在二維平面中它們的樣本如上圖所示。中間的直線就是乙個分類函式,它可以將兩類樣本完全分開。一般的,如果乙個線性函式能夠將樣本完全正確的分開,就稱這些資料是線性可分的,否則稱為非線性可分的。

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

實際上,乙個線性函式是乙個實值函式(即函式的值是連續的實數),而我們的分類問題(例如這裡的二元分類問題——回答乙個樣本屬於還是不屬於乙個類別的問題)需要離散的輸出值,例如用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(一般說向量都是說列向量,因此以行向量形式來表示時,就加上轉置)。二,這個形式並不侷限於二維的情況,在n維空間中仍然可以使用這個表示式,只是式中的w成為了n維向量(在二維的這個例子中,w是二維向量,注意這裡的w嚴格的說也應該是轉置的形式,為了表示起來方便簡潔,以下均不區別列向量和它的轉置,聰明的讀者一看便知);三,g(x)不是中間那條直線的表示式,中間那條直線的表示式是g(x)=0,即wx+b=0,我們也把這個函式叫做分類面。

實際上很容易看出來,中間那條分界線並不是唯一的,我們把它稍微旋轉一下,只要不把兩類資料分錯,仍然可以達到上面說的效果,稍微平移一下,也可以。此時就牽涉到乙個問題,對同乙個問題存在多個分類函式的時候,哪乙個函式更好呢?顯然必須要先找乙個指標來量化「好」的程度,通常使用的都是叫做「分類間隔」的指標。下一節我們就仔細說說分類間隔,也補一補相關的數學知識。

上回說到對於文字分類這樣的不適定問題(有乙個以上解的問題稱為不適定問題),需要有乙個指標來衡量解決方案(即我們通過訓練建立的分類模型)的好壞,而分類間隔是乙個比較好的指標。

在進行文字分類的時候,我們可以讓計算機這樣來看待我們提供給它的訓練樣本,每乙個樣本由乙個向量(就是那些文字特徵所組成的向量)和乙個標記(標示出這個樣本屬於哪個類別)組成。如下:

di=(xi,yi)

xi就是文字向量(維數很高),yi就是分類標記。

在二元的線性分類中,這個表示分類的標記只有兩個值,1和-1(用來表示屬於還是不屬於這個類)。有了這種表示法,我們就可以定義乙個樣本點到某個超平面的間隔:

δi=yi(wxi+b)

這個公式乍一看沒什麼神秘的,也說不出什麼道理,只是個定義而已,但我們做做變換,就能看出一些有意思的東西。

首先注意到如果某個樣本屬於該類別的話,那麼wxi+b>0(記得麼?這是因為我們所選的g(x)=wx+b就通過大於0還是小於0來判斷分類),而yi也大於0;若不屬於該類別的話,那麼wxi+b<0,而yi也小於0,這意味著yi(wxi+b)總是大於0的,而且它的值就等於|wxi+b|!(也就是|g(xi)|)

現在把w和b進行一下歸一化,即用w/||w||和b/||w||分別代替原來的w和b,那麼間隔就可以寫成

這個公式是不是看上去有點眼熟?沒錯,這不就是解析幾何中點xi到直線g(x)=0的距離公式嘛!(推廣一下,是到超平面g(x)=0的距離, g(x)=0就是上節中提到的分類超平面)

小tips:||w||是什麼符號?||w||叫做向量w的範數,範數是對向量長度的一種度量。我們常說的向量長度其實指的是它的2-範數,範數最一般的表示形式為p-範數,可以寫成如下表示式

向量w=(w1, w2, w3,…… wn)

它的p-範數為

看看把p換成2的時候,不就是傳統的向量長度麼?當我們不指明p的時候,就像||w||這樣使用時,就意味著我們不關心p的值,用幾範數都可以;或者上文已經提到了p的值,為了敘述方便不再重複指明。

當用歸一化的w和b代替原值之後的間隔有乙個專門的名稱,叫做幾何間隔,幾何間隔所表示的正是點到超平面的歐氏距離,我們下面就簡稱幾何間隔為「距離」。以上是單個點到某個超平面的距離(就是間隔,後面不再區別這兩個詞)定義,同樣可以定義乙個點的集合(就是一組樣本)到某個超平面的距離為此集合中離超平面最近的點的距離。下面這張圖更加直觀的展示出了幾何間隔的現實含義:

h是分類面,而h1和h2是平行於h,且過離h最近的兩類樣本的直線,h1與h,h2與h之間的距離就是幾何間隔。

之所以如此關心幾何間隔這個東西,是因為幾何間隔與樣本的誤分次數間存在關係:

其中的δ是樣本集合到分類面的間隔,r=max ||xi|| i=1,...,n,即r是所有樣本中(xi是以向量表示的第i個樣本)向量長度最長的值(也就是說代表樣本的分布有多麼廣)。先不必追究誤分次數的具體定義和推導過程,只要記得這個誤分次數一定程度上代表分類器的誤差。而從上式可以看出,誤分次數的上界由幾何間隔決定!(當然,是樣本已知的時候)

Matlab 線性分類器與SVM

利用最小二乘法求線性分類器係數 如下 function w,b leastsquares traindata,trainlabel 最小二乘法線性分類器 nums,demens size traindata traindata traindata,ones nums,1 r traindata tr...

文字分類學習 (八)SVM 入門之線性分類器

所以要理解svm首先要明白的就是線性可分和線性分類器。可以先解釋這張圖,通過這張圖就可以了解線性分類器了。這是乙個在二維平面的圖。其中實心點和空心點是分別屬於兩類的,origin 是原點。先看中間那條直線,中間的直線就是一條可以實心點和空心點分隔開來的直線,所以上圖中的資料點是線性可分的。這條直線其...

SVM入門(二)線性分類器Part 1

線性分類器 一定意義上,也可以叫做感知機 是最簡單也很有效的分類器形式.在乙個線性分類器中,可以看到svm形成的思路,並接觸很多svm的核心概念.用乙個二維空間裡僅有兩類樣本的分類問題來舉個小例子。如圖所示 c1和c2是要區分的兩個類別,在二維平面中它們的樣本如上圖所示。中間的直線就是乙個分類函式,...