特征选择与稀疏学习

特征选择

特征选择是我们进行机器学习训练前必须要考虑的一个步骤,周志华说特征选择是避免维度灾难和去重冗余特征,但是这两点都是为避免学习复杂度。但是也不能盲目去掉冗余特征,要根据结果考虑。如果计算体积的话,长宽底面积高,我们可以去掉长宽,保留底面积。

特征选择的过程本质上讲,离不开两个步骤:

  • 子集搜索
  • 子集评价

子集搜索一般都是贪心和穷举法,而子集评价的方法非常多,比较好用的一种就是计算信息增益。它定义为一个特征能够为分类系统带来多少信息,带来的信息越多,该特征越重要。对一个特征而言,系统有它和没它时信息量将发生变化,而前后信息量的差值就是这个特征给系统带来的信息量。所谓信息量,其实就是熵。

1
信息量(熵)差值 —— 信息增益 —— 特征重要性
其他特征选择方法本质上结合了某种或多种子集搜索和子集评价机制

而就方法论的角度来说,特征选择一共可以分为三大类:

  • 过滤
  • 包裹
  • 嵌入

顾名思义也很好理解,过滤就是特征处理在机器学习之前,包裹是将机器学习模型本身的性能作为特征选择好坏的指标,换言之就是为某个模型量身定做的特征子集。

而嵌入式选择法就是将子集选择的过程与模型训练的过程结合在一起,譬如L1正则化。这里加入L1的损失函数的别名叫做LASSO回归,而加入L2的损失函数别名叫做岭回归。

关于L1, L2的讨论以及,何时取得最值的理解与证明,我觉得应该参考一下这个链接:L1为何比L2更易获得稀疏解

1
而所有的稀疏表达的本质就是为了降维

过滤法里,最有名的方法就是Relief方法,Relief是针对二分类设计的算法,大概原理,就是遍历样本集,对每一个样本,计算猜对临近nearly hit, 和猜错临近nearly miss,通过计算相关属性的统计量,来衡量该属性对区分同类异类样本是否有益。

包裹法比较具有代表性的法则是LVW,就是las vegas wrapper,没什么好说的,N次遍历,每次随机选择特征子集,到达程序停止条件后输出子集。停止条件老生常谈的两种,要么循环次数达到上限,要么CrossValidation误差小于阈值。

嵌入法,就是上文的LASSO回归和岭回归

稀疏学习

周志华老师关于稀疏学习讲了两个例子,一个是字典学习,一个是压缩感知,我觉得这是从两个不同方向来对稀疏学习进行阐述 。稀疏学习首先要求训练样本有许多无效特征,这样的话就可以用稀疏矩阵表达,核心还是为了降低学习难度、减少储存开销、增强学习模型的可解释性

首先字典学习,感觉也没什么特殊的LASSO回归配合交替优化变量发与奇异值分解对损失函数的最小值进行求解。这里你需要知道这种问题的解决方式的思路是怎样的。

然后再是压缩感知,压缩感知解决问题的思路如同泰勒展开式的脑洞一样神奇。它与特征选择和稀疏表示不同,压缩感知关注的是如何利用自身信号的稀疏性,从部分观测样本中恢复原信号,分为感知测量,和感知重构这两个阶段。

这个算法有一个比较好的介绍,贴在这里:压缩感知算法介绍

拓展

所以稀疏学习代表了一类问题的解决方式,就是特征矩阵过于稀疏,或是期望将特征矩阵变成稀疏的时候。下面我再结合经验谈谈稀疏学习,稀疏学习是近几年比较火热的一门技术,在信号处理(主要是压缩感知)、计算机视觉(比如JPEG压缩)领域影响比较大,而在机器学习领域里面,稀疏学习可以看做是一种特征处理相关的模型。

那么说人话,稀疏表示是在超完备字典D(超完备是说字典的行数小于列数)中用尽可能少的原子来表示信号x,即:

考虑噪声,就是

α的size要比x大很多,但是α的非零元素要比x少很多,也就是说α是个外强中干(非常稀疏)的向量,所以稀疏表示的核心,就是用若干个(尽可能少)的向量,去表示原向量。

1
稀疏即冗余

当样本具有这样的稀疏表达形式的时候,对于学习任务有不少的好处,例如支持向量机之所以能在文本数据上有很好的性能,恰好是由于文本数据使用了稀疏表示,使大多数问题变得线性可分

而且稀疏表示在享受这么多好处的同时,并不会带来储存的负担。

稀疏模型研究方向主要包括系数求解(即上面那个问题,经典算法有OMP贪心、lasso凸松弛和L1/2非凸松弛),字典学习(获得更好的D,经典算法有MOD和K-SVD交替迭代)和模型应用。

显然稀疏表达的好坏与我们用的字典D有着密切的关系,字典分两类,一种是预先给定的分析字典,比如小波基、DCT等,另一种则是针对特定数据集学习出特定的字典。这种学出来的字典能大大提升在特定数据集的效果。

关于字典学习的模型,跟书里讲的差不多, 最小化系数表达与原表达的误差。

这个目标函数非凸,一般用交替迭代思想来解,即分别固定D和W,更新另一个。在Word2Vec的算法中,也体现了这种思想。

-------------本文结束感谢您的阅读-------------