1. 程式人生 > >規則化和模型選擇(Regularization and model selection)——機器學習:交叉驗證Cross validation

規則化和模型選擇(Regularization and model selection)——機器學習:交叉驗證Cross validation

零 問題提出

機器學習中的偏差與方差一文中提到了偏差與方差。那麼在多種預測模型,如線性迴歸(y=θTx),多項式迴歸(y=θTx^(1~m))等,應使用那種模型才能達到偏差與方差的平衡最優?

形式化定義:假設可選的模型集合是M={M1,M2,...,Md},比如SVM,logisitic迴歸都在M中。

一 交叉驗證(Cross validation)

第一個任務就是從M中選擇最好的模型。假設訓練集用S表示,若使用如下演算法:

那麼得出的最好結果一定是屬於較為複雜的擬合式,比如高階多項式,因為這種演算法只考慮了誤差,只是用訓練資料檢驗擬合結果。所以應使用不同的檢驗樣本,考慮如下演算法:

這種方法稱為 hold-out cross validation 或者稱為簡單交叉驗證。由於測試集是和訓練集中是兩個世界的,因此我們可以認為這裡的經驗錯誤。這裡測試集的比例一般佔全部資料的 1/4-1/3。30%是 典型值。 

還可以對模型作改進,當選出最佳的模型??後,再在全部資料 S 上做一次訓練,顯然 訓練資料越多,模型引數越準確。

簡單交叉驗證方法的弱點在於得到的最佳模型是在 70%的訓練資料上選出來的,不代表 在全部訓練資料上是最佳的。還有當訓練資料本來就很少時,再分出測試集後,訓練資料就 太少了。 我們對簡單交叉驗證方法再做一次改進,如下: 

這個方法稱為 k-fold cross validation(k-摺疊交叉驗證)。說白了,這個方法就是將簡單 交叉驗證的測試集改為 1/k,每個模型訓練 k 次,測試 k 次,錯誤率為 k 次的平均。一般講 k 取值為 10。這樣資料稀疏時基本上也能進行。顯然,缺點就是訓練和測試次數過多。

極端情況下,k 可以取值為 m,意味著每次留一個樣例做測試,這個稱為 leave-one-out cross validation。

如果我們發明了一種新的學習模型或者演算法,那麼可以使用交叉驗證來對模型進行評價。 比如在 NLP 中,我們將訓練集中分出一部分訓練,一部分做測試。

二 特徵選擇(Feature Selection)

特徵選擇嚴格來說也是模型選擇中的一種。這裡不去辨析他們的關係,重點說明問題。 假設我們想對維度為n的樣本點進行迴歸,然而, n可能大多以至於遠遠大於訓練樣例數m。 但是我們感覺很多特徵對於結果是無用的,想剔除 n 中的無用特徵。n 個特徵就有2^?種去除 情況(每個特徵去或者保留),如果我們列舉這些情況,然後利用交叉驗證逐一考察在該情 況下模型的錯誤率,太不現實。因此需要一些啟發式搜尋方法。

第一種 前向搜尋

前向搜尋屬於 wrapper model feature selection。Wrapper 這裡指不斷地使用不同的特徵 集來測試學習演算法。前向搜尋說白了就是每次增量地從剩餘未選中的特徵選出一個加入特徵 集中,待達到閾值或者 n 時,從所有的 F 中選出錯誤率最小的。 既然有增量加,那麼也會有增量減,後者稱為後向搜尋。先將 F 設定為{1,2,..,n},然後 每次刪除一個特徵,並評價,直到達到閾值或者為空,然後選擇最佳的 F。  這兩種演算法都可以工作,但是計算複雜度比較大。時間複雜度為O(n+(n−1)+ (n−2)+⋯+1) = O(?^2)。   

第二種 過濾特徵選擇(Filter feature selection)

過濾特徵選擇方法的想法是針對每一個特徵??,i 從 1 到 n,計算??相對於類別標籤y的 資訊量S(i),得到 n 個結果,然後將 n 個S(i)按照從大到小排名,輸出前 k 個特徵。顯然, 這樣複雜度大大降低,為 O(n)。

那麼關鍵問題就是使用什麼樣的方法來度量S(i),我們的目標是選取與 y 關聯最密切的 一些??。而 y 和??都是有概率分佈的。因此我們想到使用互資訊來度量S(i),對於??是離散值的情況更適用,不是離散值,將其轉變為離散值

互資訊(Mutual information)公式

MI 衡量的是??和 y 的獨立性。如果它倆獨立(?(??,?) = ?(??)?(y)),那麼 KL 距離值為 0,也就是說??和 y 不相關了,可以去除??。相反,如果兩者密切相關,那麼 MI 值會很大。在對 MI 進行排名後,最後剩餘的問題就是如何選擇 k 值(前 k 個??)。我們 繼續使用交叉驗證的方法,將 k 從 1 掃描到 n,取最大的 F。不過這次複雜度是線性的了。 比如,在使用樸素貝葉斯分類文字的時候,詞表長度 n 很大。使用 filter 特徵選擇方法,能夠增加分類器的精度。 

三 貝葉斯統計和規則化(Bayesian statistics and regularization)