降维专题(一):为什么要降维?
目录
- 降维概念
- 情况1:样本中不存在噪声
- 解的存在性角度
- 样本的局部性角度
- 情况2:样本中存在噪声
- 因果分析角度
- 模型预测角度
降维概念
维度是一个相对于样本量的概念。维度很高的时候,如果样本量也满足一定的数量,问题也不大。一般来说,如果每增加一个维度,样本量增加至少10个左右,不降维对模型结果的影响也不大。问题就在于,样本有限,但描述样本的维度过多。如在面部识别中,一个可用的维度是像素点的数量。对于一个 112 × 92 112\times92 112×92像素的图像来说,对应 112 × 92 112\times92 112×92个像素点,有1万多个维度,而如果用于训练的样本只有几百个,那么这个维度就过大了。
那么,为什么要降维,不降维有什么影响?
我们也可以转换成一个对称的问题,即在维度一定的情况下,样本量较少会有什么样的影响。从本质上讲,不管我们构造什么模型,数据挖掘要解决的最重要问题都是找样本在维度空间中遵循的一个分布规律。直观上考虑,事物的“规律”需要通过观察较多的样本才能发现。具体分析,我们区分两种情况:样本中不存在噪声与存在噪声,并且试图证明对这两种情况,都需要足够的样本量才能发现较准确的“规律”。
情况1:样本中不存在噪声
下面从两个角度讨论这种情况下的样本-维度问题。
解的存在性角度
假设样本中没有噪声。我们先考虑样本严格遵循一个多元线性模型,则所有样本点都满足等式(以矩阵形式表示) X β = Y X\bm\beta=Y Xβ=Y。其中,X是 n × m n\times m n×m维的自变量矩阵,m为样本量,n为维度数,或者也可以用m个n维列向量的组合表示: X = ( x 1 , x 2 . . . , x m ) X =(x_1,x_2...,x_m) X=(x1,x2...,xm); β \bm\beta β为 m × 1 m\times 1 m×1维参数向量,即我们需要解的量; Y Y Y为一个也就是说,给定样本(X,Y),我们只要解这个方程就能得到参数矩阵A。但问题在于,这个方程是否有解,如果有,是否唯一。因此,引入以矩阵形式表述的解的存在性定理。当矩阵X的秩小于参数个数,方程有无穷个解。当矩阵X的秩等于参数个数,方程有唯一解;当矩阵X的秩大于参数个数,方程无解。因此,当样本量较小时同时维度较大时,首先,样本量小就直接限制了X的行数,也就限制了秩的上界;同时维度较大时很容易出现完全共线性(现实中很多特征间都有很强的相关性),从而进一步降低矩阵的秩。并且一般来说,参数个数和维度数正相关,因此,在这种情况下,一般会有矩阵X的秩小于参数个数,也就是说,我们可以得到无穷多的参数矩阵都满足 X β = Y X\bm\beta=Y Xβ=Y的关系。而显然真实的模型只是其中一个。
样本的局部性角度
样本是总体的一个局部表征。因此,我们不能期望总体的每个局部规律都与总体本身的规律相似,因此用小样本只能推断出局部的规律,但与全局的规律可能存在较大偏差。但当样本量更大且在定义域上更分散的话,对总体特征的表征更全面。举一个简单的例子,假设总体服从一个 y = 2 x y = 2x y=2x的规律。若我们只通过观察两个样本(1,2),(2,4)推断总体服从什么模型。这样,观察者可能得出总体服从 y = 2 x y =2^x y=2x这样的错误模型。而当我们观察到更多的样本,发现都在一条直线上,才能更准确判断出真实模型。
有的同学可能会说,这个不就是under-fit的问题吗?这两个问题表面上有点像,本质上恰恰相反。通常说的Under-fit指的是当样本量较大,但人为选取的模型维度较低,只能描述出样本的局部规律。所以,这个问题的解决方式是人为选取更多特征(维度)或者让机器来学习特征。而这里表述的问题正好相反,总体遵循的真实模型维度较高,而样本量过小,已有的信息量不足以用一个高维度的模型刻画全局规律。所以,这个问题的解决方式是降维或者增加样本量。
情况2:样本中存在噪声
实际的样本中还有噪声.。什么是噪声?简单的说,就是令实际值偏离模型预测值的那部分因素。这些因素中,有部分是通过一些手段可以消除的,如计量经济学中的“遗漏变量”;而还有一些部分是无法消除的,即完全随机的因素。现实世界中很多事件都相互关联,并且很多事件的发生都有一定随机性,这两个事实也解释了为什么噪声十分普遍。
因此,给定一个真实模型和自变量x,因变量(或者说标签值)y并不一定都能完全由这个模型给出,而是会离模型预测值有一定的误差。反过来说,在有噪声存在的情况下,如果一个模型能完全拟合所有的样本点(X,y),那么这个模型一定是有问题的,因为它把所有的噪声也纳入进去了。那么,纳入噪声有什么问题呢?这个问题可以从建模的两个目的考虑:
因果分析角度
首先,在因果分析中,发现变量之间的潜在关系是建模的最重要目的。在这个领域,建模的目的就在于排除noise的影响,抽象出y和x之间可解释的、“纯粹”的关系,也就是经济学中常说的缓解内生性。如果模型完全拟合了现实,这个模型在解释性上也就失去了意义。维度增加,模型的 R 2 R^2 R2也一定会越高,极端时候趋近1,亦即完全拟合所有样本点,这样的模型并没有抽象出y和X之间的理论关系,因而参数基本不具备解释性。这里可以分多种情况讨论。首先,若纳入一些可以影响原自变量的变量,或者因变量对其有影响的变量,就是Angrist大神在Mostly Harmless Econometrics中讨论的bad control的问题,会导致估计参数有偏。若纳入无关变量,即和因变量无关但和自变量有关,则会导致估计量方差较大,估计精度下降。如果纳入了和自变量、因变量均无关的变量,虽然理论上对估计不会产生什么影响,但会使计算复杂度上升,比如在梯度下降算参数的时候,多一个维度意味着每次循环都要多进行和样本数量成比例的操作。因此,综合这些因素,我们若要求模型有较高解释性,则需要降维。
模型预测角度
而在工业应用中,对模型预测的能力要求较高,对可解释性要求不高。下面以多元线性回归模型为例解释为何过高的维度同样会损害模型预测能力。
y = β 0 + β 1 x 1 + β 2 x 2 + u y = \beta_0+\beta_1x_1+\beta_2x_2+u y=β0+β1x1+β2x2+u
用矩阵又可以表示为: y = X β + u \textbf y = X \bm \beta+\textbf u y=Xβ+u
Lemma: 样本量过小会导致估计量较大的抽样方差
Proof : 一般来说,我们认为,y、X、u都是随机变量,即当满足E(u)=0时,有 E ( y ) = X β E(\textbf y)=X\beta E(y)=Xβ。也就是说,从总体中抽取的样本的y取值满足一个以E(y)为均值的概率分布,而并非一个确定值。这就是我们所说的“噪声”的一个重要部分(在因果分析中,还有很大一部分噪声来自u,也就是 E ( u ) ≠ 0 E(\textbf u)\not =0 E(u)=0)。由于我们使用了一个包含y、X的损失函数来构造估计量 β ^ \bm{\hat\beta} β^,因此估计量也是一个随机变量,我们由此即可以引出估计量抽样均值和抽样方差的概念,可以理解成估计量服从一个以真值为参数的分布,我们每次从样本得到的估计量实际上是从这个分布中抽样得到的一个估计量,因此我们需要从这个抽样值,通过概率论推出分布的参数,即能求出真值。
在假定 V a r ( u i ) = σ 2 Var(u_i)=\sigma^2 Var(ui)=σ2成立时,估计量的抽样方差和样本量成反比(此处未用矩阵形式表述):
V a r ( β ^ i ) = σ 2 ∑ j = 1 n ( x i j − x ˉ i ) 2 Var(\hat\beta_i)=\frac{\sigma^2}{\sum_{j=1}^{n}(x_{ij}-\bar x_i)^2} Var(β^i)=∑j=1n(xij−xˉi)2σ2
可以看出,n越小,该式分母越小, V a r ( β ^ i ) Var(\hat\beta_i) Var(β^i)越大,即通过某批样本算出的一个估计量 β ^ i \hat\beta_i β^i远离参数真值(要么太小要么太大)的概率就会越大。这意味着,若从同一个总体中抽取多个小样本进行这样的估计,估计量的波动幅度会很大,不稳定。
Theorem:选取适当的维度能降低预测误差
Proof : 我们可以将预测误差进行分解。将拟合出的线性模型表示为 y = f ^ ( X ) \bm y = \hat f(X) y=f^(X),则点 x 0 \bf x_0 x0处的预测误差(prediction error)可以表示为: P E = E y ∣ x = x 0 { ( y − f ^ ( X ) ) 2 ∣ X = x 0 } = σ ϵ 2 + [ f ˉ ( x 0 ) − E ( f ^ ( x 0 ) ) ] 2 + V a r ( f ˉ ( x 0 ) ) − f ^ ( x 0 ) ) PE=E_{\bf y|x=x_0}{\{ (\bm y-\hat f(X))^2|X=\bm x_0\}}=\sigma_\epsilon^2+[\bar f(\bm x_0)-E(\hat f(\bm x_0))]^2+Var(\bar f(\bm x_0))-\hat f(\bm x_0)) PE=Ey∣x=x0{(y−f^(X))2∣X=x0}=σϵ2+[fˉ(x0)−E(f^(x0))]2+Var(fˉ(x0))−f^(x0))
式子的第二项代表预测均值对实际期望值的bias,可以进一步化简为 x 0 2 [ β − E ( β ^ ) ] 2 \bm x_0^2[\bm\beta-E(\hat \bm\beta)]^2 x02[β−E(β^)]2。第三项代表预测值对实际期望值偏差的variance,该项可以进一步化简为 V a r ( ( β − β ^ ) x 0 ) = x 0 2 V a r ( β ^ ) Var((\bm {\beta-\hat\beta})\bm x_0)=\bm x_0^2Var(\hat \bm \beta) Var((β−β^)x0)=x02Var(β^)。
如果模型中加入维度数更多,实际是将引起y误差的u中越来越多因素考虑进去,即令 E ( u ) → 0 E(u)\to0 E(u)→0,因此可以降低 ( E ( β ^ ) − β ) 2 (E(\hat \bm\beta)-\bm\beta)^2 (E(β^)−β)2,也就是PE式中第二项降低。维度增大到一定程度则可以包括所有噪声,则 E ( u ) = 0 E(u)=0 E(u)=0,也就是 E ( β ^ ) = β , b i a s = 0 E(\hat \bm\beta)=\bm\beta, bias=0 E(β^)=β,bias=0。但同时,由Lemma的结论可知,此时 V a r ( β ^ ) Var(\bm {\hat\beta}) Var(β^)也更大,即第三项增大。这就是所谓的bias-variance tradeoff。
以上PE的表达式实际构成了我们一般定义的损失函数。因此,如果要最小化损失函数,就需要找到一个较优的维度,可以平衡bias和variance。如下的图表示了bias, variance和Prediction error的关系。也就是说,为了最小化损失函数,不仅要学习参数,还要选取合适的维度。至于选取多大的维度,可以作为一个超参数,根据可解释性、数据可获得性等进行人为选取,也可以用cross validation进行学习。或者,在计量经济学中,还可以根据AIC、BIC一类指标选取最优维度(虽然经济学顶刊中基本不会用这些指标进行筛选,变量选取还是更多依据理论、经验知识。这是因为经济学更注重因果关系,纳入某些变量会导致Angrist大神在Mostly Harmless Econometrics中讨论的bad control的问题)。
以SVD这种降维方法为例。SVD中一个重要步骤是对特征值进行排序,并选取最大的几个特征值,忽略其他的,以实现降维,并且在这个特定的维度上,用SVD解出的参数值是能最小化损失函数的。而选取几个特征值,可以人为确定,也可以采取cross validation方法对这个超参数进行学习。
这两个方面综合,也就解释了为什么样本量相对于维度数过少(即维度数相对于样本量过多)会导致过拟合的问题。当然,这种说法的前提是在噪声存在的情况下,也就是现实中大部分的情况。
降维专题(一):为什么要降维?相关推荐
- 从「降维打击」谈「降维」
生活中常常听到一个词:降维打击. 如何理解? "王健林的小目标和我的小目标"就是最好的诠释. 对于数据来说,虽然不存在「打击」之说,但先对其降一波维,利用可视化的方式从整体上对数据 ...
- javascript数组降维_Javascript实现的数组降维——维度不同,怎么谈恋爱
数组的元素可能是数组,这样一层层嵌套,可能得到一个嵌套很深的数组,数组降维要做的事就是把嵌套很深的数组展开,一般最后得到一个一维数组,其中的元素都是非数组元素,比如数组[1, [2, 3, [4, 5 ...
- python 降维 聚类_比PCA降维更高级——(R/Python)t-SNE聚类算法实践指南
作者介绍:Saurabh.jaju2 Saurabh是一名数据科学家和软件工程师,熟练分析各种数据集和开发智能应用程序.他目前正在加州大学伯克利分校攻读信息和数据科学硕士学位,热衷于开发基于数据科学的 ...
- matlab如何实现降维,matlab怎么把矩阵降维
1. matlab如何对一个矩阵 求导而且不降维 gradient 计算数值梯度. 函数F(x,y,.)在(x0,y0,.)的梯度就是函数在该点的导数,通常在数学上记作▽F(x0,y0,.)或grad ...
- python降维方法_机器学习数据降维方法总结(附python代码)
介绍 在机器学习实战时,如果面对一个数据集具有上千个特征,那么对于模型训练将是一个巨大的挑战.面对如此多的数据变量,如果我们认真的去分析每一个变量将耗费我们几周甚至几个月的时间,那么你估计也要被开除了 ...
- python自编码器降维_自编码器数据降维实践
数据降维是一件困难的事情,而难点通常集中在主成分分析上.此前,我介绍过一种基于自动编码器的降维方法 .然而,在那一段时间里,我专注于如何使用自动编码作为预测器,而现在我想把它们看作是一种降维技术. 这 ...
- matlab 降维工具箱mle,Matlab数据降维工具箱
[实例简介] Matlab Toolbox for Dimensionality Reduction Matlab数据降维工具箱,包括几乎所有的数据降维方法:PCA.LDA.ICA.MDS.Isoma ...
- matlab lda数据降维,LDA有标签数据降维
之前无标签数据降维PCA,那么像下图带有标签数据,如果用PCA降维将会投影到v轴上,这个投影方差最大,数据将变成不可分状态,LDA将把数据投影加上已有分类这个变量,将数据投影到u轴上 假设原数据分成n ...
- 画出降维后的图片_PCA降维原理
PCA原理简介 为什么要用PCA? 维基百科介绍:主成分分析(英语:Principal components analysis,PCA)是一种分析.简化数据集的技术.主成分分析经常用于减少数据集的维数 ...
最新文章
- VTK:图片之ImageDivergence
- ABBYY FineReader 12可以内置自动化任务吗
- 如何构建一个Maven插件
- 【代码笔记】iOS-实现网络图片的异步加载和缓存
- java.util.Scanner简单应用
- 转载:Mongodb start
- c++ 应输入表达式_【C语言编程入门系列】—— 第五章,C语言基本运算和表达式(一)...
- 使用AJAX如何得到数据库当中的值!
- 机器学习方面的参考论文
- 部署Hyper -V实现桌面虚拟化
- Pytest测试框架(二):pytest 的setup/teardown方法
- Win10自带的SSH服务 scp功能传输文件(linux)
- python2代码转换python3(2018新)
- 五个优秀的硬盘检测工具
- MATLAB 如何绘制堆叠柱状图(stack)并更改所有子柱的颜色
- ROS学习(一)ROS Noetic安装及环境配置
- 常温超导量子计算机可控核聚变,科学无捷径:可控核聚变再获突破
- 扫地机器人漏扫严重?INDEMIND将空间覆盖率提升至90%以上
- 构造函数的作用,特点, 种类
- echarts.graphic.LinearGradient