CS229 Machine Learning學習筆記:Note 5(正則化與模型選擇)
模型選擇
假設目前有d個學習模型構成的集合\(\mathcal M=\{M_1,\cdots,M_d\}\),訓練集S,下面介紹幾種選取模型的方法
Hold-out cross validation(Simple cross validation)
1.按一定比例隨機將原始訓練集S分為訓練集\(S_{train}\)和交叉驗證集\(S_{CV}\),一般比例為7:3
2.依次用\(S_{train}\)訓練每個模型
3.用\(S_{CV}\)上的經驗誤差估計每個模型的泛化誤差,最終選取\(h_i\)在\(S_{CV}\)上的經驗誤差\(\hat \varepsilon_{S_{CV}}(h_i)\)
但是這一方法在訓練過程中丟失了一部分數據(\(S_{CV}\)),在原始訓練集大小很小時,這一方法並不適用
K-fold cross validation
- 1.隨機將大小為m的原始訓練集S劃分成k個互不重復的子集\(S_1,\cdots,S_k\),每個子集有\(\frac m k\)個訓練樣本。
2.對每個模型\(M_i\),按以下方法估計泛化誤差:
For j=1...k{
____用除\(S_j\)外的其他數據訓練\(M_i\)得到假設函數\(h_{i,j}\)
____在\(S_j\)上測試\(h_{i,j}\)得到經驗誤差\(\hat \varepsilon_{S_j}(h_{i,j})\)
}
取\(\hat \varepsilon_{S_j}(h_{i,j})\)的平均值為對模型\(M_i\)的泛化誤差的估計
一般k=10,但當原始訓練集大小實在太小的時候,會選擇極端的k=m,以使得每次訓練時丟掉最少的數據,這種交叉驗證方法叫Leave-one-out cross validation。
特征選擇
當訓練樣本的特征數n遠大於訓練樣本數目m時,即使使用只有n個左右參數的線性分類器(如感知機),根據Note 4的結論,至少要有\(O(n)\)個訓練樣本才能使模型最終表現良好。因此,此時面臨嚴重的過擬合問題。
假設特征中只有少量特征與學習任務有關,現在要從n種特征中保留其中若幹種特征。最簡單粗暴的辦法就是枚舉所有\(2^n\)
下面介紹幾種高效的特征選取算法。
前向搜索(Forward search)
- 1.初始化\(\mathcal F\)為空集
2.執行以下循環:
Repeat until \(|\mathcal F|=n\)或\(|\mathcal F|\geq t\)(閾值){
____For i=1...n{
________若\(i \notin \mathcal F\),令\(\mathcal F_i=\mathcal F\cup \{i\}\),用上述的某種交叉驗證方法估計保留特征\(\mathcal F_i\)並訓練後,得到的泛化誤差
____}
____選取泛化誤差最小的\(\mathcal F_i\),令\(\mathcal F:=\mathcal F_i\)
}
CS229 Machine Learning學習筆記:Note 5(正則化與模型選擇)