斯坦福大学公开课机器学习课程(Andrew Ng)十特征选择

课程概述:

1.VC维

2.ERM的直观意义

3.模型选择

4.特征选择


一、VC维


  对于一个模型来说,比如 logistic模型,如果有n 个feature,那么该模型会有 d=n+1个参数。虽然理论上说d个参数的取值都有无穷多个,使得模型集合无限大。但实际上,在计算机的表达中,比如每个参数都以64位Double型表示,那么共需要 64d位来表达这个模型集合,考虑到每个位有 0、1 两种状态,那么在计算机的表达中,这个无限大的模型集合的大小其实是2^64d,即:

因此,按照上一节课的结论,则有:

所以,我们得到结论,一个包含 d 个参数的无限模型集合至少有 1-σ的概率使成立的前提是至少有与特征数目同一数量级的样本数目。

这样的结论虽然符合我们的直观感觉,但是却并不正式。使用参数数目对模型复杂度进行衡量的方法有缺陷,比如对于同样的模型,不同的表达形式就有不同的参数数目。比如,
对于logistic模型来说,可以用公式3和公式4表示:

虽然模型一样,但是参数数目却是两倍的关系。 为了更准确的对模型复杂度进行衡量,先介绍如下概念。
定义一:
给定一个集合,我们称模型集合H可以分散S当且仅当对于集合s的任意一种标记方式,H中总存在一种假设h,可以将其线性分开。
比如,在二维平面中,对于三个点的一个集合,我们假设要判断的模型集合为二维平面
上所有的直线,模型集合表示为。那么则有如图1所示的分割面。
当然,当三个点在一条直线上或三个点重合的时候,直线集合并不能将其分散,但这无关紧要,因为只要存在一个 3个点的集合,不论以任何的标记方式,直线集合都能将其线性分开的话,我们就可以认为直线集合能够分散的点的数目为 3了。对于4 个点的集合,可以证明,不管是怎样的 4 个点,对于直线集合来说,都不能将其分散。所以这里我们就得到,在二维平面下,对于直线集合,它能分散的点的最大数目为 3。从而,我们得到了 VC维的定义。


定义二:
对一个模型集合H来说,它的 VC维,记为VC(H),是其能够分散的最大集合的大小。

对于上文的直线集合,它的 VC维是3。 更一般的,对于n维线性分类模型来说,它的 VC维为 n+1。

定理一:
对于模型集合H,令 d=VC(H),那么至少以有 1-σ的概率下,对于模型集合中的所有模型h来说,我们有 :

从而,得到在至少以有 1-σ的概率下,有

由公式5和公式6,可以看到,当一个模型集合的VC 为有限的时候,随着样本数目的变大,训练误差与泛化误差将会一致收敛。

由上两个公式,可以推出引理:

为使 对模型集合中的所有 h 都以 1-σ的概率成立,那么样本数目 m 必须满足:

一般情况下,VC维和模型的参数数目线性相关,因而我们才有上面的结论,即训练模型需要的样本数目与参数呈线性关系。更一般的是,为了使模型可以达到较好的效果,需要的样本数必须与模型的VC 维在同一数量级。

VC维解释SVM

SVM通过核函数将数据映射到高维空间,那么相应的,其 VC 维应该变大,要达到较好效果所需的数据量应该增大才对。但 svm 只在原数
据上就达到了比其他模型更优的效果。这是为什么呢?

虽然 svm 将数据映射到了高维空间,但是其仍然有最大间隔分类器的假设。而对于最大间隔分类器来说,其VC 维并不依赖x的维度。对于最大间隔为γ的分类器来说,其在γ半
径内的数据点数目设为k,则分类器的VC 维服从如下公式:

而 SVM 算法则会自动寻找一个具有较小 VC 维的假设类,这样反而降低了 VC 维,使得数据量变得相对更加充分,提高了模型的效果。


二、ERM的直观意义


回顾上节课中的训练误差的计算公式:

更简单的,我们以单个样本为例,其误差函数为,很显然,这是一个非凸函数,使用机器学习的方法并不能很好的对其进行优化。因而产生了一些算法对该误差函数进行凸性近似,以期能够更好的优化。以svm和logistic 为例,如图2所示:

在上图中,首先看对应的那段阶梯函数,当x小于0时,h(x)=0,x>0时,h(x)大于0。这个阶梯函数可以看做是理想的误差函数,

即当你预测错误的时候值大于0,预测正确的时候值为0,所以应该最小化这个阶梯函数的值(值越小预测正确的可能性越大)。因为这个阶梯函数是非凸性的,不容易优化,所以在实际应用时,可以为logistic或SVM,这两种都可以看做是阶梯函数的近似。

