特征选择:常见方法总结

特征选择方法

目的:

减少特征数量、降维,使模型泛化能力更强,减少过拟合增强对特征和特征值之间的理解

方法:

一、方差选择法。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)


你可能感兴趣的:(ML学习笔记)