/14072.html
特征选择(排序)对于数据科学家、机器学习从业者来说非常重要。好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点、底层构造,这对进一步改善模型、算法都有着重要作用。
特征选择主要有两个功能:
1.减少特征数量、降维,使模型泛化能力更强,减少过拟合
2.增强对特征和特征值之间的理解
拿到数据集,一个特征选择方法,往往很难同时完成这两个目的。通常情况下,选择一种自己最熟悉或者最方便的特征选择方法〔往往目的是降维,而忽略了对特征和数据理解的目的〕。
在许多机器学习的书里,很难到关于特征选择的容,因为特征选择要解决的问题往往被视为机器学习的一种副作用,一般不会单独拿出来讨论。本文将介绍几种常用的特征选择方法,它们各自的优缺点和问题。
1 去掉取值变化小的特征Removing features with low variance
这应该是最简单的特征选择方法了:假设*种特征的特征值只有0和1,并且在所有输入样本中,95%的实例的该特征取值都是1,那就可以认为这个特征作用不大。如果100%都是1,那这个特征就没意义了。当特征值都是离散型变量的时候这种方法才能用,如果是连续型变量,就需要将连续变量离散化之后才能用,而且实际当中,一般不太会有95%以上都取*个值的特征存在,所以这种方法虽然简单但是不太好用。可以把它作为特征选择的预处理,先去掉那些取值变化小的特征,然后再从接下来提到的特征选择方法中选择适宜的进展进一步的特征选择。
2 单变量特征选择Univariate feature selection
单变量特征选择能够对每一个特征进展测试,衡量该特征和响应变量之间的关系,根据得分扔掉不好的特征。对于回归和分类问题可以采用卡方检验等方式对特征进展测试。
这种方法比拟简单,易于运行,易于理解,通常对于理解数据有较好的效果〔但对特征优化、提高泛化能力来说不一定有效〕;这种方法有许多改良的版本、变种。在常用的正则化计算方法中 属于
2.1 Pearson相关系数Pearson Correlation
皮尔森相关系数是一种最简单的,能帮助理解特征和响应变量之间关系的方法,该方法衡量的是变量之间的线性相关性,结果的取值区间为[-1,1],-1表示完全的负相关(这个变量下降,那个就会上升),+1表示完全的正相关,0表示没有线性相关。
Pearson Correlation速度快、易于计算,经常在拿到数据(经过清洗和特征提取之后的)之后第一时间就执行。
Pearson相关系数的一个明显缺陷是,作为特征排序机制,他只对线性关系敏感。如果关系是非线性的,即便两个变量具有一一对应的关系,
Pearson相关性也可能会接近0。
2.2 互信息和最大信息系数Mutual information and ma*imal
information coefficient (MIC)
以上就是经典的互信息公式了。想把互信息直接用于特征选择其实不是太方便:1、它不属于度量方式,也没有方法归一化,在不同数据及上的
结果无法做比拟;2、对于连续变量的计算不是很方便〔*和Y都是集合,*,y都是离散的取值〕,通常变量需要先离散化,而互信息的结果对离散化的方式很敏感。
最大信息系数克制了这两个问题。它首先寻一种最优的离散化方式,然后把互信息取值转换成一种度量方式,取值区间在[0,1]。minepy提供了MIC功能。
2.3 距离相关系数(Distance correlation)
距离相关系数是为了克制Pearson相关系数的弱点而生的。在*和*^2这个例子中,即便Pearson相关系数是0,我们也不能断定这两个变量是独立的〔有可能是非线性相关〕;但如果距离相关系数是0,则我们就可以说这两个变量是独立的。
尽管有MIC和距离相关系数在了,但当变量之间的关系接近线性相关的时候,Pearson相关系数仍然是不可替代的。第一、Pearson相关系数计算速度快,这在处理大规模数据的时候很重要。第二、Pearson相关系数的取值区间是[-1,1],而MIC和距离相关系数都是[0,1]。这个特点使得Pearson 相关系数能够表征更丰富的关系,符号表示关系的正负,绝对值能够表示强度。当然,Pearson相关性有效的前提是两个变量的变化关系是单调的。
2.4 基于学习模型的特征排序(Model based ranking)
这种方法的思路是直接使用你要用的机器学习算法,针对每个单独的特征和响应变量建立预测模型。其实Pearson相关系数等价于线性回归里的标准化回归系数。假设*个特征和响应变量之间的关系是非线性的,可以用
基于树的方法〔决策树、随机森林〕、或者扩展的线性模型等。基于树的方法比拟易于使用,因为他们
对非线性关系的建模比拟好,并且不需要太多的调试。但要注意过拟合问题,因此树的深度最好不要太大,再就是运用穿插验证。
3 线性模型和正则化
单变量特征选择方法独立的衡量每个特征与响应变量之间的关系,另一种主流的特征选择方法是基于机器学习模型的方法。有些机器学习方法本身就具有对特征进展打分的机制,或者很容易将其运用到特征选择任务中,例如回归模型,SVM,决策树,随机森林等等。说句题外话,这种方法好似在一些地方叫做wrapper类型,大概意思是说,特征排序模型和机器学习模型是耦盒在一起的,对应的非wrapper类型的特征选择方法叫做filter 类型。
下面将介绍如何用回归模型的系数来选择特征。越是重要的特征在模型中对应的系数就会越大,而跟输出变量越是无关的特征对应的系数就会越接近于0。在噪音不多的数据上,或者是数据量远远大于特征数的数据上,如果特征之间相对来说是比拟独立的,则即便是运用最简单的线性回归模型也一样能取得非常好的效果。
在这个例子当中,尽管数据中存在一些噪音,但这种特征选择模型仍然能够很好的表达出数据的底层构造。当然这也是因为例子中的这个问题非常适合用线性模型来解:特征和响应变量之间全都是线性关系,并且特征之间均是独立的。
3.1 正则化模型
正则化就是把额外的约束或者惩罚项加到已有模型〔损失函数〕上,以防止过拟合并提高泛化能力。损失函数由原来的E(*,Y)变为
E(*,Y)+alpha||w||,w是模型系数组成的向量〔有些地方也叫参数parameter,coefficients〕,||·||一般是L1或者L2数,alpha是一个可调的参数,控制着正则化的强度。当用在线性模型上时,L1正则化和L2正则化也称为Lasso 和Ridge。
3.2 L1正则化/Lasso
L1正则化将系数w的l1数作为惩罚项加到损失函数上,由于正则项非零,这就迫使那些弱的特征所对应的系数变成0。因此L1正则化往往会使学到的模型很稀疏〔系数w经常为0〕,这个特性使得L1正则化成为一种很好的特征选择方法。
Scikit-learn为线性回归提供了Lasso,为分类提供了L1逻辑回归。
下面的例子在波士顿房价数据上运行了Lasso,其中参数alpha是通过grid search进展优化的。
可以看到,很多特征的系数都是0。如果继续增加alpha的值,得到的模型就会越来越稀疏,即越来越多的特征系数会变成0。
然而,L1正则化像非正则化线性模型一样也是不稳定的,如果特征集合中具有相关联的特征,当数据发生细微变化时也有可能导致很大的模型差异。
3.3 L2正则化/Ridge regression

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。