10 Cross validation, VC dimension

本學習筆記參考自Andrew的機器學習課程(點此打開), 內容來自視頻以及其講義, 部分內容引用網友的學習筆記,會特別註明


本集內容

1. VC維
2. 交叉驗證
3. 特徵選擇


VC維和關於無限假設類的情況



上一節推導了由ERM選擇出來的假設的一般誤差與最好假設的一般誤差的關係,即下面這個不等式,成立的概率至少是1-δ




但是這一系列的推導都是假設我們的假設類是有限的,大小爲k,待會兒會把一些結論推廣到無限類情況。現在先假設一個假設類H有d個參數,就是某個h∈H有d個參數,假設都是雙精度浮點數,每一個參數在計算機中是64位,那麼d個參數共有64d位,那麼H所包含的假設共有2^64d,即上面的k = 2^64d,如果固定 δ,γ,在保證成立的概率至少是1-δ,我們得到樣本複雜度


從這裏看出爲了讓我們的模型從ERM中選擇的假設的一般誤差夠小的話,我們需要的樣本數應該與假設的參數個數呈線性關係。但這個結論是不嚴格的, 因爲H的個數依賴於H的參數,我們舉一個例子就能看出一個問題:
假設H有d個參數,其中,當然d = n + 1,按照上面的該H包含假設2^64d個,同樣的有2d個參數,它所定義的H和前面是相同的,但是按照這樣算它包含2^128d個假設,同樣的H表述形式不一樣得到的假設個數不同,所以上面的結論並不嚴格。爲此有下面討論一個嚴格的結論,先定義下面的分散的概念,然後引出VC維概念。
給定一個點集,這裏每一個x^(i)對應一個標籤y^(i),我們說如果H可以實現任何s上的標記,那麼稱H分散S。這個定義是說對於S中的點對應的任意標記,都存在 h ∈ H,使得,對於所有i都成立,即H可以實現任何s上的標記的意思是對任何一種s上的標記方式,你都可以從假設類H中找到一個假設將正負樣本完美分開。我們舉例說明,假設一個假設類   , 點集S含有3個點的例子,3個點對應的標記情況有2^3 = 8種,每種情況都可以從H中找到合適的h分開它們,如圖:



這表明H分散S,但是當S是4個點時,上面的線性分類器就不能分散S了,如下圖,找不到一個h能夠把下面4個點分開,即H不能分散S

另外我們看一下VC維的定義,一個假設類集H,定義它的VC維,寫作 VC(H),表示它能分散的最大集合的大小,如果能夠分散任意大的集合,則VC(H) = ∞。可以看到上面舉例有VC(H) = 3,但是注意3個點的也有H不能分開的,比如:
或者如果3個點都重合的話,也是沒法分的,我們只要存在一個大小爲m的點集能夠被H分散即可。另外這裏做一個推廣,n維線性分類器的VC維是n+1,比如前面舉例的是2維線性分類器,它的VC維是2+1 = 3。定義好了VC維,下面看一個很著名的機器學習理論:
假設H給定,並且 d = VC(H),則對於所有 h ∈ H,下面等式成立的概率至少爲 1 − δ:


和前面一樣,ERM出發,我們能夠將該不等式推導如下:



注意這裏H是無限假設類,它可以包含無限個假設,另外這個不等式是基於ERM的,裏面的加^的h是由ERM選出來的,我們再推出一個樣本複雜度的引理:對於所有 h ∈ H,,即有成立,該不等式以 1 − δ成立,則

下面講這個引理的一下理解,假設有一個學習算法,試圖嘗試最小化訓練誤差,那麼直觀的理解就是你需要的樣本數量和假設類的VC維呈線性關係。對大多數合理的假設類,實際上他們的VC維差不多。比如用邏輯迴歸進行線性分類,維度爲n的邏輯迴歸需要n+1個參數,前面說過n維的線性分類器的VC維是n+1。這是說對於大多數的合理的假設類,VC維常常和參數個數成正比。這裏樣本複雜度的上界是由VC維給定的。( 下面是現在還不理解的一些課堂筆記:*當訓練樣本的數目的階和VC維相同時,在最壞的情況樣本的複雜度也是VC維,如果有一個非常差的學習問題,訓練樣本的數量小於VC的階,那麼也不會跑出上面那個不等式的界,所以你尋找的的樣本數的數量級的上下界都是有vc維界定的*),所以我們可以大致得到結論,對於最小化訓練誤差(ERM)的學習算法,所需要的樣本數常常和假設類的參數個數線性相關。

下面要看一下ERM和前面的學習算法的聯繫,注意一下,前面這些推導是基於ERM的,即目標是使取值爲1或0的訓練誤差最小化。現在提出一個問題:SVM爲什麼不是這樣來最小化的,它將特徵映射到無限維即n爲無窮大,按前面說的VC維=n+1,爲無窮大,上一節介紹過模型過於複雜,就會過擬合,它爲什麼不過擬合? 這裏有一個關於最大間隔線性分類器的結論,大概描述一下,SVM的vc維存在上限,且不依賴於x的維度。這表明僅僅包含較大間隔的線性分類器的假設類的VC維是有上界的,SVM會自動嘗試具有較小VC維的假設類,而不至於過擬合。
現在我們看一下ERM所要優化的函數圖形:



但事實上,線性分類器使訓練誤差最小是一個NP難問題,邏輯迴歸在嘗試最小化的是一個近似,即ERM的一種近似,SVM也是,它們所要優化的圖形如下:





