特征选择

  • 数据集由数据对象(Data Objects)组成,一个数据的集合,通常以表格形式出现。

  • 数据行对应数据对象,一个数据对象代表一个实体(Entity),数据对象又称为样本、实例、数据点、对象。

  • 数据列对应属性(或者称为特征、字段、指标等)。
    分类属性:
    定类:属性值仅仅是区分彼此的标志,没有序次关系(头发颜色)
    定序:属性表示个体在某个有序状态中处的位置(成绩优良)
    数值属性:
    定距:区间属性的值有序,可以评估值之间的差,不能评估倍数(温度)
    定比:值有序,可以评估值之间的差,也可以说一个值是另一个的倍数

    在数据挖掘时,特征来源一般有两种:
    来源一:业务已经整理好各种特征数据,即业务指标,有时称为属性,我们需要去找出适合我们问题需要的特征。
    该类特征通常是业务专家指出,通常是挖掘遇到的最初数据来源,是已有特征,也称原始特征。
    来源二:从业务特征中自己去寻找高级数据特征,如若干原始特征的组合后形成一个新特征,即特征衍生。
    在特征选择范畴下,属性的概念等同于特征的概念

特征选择原则:
当数据预处理完成后,需要选择有意义的特征进行模型训练。通常来说,从三个方面考虑:
特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分作用不明显,区分度不高。
特征之间的相关性:特征与特征之间的线性相关性,去除相关性比较高的特征。
特征与目标的相关性:与目标相关性高的特征,应当优先选择。

特征选择原则:
特征选择方法有很多,主要包含特征减少和特征扩增。
特征减少
单变量特征选择方法
Filter(过滤法):按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。

基于模型的特征选择方法
Wrapper(包装法):根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
Embedded(嵌入法):嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。
其他方法:如交叉验证配合Embeded方法
特征扩增
在原有基础上构造新的特征

Filter:
方差选择法:
方差选择法是一种最简单的选择技术,基本思想是:方差越大的特征,对于分析目标影响越大,就越有用。如果方差较小,比如小于1,那么这个特征可能对算法作用比较小。最极端的,如果某个特征方差为0,即所有的样本该特征的取值都是一样的,那么对模型训练没有任何作用,可以直接舍弃。
只适用于连续变量。
在实际应用中指定一个方差的阈值,当方差小于这个阈值的特征会被去除。
使用工具:sklearn中的VarianceThreshold类。

相关系数法:
适用于特征类型均为数值特征的情况。
也称为Pearson相关系数,是一种最简单的,能帮助理解特征和响应变量之间关系的方法,该方法衡量的是变量之间的线性相关性,结果的取值区间为[-1,1],-1表示完全的负相关,+1表示完全的正相关,0表示没有线性相关。
该方法的明显缺陷是只对线性关系敏感,如果特征与响应变量的关系是非线性的,即便两个变量具有一 一对应的关系,相关系数也可能会接近0。建议最好把数据可视化出来,以免得出错误的结论。
Scipy的pearsonr方法能够同时计算相关系数r值和p-value(简称p值), p值越小,表示相关系数越显著。
数值属性A和B 的相关系数计算公式如下:
在这里插入图片描述

Python实例:

#导入数据集
import pandas as pd
from pandas import DataFrame as df
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
#查看数据集
iris = load_iris()
X, y = iris.data, iris.target	
Iris_df=pd.concat([df(X,columns=iris.feature_names),df(y,columns=['target'])],axis=1)
Iris_df.sample(5,axis=0)

卡方检验:
卡方检验,也叫作χ^2检验,它可以检验某个特征分布和输出值分布之间的相关性,通常比粗暴的方差选择法好用。
χ2值描述了自变量与因变量之间的相关程度:χ2值越大,相关程度也越大。在特征选择时,保留相关程度大的特征,另外还可以利用χ^2检验做异常检测等。
在sklearn中,可以使用chi2这个类来做卡方检验得到所有特征的χ2值与显著性水平P的临界值,给定χ2值阈值, 选择χ^2值较大的部分特征。
除了卡方检验,我们还可以使用F检验和t检验,它们都是使用假设检验的方法,只是使用的统计分布不是卡方分布,而是F分布和t分布而已。在sklearn中,有F检验的函数f_classif和f_regression,分别在分类和回归特征选择时使用。

互信息法:
互信息表示两个变量是否有关系以及关系的强弱。
互信息计算公式如下:
其中,I(X,Y)为随机变量X与Y之间的互信息,该公式能够很好地度量各种相关性,但计算复杂。
对上述公式变现有I(X,Y)=H(Y)-H(Y|X),互信息可以理解为,X引入导致Y的熵减小的量,其中H(Y)表示的Y熵,即Y的不确定度, Y的分布越是离散,其不确定程度就越明显,熵就越大。
其中Y的熵的计算公式为:H(Y)=-∑P(Y)logP(Y) ,表示平均信息量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值