注意:本文不涉及任何公式推导,仅对大致原理和作用进行介绍,不当之处欢迎指正。
为什么要稀疏?
1)特征选择
稀疏规则化能实现特征的自动选择,当Xi存在与输出Yi没有关系的特征(冗余特征)时,在最小化损失函数的时候要额外考虑这些特征,会加大计算量,而且可能对输出Y产生干扰。稀疏化可以自动选择特征,通过把冗余特征的权重置0来去掉冗余特征。
2)可解释性。
如果有X有1000维,那会存在维数灾难。我们通过稀疏化,使得X存在很少的非零元素, 例如只有5个非零的wi,那么我们就有理由相信,这些对应的特征在患病分析上面提供的信息是巨大的,决策性的。
稀疏性:即向量中0元素的多少,0元素越多,就越稀疏。
一、稀疏表示(sparse representation):
第一种情况:把数据集D考虑是一个矩阵,每行是一个样本,而每列是一个特征。特征选择就是要借助稀疏性去除无关特征,即矩阵中无关的列,从而使模型变得简单,提高可解释性。
第二种情况:D中有很多0元素,但是实际中往往不是以一整列或者一整行的形式存在。例如:在文档分类过程中,将一个文档看作一个样本,每个字(词)作为特征,字词出现的频率作为特征取值。即样本行中的某一列为特定的一个字词在该文本中出现的个数。如果用康熙字典(47035个汉字)来描述,则意味着矩阵D有47035列;而即使用现代汉语常用字表(3500字)来描述,也有3500列。而很多字在矩阵D中是没有出现的,也就是0。这就是稀疏表示。
简而言之,稀疏表示就是关注一个数据集中稀疏的量。高度的稀疏性使很多问题变得线性可分。
而有时候数据是稠密的,能否转化为“稀疏表示”形式,从而享有这种稀疏性呢?
答案是:构造字典。
(需要注意的是,我们希望的稀疏是恰当稀疏,如现代汉语常用字表。而不是康熙字典那样的过度稀疏)
二、字典学习
通过学习字典使得模型的复杂度降低,描述稀疏性,这种过程叫做“字典学习”或“稀疏编码”。
字典学习侧重于学得字典的过程。
稀疏编码侧重于对样本进行稀疏表达的过程。
由于字典学习和稀疏编码通常是在同一个优化求解过程在中完成的,因此不作进一步区分,统称为字典学习。
而我们可以通过设置词汇量的大小控制字典的规模,进而影响稀疏程度。
三、压缩感知
由香农定理可知。Ws>2Wm ,然后实际中为了便于传输、存储,我们常对采样的数字信号进行压缩,这有可能损失部分信息,如何通过部分信息来恢复全部信息,便是压缩感知的作用。
通过压缩感知可以基于稀疏性的前提,对原始信号通过傅里叶变换、小波变换等进行稀疏表示,然后基于稀疏性从少量观测中恢复原信号。
应用如:通过收集读者在网上阅读书的信息,因为读者不可能阅读过所有的书,如果按书的类别(如悬疑、历史等)来分类书籍,显然这部分数据是稀疏的。于是便可以用压缩感知来推断读者的喜好书籍类别,进而进行广告投放等。