特征选择方法
目的:
减少特征数量、降维,使模型泛化能力更强,减少过拟合增强对特征和特征值之间的理解
方法:
一、方差选择法。(from sklearn.feature_selection import VarianceThreshold)
a. 特征值需为离散型变量,若是连续型,需要连续变量离散化。
b. 最简单。实用性差。可作为特征选择预处理。
问:为什么方差可以用来选择特征?
理论上是认为在样本集上如果当前特征基本上都差异不大,因此可以认为这个特征对我们区分样本贡献不大,因此可以在构造特征过程中可以将其去掉。(联系PCA降维)
(1)Pearson相关系数 (from scipy.stats import pearsonr)
a. 最简单的,衡量变量之间的线性相关性,结果取值[-1,1]
b. 只适用于线性关系。
(2)Spearman相关系数 (from scipy.stats import spearmanr)
a. 描述相关性强弱以及方向,与分布无关。
b. 适用于线性,和简单非线性关系。
c. pearson使用数据再做,spearman使用数据的秩次再做。
(3)Kendall相关系数 (from scipy.stats import kendalltau)
a. 是表示多列等级变量相关程度的一种方法。
b. 一般采用等级评定的方法,即让K个评价者对N件事物进行等级评定,每个评价者都能对N件事物排出一个等级顺序。K个评价者便可得到K列从1至N的等级变量数据。这类K列等级变量数据综合起来求相关,可用肯德尔系数。
(4)卡方检验(from sklearn.feature_selection import chi2)
(5)最大信息系数(MIC) (from minepy import MINE )
a. MIC具有普适性,不限定于特定的函数类型(如线性函数、指数函数或周期函数。
b.互信息直接用于特征选择不太方便:1、它不属于度量方式,也没有办法归一化,在不同数据及上的结果无法做比较;2、对于连续变量的计算不是很方便,通常变量需要先离散化,而互信息的结果对离散化的方式很敏感。
c. Mic首先寻找一种最优的离散化方式,然后把互信息取值转换成一种度量方式,取值区间在[0,1]。
ps: SelectKBest: 选择排名前 k 名的所有特征。 (from sklearn.feature_selection import SelectKBest)