文本分類學習 (七)支持向量機SVM 的前奏 結構風險最小化和VC維度理論

前言:

經歷過文本的特徵提取,使用LibSvm工具包進行了測試,Svm算法的效果還是很好的。於是開始逐一的去了解SVM的原理。

SVM 是在建立在結構風險最小化和VC維理論的基礎上。所以這篇只介紹關於SVM的理論基礎。

目錄:

文本分類學習(一)開篇
文本分類學習(二)文本表示
文本分類學習(三)特徵權重(TF/IDF)和特徵提取   
文本分類學習(四)特徵選擇之卡方檢驗
文本分類學習(五)機器學習SVM的前奏-特徵提取(卡方檢驗續集)
文本分類學習(六)AdaBoost和SVM(殘)

1.泛化誤差界

機器學習的能力和它的表現,有一個衡量的標準那就是統計學習中的泛化誤差界。所謂泛化誤差,就是指機器學習在除訓練集之外的測試集上的預測誤差。傳統的機器學習追求在訓練集上的預測誤差最小化(經驗風險,下面會具體說到),然後放到實際中去預測測試集的文本,卻一敗塗地。這就是泛化性能太差,而泛化誤差界是指一個界限值,後面也會解釋到。

機器學習實際是在預測一個模型以逼近真實的模型。這其中就必然存在與真實模型之間的誤差(風險),這個風險當然是可以計算的。

假設我們有l個觀察值,每個觀察值由兩個元素組成 一個屬於Rn(n維空間)的向量:Xi ∈ Rn (i = 1 , 2 , 3 , 4…l) 已經和這個向量相對應的映射值 Yi 在二分類文本中 Xi就表示第i個文本的特徵向量,前面介紹過,那麼Yi = {+1,-1} 由兩個類別組成。

接着我們假設有一個未知的分佈 P(X,Y) 是X 到 Y 的映射,給定Xi 都有一個固定的Yi 與之對應(可以當做實際測試數據集)與此同時我們使用機器學習得到了一個函數 f (x, α) 表示輸入 x 會得出x的映射 y,這裏的 α 是機器學習的某一個參數,比如具有固定的結果的神經網絡,具有表示重量和偏見的 α 。 那麼該機器學習算法的風險(誤差)公式 :

                     

R (α) 術語叫做期望風險(expected risk),我們也可以稱作爲真實風險,因爲它是衡量機器學習和實際測試數據集之間的誤差。

而機器學習和訓練數據集之間的誤差也有個名字叫做經驗風險 (empirical risk)用 Remp(α) 表示:

這裏給定參數 α 和訓練集 {xi,yi} 得到的 Remp(α) 是一個確定的數字,取一個 η ( 0<= η<=1)用 1- η 機器學習出現誤差的概率,R (α) 有一個上界可以表示爲(Vapnik, 1995 ):

Φ(h/l) 叫做置信風險 (VC confidence), h 叫做VC維度 (Vapnik Chervonenkis (VC) dimension) l 就是樣本數目 Φ(h/l) 的公式如下:

以上公式可以看到,要使真實風險最小,統計學習就要使得R (α) 的上界最小,也就是讓 Φ(h/l) + Remp(α) 變的最小,也就是結構風險最小,。可以說 Φ(h/l) + Remp(α) 叫做結構風險,它是一個實際的邊界值,是R (α) 的上限,就是統計學中的泛化誤差界限。那麼怎麼使得結構風險最小化呢?下面就要提到VC維度理論。(注:上面的公式我覺得就不用去推導了,都是paper裏面的公式,知道意思即可)

2.VC維度

上面說到置信風險Φ(h/l) 中的h叫做VC 維度,那麼VC維度是什麼呢?舉個例子:

假設我們有 l 個點,每個點我們都有個標記 Yi = {+1,-1},把這 l 個點 分別進行標記+1或者-1 ,那麼有2l 種方法。對於函數集 { f(x,α) } (f(x,α) 就是前面提到的機器學習得到的分類函數) 中的函數,2l中的每個方法都能從函數集中找到一個函數去成功的標記,那麼就說這個函數集 { f(x,α) } 的VC維度爲 l 。也就是函數集能夠進行標記的數據點的最大個數(用行話叫做分散)。再實際一點:

這是在二維座標平面上,3個點,將他們進行比較爲2個類別,會有2的3次方,也就是8種方法,可以看到每種標記方法我們都可以找到一條直線把這3個點分散(就是根據類別分開)。但是4個點的時候,你卻發現有幾種情況你無法找到一條直線將他們按照類別分開在直線的兩側。這也就說明了在二維空間裏,一個直線的集合的VC維度是3。

推廣到n維空間Rn 中 超平面(Oriented Hyperplanes)的VC維度是n+1。證明的方法是根據一個定理:

在n維空間 Rn 中有一個m個點的集合,選擇任意一個點作爲原點,如果剩下的m-1個點是線性可分的,那麼這m個點就可以被一個超平面集合分散

推廣一下,在n維空間 Rn 中我們總是可以選取n+1個點,選取其中一個點作爲原點,剩下的n個點在n維空間是一定線性可分的,因此n+1個點在n維空間中是可以被超平面集合分散的。

VC維度越高,表示函數集的複雜程度越高。一般的函數集的越複雜,VC維度越高,能夠對訓練集的每一個文本都可以精確分類,也就是把經驗風險降到最低,但是前面說過,面對訓練集之外的樣本卻一塌糊塗。就是因爲VC維度太高了,爲什麼呢?因爲忽視了置信風險:

取 η = 0.05) l = 10,000 可以得到

可以看到VC維度 h 越高,置信風險也越高,對於任意的l, 置信風險都是h的遞增函數。

對於一般情況VC維度越高,機器學習的置信風險越高,泛化能力就會越差。然而也有相反的情況:

反例:

如果VC維度到達無限,比如K鄰近算法,k=1 只有一個類,那麼所有的樣本都會被正確分類,他的VC維度是無限的,經驗風險是0。他的泛化能力反而是無限強的。

如果VC維度到達無限,那麼上面的說的泛化誤差界限就沒有實際的用處了,所以VC維度高到無限對性能的影響也不一定是差的。

3.SRM 結構風險最小化

在第1節中已經提到了讓 Φ(h/l) + Remp(α) 最小化 ,就是結構風險最小化,也即SRM( Structural Risk Minimization )

具體的思想是:

通過將函數集劃分爲多個子集。 對於每個子集按照VC維度排列,在每個子集中尋找最小經驗風險,然後在子集之間折衷考慮經驗風險和置信風險之和最小,得到的泛化誤差界最小。

而SVM 則是將結構風險最小化較好實現的算法。具體在哪裏體現了,還是在以後遇到的時候再提吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章