機器學習筆記9——特徵選擇
無限假設類H 的情況
上一章針對包含有限個假設類的情況,我們已經證明了一些有用的理論。但是針對包含無限假設的假設類,我們是否能得出類似的結論?
假設給定一個假設類
從上一章最後一小節中的引理得知,為了保證
因此,訓練樣本的數量與模型中的引數的個數很有可能呈線性相關。
實際上我們依賴於64bits(位)的浮點數的出的這一結論並不完全令人滿意,但是結論大致上是正確的:如果我們繼續嘗試對訓練誤差最小化,那麼為了讓包含d個引數的假設類可以“更好的”學習,我們需要與d個引數個數成線性數量的訓練樣本。
因為上述的論證並不完全令人滿意,所以介紹下面的這個(更正式的)論證,證明過程省略。
Vapnik-Chervonenkis維
給定一個由d個點組成的集合
如果
舉個例子來說明一下,假設
那麼對於集合S有八種不同的標記方式:
而對於每一種標記方式,都可以在假設類中找到一個假設對能對這些標記完美的分類。所以根據定義,假設類
那麼對於更多點的集合S,假設類也能完美的分散嗎?答案是不能。篇幅原因不給出證明過程,但直接給出結果:在二維的情況下,任意的現行分類器都不能分離四個點構成的集合。
下面我們介紹一下VC維的定義。給定一個假設類
舉個例子,如果
當然也不是所有的三個點的集合都能被分離,比如下面這中情況就無法分離:
但是這種情況是沒有問題的,只要存在大小為3的集合可以被分散,那麼VC維就等於3。但是絕對不可能等於4。
上述的理論可以推廣到一般情況,對於任意維度,由n維線性分類器構成的假設類,那麼它的VC維等於(n+1)。
那麼由上述結論可得出定理:
給定假設類
因此,在至少在
可將上述的公式寫作如下的引理。
引理:為了保證
這表明樣本複雜度的上界由VC維決定。實際上,在大多數合理的假設類中,VC維與模型的引數數量成正比。所以也可以得出訓練樣本的數量與模型的引數的數量成線性關係。
模型選擇
模型選擇提供了一類方法可以自動在偏差和方差之間權衡。
一些模型選擇的例子可能包括:1.
接下來會提出一個自動選擇模型的方法。
假設有一個包含有限個模型的集合,表示為
那麼如何選擇一個合適的值呢?其實有很多中標準的方法。
其中一種稱作保留交叉驗證。給定一個訓練集合,隨機劃分成兩個子集。一個稱之為訓練子集,一個稱之為保留交叉驗證子集。訓練子集用來訓練模型,而保留交叉驗證自己用來進行測試。最後選擇具有最小測試誤差的模型作為結果。
通常情況下70%的資料訓練模型,剩下的30%進行交叉驗證。最後還可以用100%的資料對選出的模型進行重新訓練。
這一方法存在一個缺點:現實生活中訓練資料很難獲得,拿出30%的資料做模型選擇不太實際。
那麼接下來介紹幾種保留交叉驗證的變化方法,可以更高效的利用資料。
k重交叉驗證
演算法思路如下:將資料劃分成k份(k = 10比較常見),然後利用k - 1個部分進行訓練,用剩下的一個部分做測試;最後對這k個誤差求平均,得到這個模型的一般誤差的估計。
缺點:計算量大,為了驗證模型需要訓練k次。留1交叉驗證
演算法思路如下:將資料劃分成k份(k = 訓練樣本的數量m),留出一個樣本,剩下的進行訓練。對資料的利用效率比k重交叉驗證要高,但計算量也會相應增多。所以,這種方法需要在樣本數量很少的情況下使用。
關於模型選擇還有一種特例:特徵選擇問題。舉個例子,對於很多機器學習的演算法來說,可能面對一個非常高維的特徵空間,即輸入特徵x的維數可能非常高。那麼這麼多的特徵如果都用上可能會存在過擬合的風險。那麼如果能減少特徵的數量,就可以減少演算法的方差。
所以,在特徵選擇問題中,我們會從原始的特徵中選出一個子集,我們認為這個子集對特定的學習問題來說是最為相關的,這樣就擁有了一個更為簡單的假設類。
那麼應該如何進行特徵選擇呢?對於n個特徵,會有
接下來提出幾個搜尋方法,用於便捷的進行特徵選擇:
1.前向選擇演算法
演算法流程如下:
初始化特徵子集
F=空 重複如下過程{
(1) for i = 1,…n 嘗試將特徵i將入到
F 中,並對模型進行交叉驗證(2) 令
F=F∪ (1)中找到的最好的特徵
}輸出得到的最好的假設
2.後向選擇演算法
演算法流程如下:
初始化特徵集
F={1,2,...n} 之後每次從
F 中刪除一個特徵(與前向選擇演算法一樣,此處需要迴圈處理)輸出得到的最好的假設
因為後向選擇演算法中初始特徵集合包含所有的特徵,如果特徵維數很高,那麼一開始用這個特徵集合進行訓練模型可能不妥。所以前向選擇演算法用的更多一些。
(前向與後向選擇演算法可以統稱為封裝特徵選擇演算法。這種演算法效果通常很好,比接下來要講的這一類選擇演算法通常要好一些。但是這一封裝演算法需要很大的計算量。)
3.過濾特徵選擇演算法
演算法基本思想如下:對於每一個特徵i,我們都要計算一些衡量標準,來衡量對y的影響有多大。可以通過計算與y的相關度來衡量,然後選擇與y相關度最高的k個特徵;另一種方式是,計算特徵x與y的相互資訊,用
等式中所有的概率分佈都可以用訓練資料進行估計。等式同樣可以這樣表示:
其中KL距離用來度量不同的概率分佈之間的差異。換句話說,KL距離是一種關於兩個概率分佈之間差異的一種度量標準。
之後,選擇前k個特徵。對特徵驗證的話可以選擇交叉特徵驗證演算法。