什么是特征选择?
对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用。这里的属性即称为“特征”(feature)。
对当前学习任务有用的属性称为“相关特征”(relevant feature)、没什么用的属性称为“无关特征”(irrelevant feature)。
从给定的特征集合中选择出相关特征子集的过程,即“特征选择”(feature selection)
特征选择的目的?
1.简化模型,使模型更易于理解:去除不相关的特征会降低学习任务的难度。并且可解释性能对模型效果的稳定性有更多的把握
2.改善性能:节省存储和计算开销
3.改善通用性、降低过拟合风险:减轻维数灾难,特征的增多会大大增加模型的搜索空间,大多数模型所需要的训练样本随着特征数量的增加而显著增加。特征的增加虽然能更好地拟合训练数据,但也可能增加方差
之所以要考虑特征选择,是因为机器学习经常面临过拟合的问题。 过拟合的表现是模型参数太贴合训练集数据,模型在训练集上效果很好而在测试集上表现不好,也就是在高方差。简言之模型的泛化能力差。过拟合的原因是模型对于训练集数据来说太复杂,要解决过拟合问题,一般考虑如下方法:
- 收集更多数据
- 通过正则化引入对复杂度的惩罚
- 选择更少参数的简单模型
- 对数据降维(降维有两种方式:特征选择和特征抽取)
其中第1条一般是很难做到的,一般主要采用第2和第4点
使用特征选择的前提?
1.训练数据包含许多冗余或无用的特征,移除这些特征并不会导致丢失信息。其中冗余是指一个本身很有用的特征与另外一个有用的特征强相关,或它包含的信息能从其它特征推演出来
2.特征很多但样本相对较少
特征选择的4个步骤
1.产生过程:产生特征或特征子集候选集合
2.评价函数:衡量特征或特征子集的重要性或者好坏程度,即量化特征变量和目标变量之间的联系以及特征之间的相互联系。为了避免过拟合,可用交叉验证的方式来评估特征的好坏
3.停止准则:为了减少计算复杂度,需设定一个阈值,当评价函数值达到阈值后搜索停止
4.验证过程:在验证数据集上验证选出来的特征子集的有效性
特征选择的三个方法
- Filter(过滤法)
- Wrapper(包装法)
- Embedded(嵌入法)
- 进化算法特征选择(技术干货|机器学习-特征选择的进化算法(二) - 知乎)
其他参考文献:Python特征选择的总结