而关于SVM的误差函数(一般称为Hinge损失函数),因为SVM的分类一般是有三条分类线的(一条最优的,也就是最中间的,两条边上的 如下图),当样本分类正确且不处于中间的线与两边线的区域内时,误差为0,即对应C区域。A点时是恰为0的点,对应于上图SVM那条线开始产生误差的那一点。当样本分类正确但位于中间线和边线中间时,便会产生误差,这时虽分类正确,却依然有误差(即处于B区域内的点,这里没有)。如果C区域的样本越向中心线偏,误差越大,直到越过中心线,误差更大且分类错误。


三、模型选择


机器学习的模型有很多,如何在多个模型中选择最好的一个?即便对于同一个模型来说,又如何选择最好的参数?这就是本节要解决的问题。具体举几个例子,比如多项式模型如何选择阶数?svm 模型如何选择惩罚参数 C 和正则化项?局部加权回归如何选择带宽参数?如何从神经网络与svm模型中选择一个较好的模型?等等。

交叉检验

选择模型最简单的方式是,对每个模型 M,取训练误差最小的模型。显然,这样最终会容易选择那些过拟合的模型。简单的对其进行修改,我们就可以得到成为保留交叉验证的
模型选择方法。

保留交叉验证

保留交叉验证(hold-out cross validation or simple cross validation)的做法如下:
1)  将标注数据集随机切分为Strain(如 70%)和 Scv(如 30%)
2)  在Strain上训练模型;
3)  在Scv上进行测试;
4)  去测试误差最小的那个模型。
通过在非训练集上进行测试,我们得到了一个对模型更好的估计。在实际使用过程中,模型将在全部的数据集上重新训练,以利用更多的数据,达到更好的效果。
该方法的劣势在于分出过多的数据用来测试,对于标注数据难得的实际问题来说,这是不能容忍的。因而产生了如下的改进方法,成为k重交叉检验。

k重交叉验证

k 重交叉检验(k-fold cross validation),做法如下:
1)  将标注数据集随机平均切分为 k份;
2)  对于每一份来说,
2.1) 以该份为测试集,其余份为训练集;
2.2) 在训练集上得到模型;
2.3) 在测试集上得到误差结果,这样就对每个样例都有一个预测结果。
3)  计算误差结果;
4)  取误差最小的模型
常用的做法是取 k=10或5。极端的做法取 k=m,m 为样例数,这样就变成了留一交叉验证(leave-one-out cross validation)。


四、特征选择


特征选择是一类比较特殊的模型选择方法。设想这样的问题,训练集中有 m 个样本,每个样本有n个特征,其中 n>>m。如果要使用简单的线性模型的话,那么按照之前VC 维
的分析,n 个特征会有n+1 个参数,则需要O(n+1)级别的样例数才能得到一个较好的模型,对于远小于 m 的样例数来说,欠拟合的风险比较大。或者,有时特征太多了,有些特征反而没有用,去除这些特征后可能训练的更好。比如在区分垃圾邮件时,可能会有几万个词,把这些词都作为特征的话,那么特征太多而样本太少,这时可以选择一些在垃圾邮件和非垃圾邮件中都可能出现的词去除掉,只留下一些可以区分垃圾邮件和非垃圾邮件的词做为特征。进行特征选择的意义在于降低VC 维,使得目前的样例数目变得相对充分,从而能得到更为有效的模型。

前向选择

前向选择法如下:
1)  初始化特征子集为ℱ = Φ
2)  对于不属于ℱ的每个特征,计算添加该特征后模型精度的提升
3)  选择提升最大的特征
4)  重复第2步和第 3步,直到模型精度不再上升为止

该算法也被称为wrapper model  feature  selection。因为它将模型的训练和评测包含在算法的内部。
根据前向选择法,我们可以很容易的得到后向选择法(Backward Search)。即每次删除对精度影响最不大的特征。 上面的方法虽然可以达到较优的特征选择结果,但是由于其反复多次调用模型训练算法,其计算量会相当的大,尤其在训练数据量比较大的时候。为了是特征选择更简便,提出了一种更简单的特征选择方法——过滤法。

特征过滤

过滤特征选择(Filter Feature Selection),采用一种启发式的规则对特征进行评分,选择评分较优的特征,其计算量相对于前向后向搜索算法来说,非常小。
一个可能的评分函数是衡量 xi和 y 的相关性,从而选择出与类别标号 y 最相关的特征xi。而相关性可以用互信息(mutual  information,MI)来表示,当 xi 是离散型变量的时候,MI
的计算公式如下:

其中,等是概率,可以通过在训练集中统计得到估计值。

事实上,互信息也可以表示为 KL(Kullback-Leibler)距离的形式:


KL 距离的作用是衡量分布之间的差异,就此例来说,如果Xi和 y 相互独立,那么它们之间的KL距离为0;如果它们之间的关联关系比较强,那么 KL距离会变大。
使用MI进行衡量后,我们得到了各个特征的评分,那么选择多少个特征可以让模型的效果达到最好呢?标准的方法还是采用交叉检验的方式进行选择。

参考:

斯坦福ML公开课笔记






  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值