选择合适的特征
过滤法选择特征
特征集合很大时,在尝试降维之前,有必要用特征工程的方法去选择出较重要的特征结合。
过滤法:
按照特征的发散性或者相关性指标对各个特征进行评分,设定评分阈值或者待选择阈值的个数,选择合适特征。
feature_selection.VarianceThreshold([threshold])
方差筛选。方差越大的特征,那么可以认为它是比较有用的。如果方差较小,比如小于1,那么这个特征可能对算法作用很小。可以指定一个方差的阈值,方差小于这个阈值的特征会被筛掉。
feature_selection.SelectKBest([score_func, k]),score_func=scipy.stats.pearsonr
相关系数。主要用于输出连续值的监督学习算法中。分别计算所有训练集中各个特征与输出值之间的相关系数,设定一个阈值,选择相关系数较大的部分特征。
feature_selection.chi2(X, y)
假设检验如卡方检验。卡方检验可以检验某个特征分布和输出值分布之间的相关性。使用chi2这个类来做卡方检验得到所有特征的卡方值与显著性水平P临界值,可以给定卡方值阈值, 选择卡方值较大的部分特征。
feature_selection.f_classif(X, y), feature_selection.f_regression(X, y)
假设检验除了卡方检验,还可以使用F检验和t检验。F检验的函数f_classif和f_regression,分别在分类和回归特征选择时使用。
feature_selection.mutual_info_classif(X, y),feature_selection.mutual_info_regression(X, y)
互信息,即从信息熵的角度分析各个特征和输出值之间的关系评分。在决策树中出现过互信息(信息增益)。互信息值越大,说明该特征和输出值之间的相关性越大,越需要保留。
(可以优先使用卡方检验和互信息来做特征选择)
包装法
通过选择一个目标函数来一步步的筛选特征。通常是预测效果评分,每次选择部分特征,或者排除部分特征。
嵌入法
用机器学习的方法来选择特征,但是它和RFE的区别是它不是通过不停的筛掉特征来进行训练,而是使用的都是特征全集。
寻找高级特征
注意:不是随便两两组合就可以形成高级特征,这样容易导致特征爆炸,反而没有办法得到较好的模型。(聚类的时候高级特征尽量少一点,分类回归的时候高级特征适度的多一点)