参考书为《机器学习》-周志华
当前存在的问题
从初始的特征集合选取包含所有重要信息的特征子集,若没有任何领域知识作为先验假设,那只好遍历所有可能的子集,这实际上并不可行,会遇到组合爆炸,特证数稍多就不行
可行做法是产生一个"候选子集",评价出此好坏,基于评价结果产生下一个子集…
第一个环节是子集搜索(subset search)
给定特征集合 { a 1 , a 2 , . . . . , a d } \lbrace a_1, a_2 ,....,a_d \rbrace {a1,a2,....,ad} , 我们可将每个特征看作一个候选子集,对这 d d d个候选单特征子集进行评价
假定 { a 2 } \lbrace a_2 \rbrace {a2}最优,将 { a 2 } \lbrace a_2 \rbrace {a2}作为第一轮的选定集;
然后,在上一轮的选定集中加入一个特征,构造包含两个特征的候选子集,假定这 d − 1 d-1 d−1个候选两特征子集(候选子集为 { { a 2 , a 1 } , { a 2 , a 3 } , . . . . , { a 2 , a d } } ) 中 , { a 2 , a 4 } \lbrace\lbrace a_2,a_1 \rbrace,\lbrace a_2,a_3 \rbrace,....,\lbrace a_2,a_d \rbrace \rbrace)中,\lbrace a_2,a_4\rbrace {{a2,a1},{a2,a3},....,{a2,ad}})中,{a2,a4}最优,且优于 { a 2 } \lbrace a_2 \rbrace {a2},于是将 { a 2 , a 4 } \lbrace a_2,a_4 \rbrace {a2,a4}作为本轮选定集
⋯ \cdots ⋯
"前向"(forward)搜索:逐渐增加相关特征
后向搜索(backward):从完整的特征集合开始,每次尝试去掉一个无关特征
双向搜索(bidirectional):前向后向相结合,每一轮逐渐增加相关特征(后续不会被去除),同时减少无关特征
结论
上述策略都是贪心,仅考虑本轮最优。但很多问题只能穷举才可解决
给定数据集 D D D,假定 D D D中第 i i i类样本所占的比例为 p i ( i = 1 , 2 , . . . , ∣ Y ∣ ) p_i(i=1,2,...,|Y|) pi(i=1,2,...,∣Y∣),假定样本属性为离散型
对属性子集 A A A,假定根据其取值将 D D D分成了 V V V个子集 { D 1 , D 2 , . . . , D V } \lbrace D^1,D^2,...,D^V \rbrace {D1,D2,...,DV},每个子集中的样本在 A A A上取值相同,于是我们可计算属性子集 A A A的信息增益
G a i n ( A ) = E n t ( D ) − ∑ v = 1 V D v D E n t ( D v ) (11.1) Gain(A) = Ent(D) - \sum_{v=1}^{V}\frac{D^v}{D}Ent(D^v)\tag{11.1} Gain(A)=Ent(D)−v=1∑VDDvEnt(Dv)(11.1)
其中信息熵定义为
E n t ( D ) = − ∑ i = 1 ∣ Y ∣ p k l o g 2 p k (11.2) Ent(D) = -\sum_{i=1}^{|Y|}p_klog_2p_k\tag{11.2} Ent(D)=−i=1∑∣Y∣pklog2pk(11.2)
总结
将特征子集搜索与子集评价机制结合,即可得到特征选择方法
例如前向搜素+信息熵,这与决策树算法非常相似
事实上,决策树可用于特征选择,树结点的划分属性所组成的集合就是选择出的特征子集
过滤式方法是先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关,这相当于先用特征选择过程先对初始特征进行过滤,再用过滤后的特征来训练模型
Relief是著名的过滤式特征选择方法,该方法设计了一个“相关统计量”来度量特征的重要性
流程
Relief如何确定相关统计量
给定训练集 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . . , ( x m , y m ) } \lbrace (x_1,y_1),(x_2,y_2),....,(x_m,y_m) \rbrace {(x1,y1),(x2,y2),....,(xm,ym)},对每个示例 x i x_i xi
R e l i e f Relief Relief现在 x i x_i xi的同类样本中寻找其最近邻 x i , n h x_{i,nh} xi,nh,称为**“猜中近邻”(near-hit),再从 x i x_i xi的异类样本**中寻找其最近邻
x i , n m x_{i,nm} xi,nm,称为"猜错近邻"(near-miss)
相关统计量对应于属性j的分量为
δ j = ∑ i − d i f f ( x i j , x i , n h j ) 2 + d i f f ( x i j , x i , n m j ) 2 (11.3) \delta^j = \sum_{i}-diff(x_i^j,x_{i,nh}^{j})^2 + diff(x_i^j,x_{i,nm}^j)^2\tag{11.3} δj=i∑−diff(xij,xi,nhj)2+diff(xij,xi,nmj)2(11.3)
上式中可以看出
若 x i x_i xi与其猜中近邻 x i , n h x_{i,nh} xi,nh在属性 j j j上的距离小于 x i x_i xi与其猜错近邻 x i , n m x_{i,nm} xi,nm的距离,则说明属性 j j j对区分同类与异类是有益的,增大属性 j j j所对应的统计量分量
反之,说明属性 j j j起负作用,就减少统计量分量
对基于不同样本得到的估计结果进行平均,就得到各属性的相关统计分量,分量值越大,则对应属性的分类能力越强
总结
为Relief的扩展变体,处理多分类问题
假定数据集 D D D中的样本来自 ∣ Y ∣ |Y| ∣Y∣个类别
对于示例 x i x_i xi,若它属于第 k k k类 ( k ∈ { 1 , 2 , . . . , ∣ Y ∣ } ) (k \in \lbrace 1,2,...,|Y| \rbrace) (k∈{1,2,...,∣Y∣}),则Relief-F先在第 k k k类的样本中寻找 x i x_i xi的最近邻示例 x i , n h x_{i,nh} xi,nh并将其作为猜中近邻
然后再第 k k k类之外的每个类中找到一个 x i x_i xi的最近邻示例作为猜错近邻,记为 x i , l , n m ( l = 1 , 2 , . . . , ∣ Y ∣ , l ≠ k ) x_{i,l,nm}(l = 1,2,...,|Y|,l \not = k) xi,l,nm(l=1,2,...,∣Y∣,l=k)
于是相关统计量对应于属性 j j j的分量
δ j = ∑ i − d i f f ( x i j , x i , n h j ) 2 + ∑ l ≠ k ( p l × d i f f ( x i j , x i , l , n m ) 2 ) (11.4) \delta^j = \sum_i -diff(x_i^j,x_{i,nh}^j)^2 + \sum_{l \not = k}(p_l \times diff(x_i^j,x_{i,l,nm})^2)\tag{11.4} δj=i∑−diff(xij,xi,nhj)2+l=k∑(pl×diff(xij,xi,l,nm)2)(11.4)
p l p_l pl为第 l l l类样本再数据集 D D D中所占比例
与过滤式不考虑后续学习器不同,包裹式特征选择直接把最终将要使用的学习器的性能作为特征子集的评价标准,即,包裹式特征选择的目的就是为给定学习器选择最有利于其性能、"量身定做"的特征子集
特点
LVW(Las Vegas Wrapper)是典型的包裹式特征选择方法
在拉斯维加斯方法(Las Vegas method)框架下使用随机策略来进行子集搜索,并以最终分类器得误差为特征子集评价准则
上图第 8 8 8行是通过在数据集 D D D上,使用交叉验证法来估计学习器£的误差,注意这个误差是在仅考虑特征子集 A ′ A^{\prime} A′时得到的,即特征子集 A ′ A^{\prime} A′上的误差.
若它比当前特征子集 A A A上的误差更小,或误差相当但 A ′ A^{\prime} A′中包含的特征数更少,则将 A ′ A^{\prime} A′保留下来.
需注意的是,由于 L V W LVW LVW 算法中特征子集搜索采用了随机策略,而每次特征子集评价都需训练学习器,计算开销很大.因此算法设置了停止条件控制参数 T T T.
然而,整个 L V W LVW LVW 算法是基于拉斯维加斯方法框架,若初始特征数很多(即 ∣ A ∣ |A| ∣A∣很大)、 T T T设置较大,则算法可能运行很长时间都达不到停止条件.
换言之,若有运行时间限制,则有可能给不出解
上面个两种方式中,特征选择过程与学习器训练过程有明显的分别;嵌入式特征选择将特征选择过程与学习器训练过程融为一体,两者在同意优化过程中完成,即在学习器训练过程中自动地进行了特征选择。
基于 L 1 L_1 L1正则化的学习方法就是一种嵌入式特征选择方法
数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . . , ( x m , y m ) } D = \lbrace (x_1,y_1),(x_2,y_2),....,(x_m,y_m) \rbrace D={(x1,y1),(x2,y2),....,(xm,ym)},其中 x ∈ R d x \in R^d x∈Rd, y ∈ R y \in R y∈R,
使用线性回归模型,平方误差为损失函数,优化目标是
m i n w ∑ i = 1 m ( y i − w T x i ) 2 (11.5) min_{w}\sum_{i=1}^{m}(y_i - w^T x_i)^2\tag{11.5} minwi=1∑m(yi−wTxi)2(11.5)
引入 L 2 L_2 L2范数正则化,则有
m i n w ∑ i = 1 m ( y i − w T x i ) 2 + λ ∣ ∣ w ∣ ∣ 2 2 (11.6) min_{w}\sum_{i=1}^{m}(y_i - w^T x_i)^2+\lambda||w||_2^2\tag{11.6} minwi=1∑m(yi−wTxi)2+λ∣∣w∣∣22(11.6)
将正则化项中的 L 2 L_2 L2范数替换为 L p L_p Lp范数,p=1,即采用 L 1 L_1 L1范数,则有
m i n w ∑ i = 1 m ( y i − w T x i ) 2 + λ ∣ ∣ w ∣ ∣ 1 (11.7) min_{w}\sum_{i=1}^{m}(y_i - w^T x_i)^2+\lambda||w||_1\tag{11.7} minwi=1∑m(yi−wTxi)2+λ∣∣w∣∣1(11.7)
附注
L 1 L_1 L1范数比 L 2 L_2 L2范数更容易获得"稀疏"(sparse)解,即它求得的 w w w会有更少的非零分量
对 w w w施加"稀疏约束"(即希望w的非零分量尽可能少)最自然的是使用 L 0 L_0 L0范数,但是其不连续,难以优化求解,因此常用 L 1 L_1 L1范数来近似