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\)种选择方案,但这种方法显然计算量太大。

下面介绍几种高效的特征选取算法。

  • 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\)
    }

猜你喜欢

转载自www.cnblogs.com/qpswwww/p/9319773.html
今日推荐