基于sklearn的特征选择方法

来源:互联网 发布:数据归一化后的值 编辑:程序博客网 时间:2024/05/26 02:21

在数据挖掘工作中,通常处理的是一个包含大量特征且含义未知的数据集,并基于该数据集挖掘到有用的特征。那么这里面一般是四个步骤:特征工程、特征选择、模型构造、模型融合。特征工程主要是清洗特征、删除无用特征和构造新特征,经过特征工程这个过程我们可能会得到大量的特征;而特征选择的目的就是从这大量的特征中挑选出优秀的特征,因为好的特征更能够提升模型性能,同时也通过降维达到了避免维度灾难的目的。本文主要利用sklearn 这个工具来实现常用的特征选择方法。

特征选择有两个功能:1.减少特征数量,起到降维作用,使泛化能力更强;2.减少过拟合,增强对特征和特征值之间的理解

本文主要基于sklearn 介绍两大类特征选择方法:

  • 单变量特征选择方法,这里面主要包括皮尔森相关系数、最大信息系数、距离相关系数等,主要思想是衡量特征和标签变量之间的相关性;
  • 基于模型的特征选择方法,这主要是指模型在训练过程中对特征的排序,如基于随机森林的特征选择、基于逻辑回归的特征选择等

1. 单变量特征选择

1.1 皮尔森相关系数

皮尔森相关系数是一种最简单的、能帮助理解特征和标签变量之间关系的方法。它衡量的是变量之间的线性相关性,其值在-1,1 之间;其中1 代表变量完全正相关,-1 代表完全负相关。
例如 a = [2,4,6,8] b = [4,8,12,16] c= [-4,-8,-12,-16] 使用scipy 来求解

    import numpy as np    import scipy as sc    a = np.array(a)    b = np.array(b)    c = np.array(c)    print sc.stats.pearsonr(a,b)#(1.0,0.0)第一个数代表Pearson相关系数    print sc.stats.pearsonr(a,c)#(-1.0,0.0)

Pearson相关系数的一个明显缺陷是只对线性关系敏感。如果关系是非线性的,即便两个变量具有一一对应的关系,Pearson相关性也可能会接近0。

1.2 最大信息系数

它首先寻找一种最优的离散化方式,然后把互信息取值转化为一种度量方式。区间为[0,1] 可以使用sklearn下的 minepy 去求解

1.3 距离相关系数

距离相关系数是为了克服Pearson 相关系数的弱点而生的。即是Pearson 的系数为0 ,我们仍然不能说它们是无关的,因为可能是非线性相关。而若距离相关系数为0,那可以说两变量无关。

尽管有MIC 和距离相关系数存在,但当变量之间的关系接近线性相关时,Pearson 相关系数仍然是不可替代的指标。一个原因是Pearson 相关系数计算速度快,适合于处理大规模数据;另一个原因是Pearson 相关系数的范围为[-1,1],而MIC系数为[0,1],所以它更能表达丰富的关系。

参考文献
http://dataunion.org/14072.html

0 0
原创粉丝点击