特征提取:从原有属性中选择一个子集,达到降维目的。
原文:https://blog.youkuaiyun.com/mr_tyting/article/details/73413979
其中第一种过滤型很少使用。
特征选择思想简介
先大概讲讲上面三种方法思想:
过滤型
变量排序就是一种典型的过滤式方法,该方法独立于后续要使用的模型。这种方法的关键就是找到一种能度量特征重要性的方法,比如pearson相关系数,信息论理论中的互信息等。《机器学习》(Peter Flach)中还提到了卡方统计量,但未作详细介绍。变量排序方法的主要问题在于忽略了特征之间可能存在的相互依赖关系。一方面,即便排序靠前的特征,如果相关性较强,则引入了冗余的特征;另一方面,排序靠后的特征,虽然独立来看作用不明显,但可能与其它特征组合起来,就有很好的预测作用,如此就损失了有价值的特征。
其主要思想是:对每一维的特征“打分”,即给每一维的特征赋予权重,这样的权重就代表着该维特征的重要性,然后依据权重排序。
主要的方法有:
Chi-squared test(卡方检验)
information gain(信息增益),详细可见“简单易学的机器学习算法——决策树之ID3算法”
correlation coefficient scores(相关系数)
包裹型
这类方法的核心思想在于,给定了某种模型,及预测效果评价的方法,然后针对特征空间中的不同子集,计算每个子集的预测效果,效果最好的,即作为最终被挑选出来的特征子集。注意集合的子集是一个指数的量级,故此类方法计算量较大。故而针对如何高效搜索特征空间子集,就产生了不同的算法。其中有一种简单有效的方法叫贪婪搜索策略,包括前向选择与后向删除。在前向选择方法中,初始化一个空的特征集合,逐步向其中添加新的特征,如果该特征能提高预测效果,即得以保留,否则就扔掉。后向删除即是说从所有特征构成的集合开始,逐步删除特征,只要删除后模型预测效果提升,即说明删除动作有效,否则就还是保留原特征。要注意到,包裹式方法要求针对每一个特征子集重新训练模型,因此计算量还是较大的。
嵌入式
嵌入式方法将特征选择融合在模型训练的过程中,比如决策树在分枝的过程中,就是使用的嵌入式特征选择方法,其内在还是根据某个度量指标对特征进行排序。
sklearn中是如何做特征选择
sklearn.feature_selection模块中的类可用于样本集上的特征选择/维数降低,以提高学习器的准确度或提高其在高维数据集上的性能。
去除低方差的特征(除去常变量特征)
VarianceThreshold是特征选择的简单准则方法。它删除方差不符合某个阈值的所有特征。默认情况下,它会删除所有零差异特征,即所有样本中具有相同值的特征。也就是除去常变量特征。