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

反向搜索与前向搜索正好相反,从\(\mathcal F=\{1,\cdots,n\}\)开始,每次删除一个使泛化误差减少最小的特征,直至\(|\mathcal F|\)达到阈值。

前向搜索和反向搜索都是封装模型特征选取算法(Wrapper model feature selection),这类算法每次选取(排除)一个特征都要遍历全部n个特征,对于每个特征要重新训练一次模型,计算量明显太大。

过滤特征选择(Filter feature selection)

过滤特征选择算法是一种启发式算法,计算量比之前两种要小,其核心是用实数\(S(i)\)来度量特征\(x_i\)与分类标签\(y\)的信息关联性,\(S(i)\)越大,表明\(x_i\)中包含越多关于\(y\)的信息。

\(S(i)\)常用互信息(mutual information)表示

\[\mathrm{MI}(x_i,y)=\sum_{x_i\in\{0,1\}}\sum_{y\in\{0,1\}}p(x_i,y)\log \frac {p(x_i,y)}{p(x_i)p(y)} \]

  • 1.这里假设是二分类问题,每个特征都是二值(0或1),在其他情况下,和式的条件会有改变

  • 2.\(p(x_i,y),p(x_i),p(y)\)用训练集上的经验分布(Empirical distributions)估计

互信息也可以表示成KL散度(Kullback-Leibler divergence)的形式:

\[\mathrm{MI}(x_i,y)=\mathrm{KL}(p(x_i,y)||p(x_i)p(y)) \]

\(x_i,y\)是相互独立的随机变量时,根据概率公式有:\(p(x_i,y)=p(x_i)p(y)\),此时二者的KL散度=0,表明二者没有相关性;反之,若\(x_i\)包含了很多关于\(y\)的信息,二者的KL散度很大。(这个还不知道怎么证明)

然后将n种特征按S(i)大小从大到小排序,最终保留前k个。数值k的选取方法也可以采用交叉验证,即,从1到n枚举k,对于每种k的取值,用某种交叉验证来估计泛化误差,取泛化误差最小的k即可。

最大后验概率估计(MAP)

回顾:最大似然估计

CS229课程的Note 1介绍了从最大似然(Maximum likelihood,ML)估计的角度解释优化目标:

最大似然估计,就是已知概率分布模型\(p(X;\theta)\),但参数\(\theta\)未知,目标是找到使得已知的m个随机变量X的观测结果\(\{x^{(1)},\cdots,x^{(m)}\}\)出现概率最大的参数\(\theta\)

似然函数是关于未知参数\(\theta\)的函数,表现了在已知\(X\)的m个观测数据\(x^{(i)}\)的情况下,未知参数取值为\(\theta\)时,输出\(x^{(i)}\)的可能性

\[\mathcal L(\theta|X)=P(X|\theta)=\prod_{i=1}^mp(X=x^{(i)}|\theta) \]

目标就是要找到使得似然函数值最大的\(\theta\)

\[\theta_{\mathrm{ML}}=\arg \max_\theta\mathcal L(\theta|X)=\arg \max_\theta\prod_{i=1}^mp(X=x^{(i)};\theta) \]

这一角度是频率学派的观点。频率学派认为连续值的参数\(\theta\)是未知量,但不是随机变量,我们只是通过一些统计学的方法(如这里的最大似然估计)估算\(\theta\)

最大后验概率估计

最大后验概率估计是贝叶斯学派的方法,这里的\(\theta\)不是参数,而是未知的随机变量。首先我们要根据经验对随机变量\(\theta\)的分布作出先行假设:\(p(\theta)\)

回顾贝叶斯公式:

\[p(\theta|X)=\frac{P(X|\theta)p(\theta)}{p(X)}=\frac{likelihood\cdot prior}{evidence} \]

其中,\(p(\theta|x)\)\(\theta\)的后验概率,\(p(x|\theta)\)是随机变量\(\theta\)\(x\)的似然函数;\(p(\theta)\)\(\theta\)的先验概率(我们先行假设的\(\theta\)的概率分布);\(p(x)\)是已知的\(x\)的观测结果的分布(evidence),是已知量

最大后验概率估计,就是要最大化\(\theta\)的后验概率\(p(\theta|X)\)

\[\theta_{MAP}=\arg \max_{\theta}p(\theta|X)=\arg \max_{\theta}\frac {P(X|\theta)p(\theta)}{p(X)} \]

\[=\arg \max_{\theta} P(X|\theta)p(\theta)=\arg \max_{\theta} \prod_{i=1}^m p(X=x^{(i)}|\theta)p(\theta) \]

(\(p(X)\)是已知量,与\(\theta\)无关,可以消去)

这个式子与\(\theta_{ML}\)的相比,就是多了\(p(\theta)\)这一项,当\(p(\theta)\)为常数,即我们不对\(\theta\)的分布作任何先行假设,认为其分布是完全均匀的,此时MAP和ML的结果是一样的:

\[\theta_{MAP}=\arg \max_{\theta} \prod_{i=1}^m p(X=x^{(i)}|\theta)=\theta_{ML} \]

posted @ 2018-07-16 19:45  YongkangZhang  阅读(163)  评论(0编辑  收藏  举报