本文共 2300 字,大约阅读时间需要 7 分钟。
在机器学习中,将属性称为“特征(Feature)”,对当前学习任务有用的属性称为“相关特征(Relevant Feature)”,没有什么用的属性称为“无关特征(Irrelevant Feature)”。从给定的特征集合中选择出相关特征子集的过程,称为“特征选择(Feature Selection)”
特征选择是一个重要的数据预处理过程。在现在的机器学习中,获得数据之后通常先进行特征选择,此后再训练学习器。
特征选择过程必须确保不丢失重要特征,否则后续学习过程会因为重要信息的缺失而无法获得好的性能。给定数据集,若学习任务不同,则相关特征很可能不同。
另外,有一类特征称为“冗余特征(Redundant Feature)”,它们所包含的信息能从其它特征中推演出来。那么,去除冗余特征会减轻学习过程的负担。
在机器学习的实际应用中,特征数量往往较多,其中可能存在不相关的特征,特征之间也可能存在相互依赖,容易导致如下的后果:
特征选择能剔除不相关(irrelevant)或亢余(redundant )的特征,从而达到减少特征个数,提高模型精确度,减少运行时间的目的。另一方面,选取出真正相关的特征简化了模型,使研究人员易于理解数据产生的过程。
特征选择主要有两个目的:
根据特征选择的形式将特征选择方法分为3类:
1)Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。特征选择过程与后续学习器无关,先用特征选择过程对特征进行“过滤”,再用过滤后的特征来训练模型。根据相关性值排序
2)Wrapper:包装法,根据要使用的学习器性能评分,每次选择若干特征,或者排除若干特征。包装法特征选择的目的就是为给定的学习器“量身定做”的特征子集。贪心或者穷举搜索
3)Embedded:嵌入法,嵌入式特征选择是在学习器训练过程中自动进行了特征选择。根据特征权重系数排序
其中1不需要训练,直接计算某些可以反映相关性值排序即可,2和3需要进行模型训练,且2需要多次进行模型训练;1和2是特征选择过程与学习器训练过程分开,3是合二为一,在学习器训练过程中自动进行了特征选择。
特征选择时的 Forward Selection 和 Backward Selection
如果想从初始的特征集合中选择取出一个包含了所有重要信息的特征子集,如果没有任何领域知识作为假设条件,那么只好遍历所有可能的子集了。可行的方法是产生一个“候选子集”,评价出它的好坏,基于评价结果产生下一个候选子集,然后再对其评价,……,这样的过程持续下去,直至无法找到更好的特征子集为止。那么,如何基于评价结果获取下一个候选子集?如何评价特征候选子集的好坏?
这是一个搜索策略问题。于是就有了:
Backward Elimination,Forward Selection和Stepwise这三种是特征选择中经常用到的方法。
当有时候特征的数量太多的时候,我们除了可以用PCA等方法降维之外,还可以用特征选择的方法,筛选出几个对结果影响最大的特征(feature),从而在对结果影响不大的情况下,减少计算量。
Backward Elimination的方法很简单:
首先包含了所有的feature,然后每个feature都尝试去删除,测试删除的哪个feature对模型准确性有最大的提升,最终删掉对模型提升最高的一个特征。如此类推,直到删除feature并不能提升模型为止。
Forward Selection则完全相反,一个一个加进去。
相对于Forward Selection,Backward Elimination的优点在于,其允许一些低贡献值的特征能够进到模型中去(有时候低贡献值的特征能在组合中有更大的贡献值,而Forward Selection忽略了这种组合的可能性),因此Backward Elimination能够避免受一两个占主导地位的特征的干扰。
Stepwise则是结合上述两者的方法,当一个feature新加入后,stepwise会尝试删去一个feature,直至达到某个预设的标准。这种方法的缺点是,预设的标准不好定,而且容易陷入到过拟合当中。
转载地址:http://kpvdi.baihongyu.com/