机器学习笔记9——特征选择
无限假设类H 的情况
上一章针对包含有限个假设类的情况,我们已经证明了一些有用的理论。但是针对包含无限假设的假设类,我们是否能得出类似的结论?
假设给定一个假设类
从上一章最后一小节中的引理得知,为了保证
因此,训练样本的数量与模型中的参数的个数很有可能呈线性相关。
实际上我们依赖于64bits(位)的浮点数的出的这一结论并不完全令人满意,但是结论大致上是正确的:如果我们继续尝试对训练误差最小化,那么为了让包含d个参数的假设类可以“更好的”学习,我们需要与d个参数个数成线性数量的训练样本。
因为上述的论证并不完全令人满意,所以介绍下面的这个(更正式的)论证,证明过程省略。
Vapnik-Chervonenkis维
给定一个由d个点组成的集合
如果
举个例子来说明一下,假设
那么对于集合S有八种不同的标记方式:
而对于每一种标记方式,都可以在假设类中找到一个假设对能对这些标记完美的分类。所以根据定义,假设类
那么对于更多点的集合S,假设类也能完美的分散吗?答案是不能。篇幅原因不给出证明过程,但直接给出结果:在二维的情况下,任意的现行分类器都不能分离四个点构成的集合。
下面我们介绍一下VC维的定义。给定一个假设类
举个例子,如果
当然也不是所有的三个点的集合都能被分离,比如下面这中情况就无法分离:
但是这种情况是没有问题的,只要存在大小为3的集合可以被分散,那么VC维就等于3。但是绝对不可能等于4。
上述的理论可以推广到一般情况,对于任意维度,由n维线性分类器构成的假设类,那么它的VC维等于(n+1)。
那么由上述结论可得出定理:
给定假设类
因此,在至少在
可将上述的公式写作如下的引理。
引理:为了保证
这表明样本复杂度的上界由VC维决定。实际上,在大多数合理的假设类中,VC维与模型的参数数量成正比。所以也可以得出训练样本的数量与模型的参数的数量成线性关系。
模型选择
模型选择提供了一类方法可以自动在偏差和方差之间权衡。
一些模型选择的例子可能包括:1.
接下来会提出一个自动选择模型的方法。
假设有一个包含有限个模型的集合,表示为
那么如何选择一个合适的值呢?其实有很多中标准的方法。
其中一种称作保留交叉验证。给定一个训练集合,随机划分成两个子集。一个称之为训练子集,一个称之为保留交叉验证子集。训练子集用来训练模型,而保留交叉验证自己用来进行测试。最后选择具有最小测试误差的模型作为结果。
通常情况下70%的数据训练模型,剩下的30%进行交叉验证。最后还可以用100%的数据对选出的模型进行重新训练。
这一方法存在一个缺点:现实生活中训练数据很难获得,拿出30%的数据做模型选择不太实际。
那么接下来介绍几种保留交叉验证的变化方法,可以更高效的利用数据。
k重交叉验证
算法思路如下:将数据划分成k份(k = 10比较常见),然后利用k - 1个部分进行训练,用剩下的一个部分做测试;最后对这k个误差求平均,得到这个模型的一般误差的估计。
缺点:计算量大,为了验证模型需要训练k次。留1交叉验证
算法思路如下:将数据划分成k份(k = 训练样本的数量m),留出一个样本,剩下的进行训练。对数据的利用效率比k重交叉验证要高,但计算量也会相应增多。所以,这种方法需要在样本数量很少的情况下使用。
关于模型选择还有一种特例:特征选择问题。举个例子,对于很多机器学习的算法来说,可能面对一个非常高维的特征空间,即输入特征x的维数可能非常高。那么这么多的特征如果都用上可能会存在过拟合的风险。那么如果能减少特征的数量,就可以减少算法的方差。
所以,在特征选择问题中,我们会从原始的特征中选出一个子集,我们认为这个子集对特定的学习问题来说是最为相关的,这样就拥有了一个更为简单的假设类。
那么应该如何进行特征选择呢?对于n个特征,会有
接下来提出几个搜索方法,用于便捷的进行特征选择:
1.前向选择算法
算法流程如下:
初始化特征子集
F=空 -
重复如下过程{
(1) for i = 1,…n 尝试将特征i将入到
F 中,并对模型进行交叉验证(2) 令
F=F∪ (1)中找到的最好的特征
} 输出得到的最好的假设
2.后向选择算法
算法流程如下:
初始化特征集
F={1,2,...n} 之后每次从
F 中删除一个特征(与前向选择算法一样,此处需要循环处理)输出得到的最好的假设
因为后向选择算法中初始特征集合包含所有的特征,如果特征维数很高,那么一开始用这个特征集合进行训练模型可能不妥。所以前向选择算法用的更多一些。
(前向与后向选择算法可以统称为封装特征选择算法。这种算法效果通常很好,比接下来要讲的这一类选择算法通常要好一些。但是这一封装算法需要很大的计算量。)
3.过滤特征选择算法
算法基本思想如下:对于每一个特征i,我们都要计算一些衡量标准,来衡量对y的影响有多大。可以通过计算与y的相关度来衡量,然后选择与y相关度最高的k个特征;另一种方式是,计算特征x与y的相互信息,用
等式中所有的概率分布都可以用训练数据进行估计。等式同样可以这样表示:
其中KL距离用来度量不同的概率分布之间的差异。换句话说,KL距离是一种关于两个概率分布之间差异的一种度量标准。
之后,选择前k个特征。对特征验证的话可以选择交叉特征验证算法。