在机器学习的训练过程中,总是会碰到样本大、特征多的数据集。而这些数据集里面的数据有些是用处很小甚至完全无用的。如果一组数据中的无用数据占比较大时,一方面会使得模型的训练时间变长,另一方面模型容易出现欠拟合现象;而如果一组数据中作用较小的数据,即在训练中不能较好体现数据集中样本特征的数据,这类数据占比较大时,除了会提升模型训练的时间以外,还容易引起模型的过拟合现象。
针对这种情况,我们需要对这组数据集进行数据的预处理,其主要的方法有降噪、特征选择以及降维处理,而这次主要讲解如何进行特征选择以及特征选择的一些算法。
基于机器学习的数据不平衡问题处理
机器学习数据预处理——降维
在一个典型的机器学习中,是通过特征来预测样本的值;而当特征过少时,我们往往会通过某些算法来增加特征,但实际上,大多数时候特征的数量总会过多,那里面难免会出现一些对模型训练的无用或多余的特征。例如:对汽车能否卖出进行预测时,若有特征如下——用户群体、汽车编号、汽车舒适度以及中国男女比例,那么显然,中国男女比例就是一个无用特征;再者,同样对与车能否卖出进行预测,若特征变成如下几个——汽车底盘大小,汽车的价格,汽车的舒适度以及汽车的占地面积,在这组特征里,汽车底盘大小和汽车的占地面积有较大的重复性,这便是存在多余特征,选其中一个即可.
那么对于这些特征,若不加以处理,则容易影响模型的最终训练效果。其处理方法主要有如下几种:
过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关.这相当于先用特征选择过程对初始特征进行"过滤",再用过滤后的特征来训练模型.
方差过滤法是一种十分简单粗暴的方法,给定一个阈值,方差过滤法会将方差低于或等于该阈值的特征筛选掉。我们认为当一组特征的变化小到一定程度时,这组特征对结果的预测所能起到的帮助便是微乎其微的,甚至为0,所以方差过滤法便将这些数据给筛选掉。
先求得所有特征的方差值,然后给定一个阈值,最后将小于等于该阈值的特征给筛选掉,留下满足条件的特征组成新的数据集。
由于方差过滤法的缺点较大,所以往往是先采用方差过滤法将一些变化极小或为无变化的特征先行筛选掉,减少一部分数据,然后再采用包裹法或嵌入法进行二次筛选
卡方检验是特征选择中一种常见的算法。
卡方检验在特征选择中是用以判别特征之间是否相互独立,即有无多余特征的出现
定义:若 k k k个独立的随机变量 z 1 , z 2 , ⋯ , z k z_{1},z_{2},\cdots ,z_{k} z1,z2,⋯,zk,且 z i ∼ N ( 0 , 1 ) ( i = 1 , 2 , ⋯ , k ) z_{i}\sim N\left (0,1 \right )\left (i=1,2,\cdots ,k\right ) zi∼N(0,1)(i=1,2,⋯,k),则这 k k k个随机变量的平方和 Z = z 1 2 + z 2 2 + ⋯ + z k 2 Z=z_{1}^{2}+z_{2}^{2}+\cdots +z_{k}^{2} Z=z12+z22+⋯+zk2为服从自由度为 k k k的卡方分布,记为: Z ∼ x 2 ( k ) Z\sim x^{2}\left ( k\right ) Z∼x2(k)
卡方分布的期望: E ( x 2 ) = n E\left (x^{2}\right )=n E(x2)=n,方差: D ( x 2 ) = 2 n D\left ( x^{2}\right )=2n D(x2)=2n, n n n为分布的自由度
卡方检验是以 χ 2 \chi ^{2} χ2分布为基础的一种常用假设检验方法,它的无效假设 H 0 H_{0} H0是:观察频数与期望频数没有差别
该检验的基本思想是:首先假设 H 0 H_{0} H0成立,基于此前提计算出 χ 2 \chi ^{2} χ2值,它表示观察值与理论值之间的偏离程度。根据 χ 2 \chi ^{2} χ2分布及自由度可以确定在 H 0 H_{0} H0假设成立的情况下获得当前统计量及更极端情况的概率P。如果P值很小,说明观察值与理论值偏离程度太大,应当拒绝无效假设,表示比较资料之间有显著差异;否则就不能拒绝无效假设,尚不能认为样本所代表的实际情况和理论假设有差别
设 A A A代表某个类别的观察频数, E E E代表基于 H 0 H_{0} H0计算出的期望频数, A A A与 E E E之差称为残差
χ 2 = ∑ ( A − E ) 2 E = ∑ i = 1 k ( A i − E i ) 2 E i = ∑ i = 1 k ( A i − n p i ) 2 n p i ( i = 1 , 2 , ⋯ , k ) \chi ^{2}=\sum \frac {\left (A-E\right )^{2}}{E}=\sum _{i=1}^{k}\frac {\left (A_{i}-E_{i}\right )^{2}}{E_{i}}=\sum _{i=1}^{k}\frac {\left (A_{i}-np_{i}\right )^{2}}{np_{i}} \left (i=1,2,\cdots ,k\right ) χ2=∑E(A−E)2=i=1∑kEi(Ai−Ei)2=i=1∑knpi(Ai−npi)2(i=1,2,⋯,k)
其中, A i A_{i} Ai为 i i i水平的观察频数, E i E_{i} Ei为 i i i水平的期望频数, n n n为总频数, p i p_{i} pi为 i i i水平的期望概率。 i i i水平的期望频数 E i E_{i} Ei等于总频数 n × i n\times i n×i水平的期望概率 p i p_{i} pi, k k k为单元格数。
当 n n n比较大时, χ 2 \chi ^{2} χ2统计量近似服从 k − 1 k-1 k−1(计算 E i E_{i} Ei时用到的参数个数)个自由度的卡方分布
由卡方的计算公式可知,当观察频数与期望频数完全一致时, χ 2 \chi ^{2} χ2值为0;观察频数与期望频数越接近,两者差异越小, χ 2 \chi ^{2} χ2值越小;反之,观察频数与期望频数差别越大,两者差异越大, χ 2 \chi ^{2} χ2值越大。换言之,大的 χ 2 \chi ^{2} χ2值表明观察频数远离期望频数,即表明远离假设。小的 χ 2 \chi ^{2} χ2值表明观察频数接近期望频数,接近假设。因此, χ 2 \chi ^{2} χ2是观察频数与期望频数之间距离的一种度量指标。如果 χ 2 \chi ^{2} χ2值小,研究者就倾向与不拒绝 H 0 H_{0} H0;如果 χ 2 \chi ^{2} χ2值大,就倾向与拒绝 H 0 H_{0} H0。至于 χ 2 \chi ^{2} χ2在每个具体研究中究竟要大到什么程度才能拒绝 H 0 H_{0} H0,则要借助于卡方分布求出所对应的P值来确定
卡方分布本身是连续性分布,但是在分类资料的统计分析中,显然频数只能以整数形式出现,因此计算出的统计量是非连续的。只有当样本量比较充足时,才可以忽略两者间的差异,否则将可能导致较大的偏差。具体而言,一般认为对于卡方检验中的每一个单元格,要求其最小期望频数约大于1,且至少有4/5的单元格期望频数大于5,此时使用卡方分布计算出的概率值才是准确的。如果数据不符合要求,可以采用确切概率法进行概率的计算.
与过滤式特征选择不考虑后续学习器不同,包裹式特征选择直接把最终将要使用的学习器的性能作为特征子集的评价准则.换言之,包裹式特征选择的目的就是为了给定学习器选择最有利于其性能、“量身定做”的特征子集.
因为包裹法是基于最终的学习器来进行特征选择的,所以一般而言,在最终学习器性能方面,包裹法要比过滤法特征选择更好;但另一方面,由于在特征选择过程中给多次训练学习器,因此包裹式特征选择的计算开销通常比过滤式特征选择大得多.
LVW(Las Vegas Wrapper)是一个典型的包裹式特征选择方法.它在拉斯维加斯方法框架下使用随机策略来进行子集搜索,并以最终分类器的误差为特征子集评价准则.
设 D D D代表数据集, A A A代表特征集, L \mathfrak{L} L代表学习算法
1、初始化数值,令 E = ∞ E=\infty E=∞, d = ∣ A ∣ d=\left | A \right | d=∣A∣, A ∗ = A A^{*}=A A∗=A
2、从 A A A随机生成特征子集 A ′ A^{'} A′,令 d ′ = ∣ A ′ ∣ d^{'}=\left | A^{'} \right | d′=∣∣∣A′∣∣∣
3、将特征子集 A ′ A^{'} A′代入学习算法 L \mathfrak{L} L得到学习器,通过评价算法计算该学习器的误差 E ′ E^{'} E′
4、如果 E ′ < E E^{'}
5、重复步骤2,直到满足某个条件退出循环
这个终止条件可以是循环的次数也可以是达到某个误差
在过滤式和包裹式特征选择方法中,特征选择过程与学习器训练过程有明显的分别;与此不同,嵌入式特征选择是将特征选择过程与学习器训练过程融为一体,两者在同一个优化过程中完成,即在学习器训练过程中自动地进行了特征选择
嵌入法熟知的有两种:
给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x m , y m ) } D=\left \{ \left ( x_{1},y_{1} \right ) ,\left ( x_{2},y_{2} \right ) ,\cdots ,\left ( x_{m},y_{m} \right ) \right \} D={(x1,y1),(x2,y2),⋯,(xm,ym)},其中 x ∈ R d , y ∈ R x\in \mathbb{R} ^{d},y\in \mathbb{R} x∈Rd,y∈R.我们考虑最简单的线性回归模型,以平方误差为损失函数,则优化目标为
min w ∑ i = 1 m ( y i − w T x i ) 2 (1) \min _{w}\sum _{i=1}^{m} \left ( y_{i}-w^{T}x_{i} \right )^{2} \tag {1} wmini=1∑m(yi−wTxi)2(1)
当样本特征很多,而样本数相对较少时,式(1)很容易陷入过拟合.为了缓解过拟合问题,可对式(1)引入正则化项.若使用 L 2 L_{2} L2范数正则化,则有
min w ∑ i = 1 m ( y i − w T x i ) 2 + λ ∥ w ∥ 2 2 (2) \min _{w}\sum _{i=1}^{m} \left ( y_{i}-w^{T}x_{i} \right )^{2}+\lambda \left \| w \right \| _{2}^{2} \tag {2} wmini=1∑m(yi−wTxi)2+λ∥w∥22(2)
其中正则化参数 λ > 0 \lambda >0 λ>0.式(2)称为“岭回归”,通过引入 L 2 L_{2} L2范数正则化,确能显著降低过拟合的风险.
当然,也可以采用 L 1 L_{1} L1范数,即令 p = 1 p=1 p=1,则有
min w ∑ i = 1 m ( y i − w T x i ) 2 + λ ∥ w ∥ 1 (3) \min _{w}\sum _{i=1}^{m} \left ( y_{i}-w^{T}x_{i} \right )^{2}+\lambda \left \| w \right \| _{1} \tag {3} wmini=1∑m(yi−wTxi)2+λ∥w∥1(3)
其中正则化参数 λ > 0 \lambda >0 λ>0.式(3)称为LASSO
L 1 L_{1} L1范数和 L 2 L_{2} L2范数正则化都有助于降低过拟合风险,但前者还会带来一个额外的好处:它比后者更容易获得“稀疏”解,即它求得的 w w w会有更少的非零分量.
树模型在训练时通过给特征打分,再通过特征的分数来获得特征之间的相关性,最后再来训练模型。所以我们也能够通过各特征的分数,给定一个阈值来选择我们想要的特征。
参考资料:
周志华—机器学习
机器学习 特征选择(过滤法 封装法 嵌入法)
机器学习:特征提取与特征选择意义及目的
特征选择/筛选方法总结