模型選擇



偏差和方差之間存在着平衡,從前面我知道模型過於簡單即偏差過大,過於複雜即方差過大,都是不合適的模型。爲了使訓練誤差最小(ERM),比如對於線性分類,你選擇有多少個參數的假設呢?  又比如局部加權線性迴歸裏面控制權值下降速度的帶寬參數爲多少能夠使訓練誤差最小呢 又比如軟間隔SVM中的參數C選取多少比較合適?這些都是模型選擇的具體例子,下面要介紹一些方法。

假設可供我們選擇的模型集合M = {M 1 ,...,M d },我們先想一種方法,爲了得到訓練誤差最小化的模型,我們對每一個Mi單獨訓練,然後比較其訓練誤差,選擇一個訓練誤差最小的作爲我們的模型,但遺憾的是這樣是不行的,假設M1到Md的模型是越來越複雜的,那麼肯定Md訓練得到的模型訓練誤差最小,但過擬合了,所以我們用下面的方法進行選擇,稱爲交叉驗證。


交叉驗證


1. 隨機將樣本集S分爲訓練集和測試集兩部分,一般前者是70%,後者是30%,測試集也叫做保留交叉驗證集
2. 在訓練集上分別選擇Mi進行訓練
3. 選擇在測試集中有最小訓練誤差的模型作爲結果

一般的在第三步中,也可以將選擇的模型再在整個樣本中重新訓練一次作爲最終的模型結果。這種也稱爲簡單交叉驗證,缺點是模型是在70%的數據上訓練的,不是全部。並且測試集需要用30%的數據,不能克服樣本數據不足的情況,下面討論k重交叉驗證解決該問題。


k重交叉驗證


1.隨機的將樣本集分成k個不相交的子集,即有m/k個子集,記作 S 1 ,...,S k 
2.對每個模型,分別將其中的子集作爲測試集,其他集合作爲訓練集,這樣得到k個訓練誤差,並將這k個訓練誤差的平均值作爲模型的訓練誤差。
3.比較每個模型訓練誤差,選擇最小的模型
4.將選出來的模型在這個數據集上訓練一次得到最終的模型

這種方式k=10比較常見,缺點就是要經過很多次的訓練。特別當k=m,叫留1交叉驗證,樣本非常少時用,當然訓練的次數以及計算量也非常大了



特徵選擇


通常特徵有時的維度非常高,比如前面講的垃圾郵件分類問題,詞典大小爲5000,則特徵的維度就是5000,特徵維度過大,可能存在着過擬合的風險,如果能夠有減少特徵,我們選擇的假設類也會簡單一些,有助於降低過擬合的風險。現假設n個特徵,那麼n個特徵所包含的子集個數爲2^n,相當大,所以是不可能每一個都去搜索時間代價太高了,有一些能夠找到比較好的特徵的集合的方法,介紹如下。

前向搜索算法


1. F是所選特徵的集合,初始化F =  ∅
2. 重複如下步驟:
    a. 對 i = 1,...,n,如果 特徵i不在F中,則令 F i = F ∪ {i},並且使用交叉驗證的方式來評估此時的所選的特徵集合F,比如評估此時Fi特徵的一般誤差,這一步就會計算n次,得到n個一般誤差
    b. 選取上面一般誤差最小的的Fi,令F = Fi
3. 輸出F

上面算法的結果可能是F將全部特徵加入了進來,也可能是設置了閾值,比如讓F中特徵數達到某個值就不再加入特徵。這類算法是封裝模型的特徵選擇的一個例子,封裝的意思指不斷的重複的加入特徵到學習算法,並對其進行評估。另外一種方法叫做後向搜索算法,即一開始令F = {1,...,n},然後令Fi = F - {i},評估n個減去特徵後的一般誤差,選取最小的Fi,並令F = Fi,這樣每次減掉一個特徵,知道最後爲空或者達到一個閾值,此時的F作爲最後的結果。這兩種都屬於啓發式搜索,雖然並不會保證找到最好的特徵集,但是效果還是不錯的,但是計算量有點大,我們看到複雜度爲O(n^2)。比如尤其對於文本分類問題,往往特徵維度非常高,用向前搜索或向後搜索計算代價太高了,下面要講一種一般誤差可能不會太低,但計算量小的方法。



過濾特徵選擇算法


過濾特徵選擇的基本思想是找到某個量來衡量特徵xi與標記y之間相互關聯的程度,記作S(i),然後從大到小排序選擇前k個作爲特徵集。其中用互信息來表示S(i),如下:



 p(x i ,y), p(x i ) 和 p(y)都是通過訓練集來計算的,現將MI表示爲KL距離來理解:



KL距離也叫相對熵,來衡量不同的概率分佈之間的差異,如果相對熵爲0則表示兩個概率分佈相同, 相對熵越大,則差異越大,在NLP中,可以比較常用詞的概率分佈以判斷是否同義詞。這裏如果xi,y是相互獨立的隨機變量即p(x i ,y) = p(x i )p(y),那麼KL結果爲0,表示兩個概率分佈完全相同,如果xi與y相關緊密,則值則會比較大,利用這種方式來對特徵進行過濾。
最後我們確定k的值,仍然可以用交叉驗證的方式,讓k從1取到n,分佈用交叉驗證評估誤差,選擇誤差最小對應的k值即可,這個時候計算量比前向搜索要小很多。

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