数据降维——PCA、SVD
发布网友
发布时间:2022-09-05 10:35
我来回答
共1个回答
热心网友
时间:2024-11-17 22:34
数据降维的目的: 数据降维,直观地好处是维度降低了,便于计算和可视化,其更深层次的意义在于有效信息的提取综合及无用信息的摈弃。
降维方法 __ 属性选择 :过滤法;包装法;嵌入法;
| _ 映射方法 _ 线性映射方法:PCA、LDA、SVD分解等
| _ 非线性映射方法:
|__核方法:KPCA、KFDA等
|__二维化:
|__流形学习:ISOMap、LLE、LPP等。
| __ 其他方法:神经网络和聚类
PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法。它不仅仅是对高维数据进行降维,更重要的是经过降维去除了噪声,发现了数据中的模式。PCA把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的m个特征互不相关。
PCA方法通过消除数据的相关性,找到一个空间,使得各个类别的数据在该空间上能够很好地分离。在图1中,有一些离散的二维分布点,其中五角星表示一类集合,小圆圈表示另一类集合,假设这两个类别可以用特征X和特征Y进行描述,由图可知,在X轴和Y轴上这两个类别的投影是重叠的,表明这些点的两个特征X和Y没有表现出突出的识别性。但是两个类的投影在Z轴上区分度较大,显示出很好的识别性。PCA就是这样的一个工具,它可以产生非常好的降维效果。
优点:1)最小误差。2)提取了主要信息
缺点:1)计算协方差矩阵,计算量大
即每一维的数据都减去该维的均值。这里的“维”指的就是一个特征(或属性),变换之后每一维的均值都变成了0。假设二维数据如图3所示,特征中心化的结果如图4所示。
样本X和样本Y的协方差(Covariance):
协方差为正时说明X和Y是正相关关系,协方差为负时X和Y是负相关关系,协方差为0时X和Y相互独立。Cov(X,X)就是X的方差(Variance)。当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵),方阵的边长是n(n-1)/2。比如对于3维数据(x,y,z),计算它的协方差就是:
若AX=λX,则称λ是A的特征值,X是对应的特征向量。实际上可以这样理解:矩阵A作用在它的特征向量X上,仅仅使得X的长度发生了变化,缩放比例就是相应的特征值λ。当A是n阶可逆矩阵时,A与P^(-1)Ap相似,相似矩阵具有相同的特征值。特别地,当A是对称矩阵时,A的奇异值等于A的特征值,存在正交矩阵Q(Q^(-1)=Q^(T)),使得:
对A进行 奇异值分解 就能求出所有特征值和Q矩阵。A∗Q=Q∗D,D是由特征值组成的对角矩阵由特征值和特征向量的定义知,Q的列向量就是A的特征向量。
将特征值按照从大到小的顺序排序,选择其中最大的 k 个,然后将其对应的 k 个特征向量分别作为列向量组成特征向量矩阵。这里特征值只有两个,我们选择其中最大的那个,这里是1.284,对应的特征向量是(--0.677,0.735) T 。
假设样例数为 m ,特征数为 n ,减去均值后的样本矩阵为 DataAdjust ( m * n ),协方差矩阵是 n * n ,选取的 k 个特征向量组成的矩阵为 EigenVectors ( n * k )。那么投影后的数据 FinalData 为
这里是 FinalData (10*1)= DataAdjust (10*2矩阵)×特征向量(--0.677,0.735) T, 得到结果是将原始样例的 n 维特征变成了 k 维,这 k 维就是原始特征在 k 维上的投影。
链接:https://www.hu.com/question/30094611/answer/275172932
PCA理解第一层境界:最大方差投影
正如PCA的名字一样, 你要找到主成分所在方向, 那么这个主成分所在方向是如何来的呢?
其实是希望你找到一个垂直的新的坐标系, 然后投影过去, 这里有两个问题。 第一问题 : 找这个坐标系的标准或者目标是什么? 第二个问题 , 为什么要垂直的, 如果不是垂直的呢?
如果你能理解第一个问题, 那么你就知道为什么PCA主成分是特征值和特征向量了。 如果你能理解第二个问题, 那么你就知道PCA和ICA到底有什么区别了。
对于第一个问题: 其实是要 求解方差最小或者最大 。 按照这个目标, 你代入拉格朗日求最值, 你可以解出来, 主成分方向,刚好是S的特征向量和特征值! 是不是很神奇? 伟大的拉格朗日 (参考 " 一步一步走向锥规划 - QP " " 一挑三 FJ vs KKT ")
现在回答了,希望你理解了, PCA是对什么东西求解特征值和特征向量。 也理解为什么是求解的结果就是特征值和特征向量吧!
这仅仅是PCA的本意! 我们也经常看到PCA用在图像处理里面, 希望用最早的主成分重建图像:
这是怎么做到的呢?
PCA理解第二层境界:最小重建误差
什么是重建, 那么就是找个新的基坐标, 然后减少一维或者*自由度。 然后重建整个数据。 好比你找到一个新的视角去看这个问题, 但是希望自由度小一维或者几维。
那么目标就是要最小重建误差,同样我们可以根据最小重建误差推导出类似的目标形式。
虽然在第二层境界里面, 也可以直观的看成忽略了最小特征值对应的特征向量所在的维度。 但是你能体会到和第一层境界的差别么? 一个是找主成分, 一个是维度缩减。 所以在这个层次上,才是把PCA看成降维工具的最佳视角。
PCA理解第三层境界:高斯先验误差
在第二层的基础上, 如果 引入最小二乘法和带高斯先验的最大似然估计的等价性 。(参考" 一步一步走向锥规划 - LS " “ 最小二乘法的4种求解 ” ) 那么就到了理解的第三层境界了。
所以, 重最小重建误差, 我们知道求解最小二乘法, 从最小二乘法, 我们可以得到高斯先验误差。
有了高斯先验误差的认识,我们对PCA的理解, 进入了概率分布的层次了。 而正是基于这个概率分布层次的理解, 才能走到Hinton的理解境界。
PCA理解第四层境界(Hinton境界):线性流形对齐
如果我们把高斯先验的认识, 到到数据联合分布, 但是如果把数据概率值看成是空间。 那么我们可以直接到达一个新的空间认知。
这就是“Deep Learning”书里面写的, 烙饼空间(Pancake), 而在烙饼空间里面找一个线性流行,就是PCA要干的事情。 我们看到目标函数形式和最小重建误差完全一致。 但是认知完全不在一个层次了。
奇异值分解(Singular Value Decomposition,SVD),是一种提取信息的方法。比如有一份记录用户关于餐馆观点的数据,要对其进行处理分析,提取背后的因素,这个因素可能是餐馆的类别,烹饪配料等,然后利用这些因素估计人们对没有去过的餐馆的看法,从而进行推荐,提取这些信息的方法就叫奇异值分解法。
奇异值分解能够简约数据,去除噪声和冗余数据。其实它说白了也是一种降维方法,将数据映射到低维空间。从数学的角度讲,它就是一种矩阵分解法,就是把一个大矩阵分解成易于处理的形式,这种形式可能是两个或多个矩阵的乘积,就如同我们在代数中的因子分解,这种因子分解在数学里便于我们计算。
假设我们的矩阵A是一个m×n的矩阵,那么我们定义矩阵A的SVD为
假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量),从图片来反映几个相乘的矩阵的大小可得下面的图片
那么奇异值和特征值是怎么对应起来的呢?首先,我们将一个矩阵A的转置 * A,将会得到一个方阵,我们用这个方阵求特征值可以得到:
这里得到的v,就是我们上面的右奇异向量。此外我们还可以得到
这里的σ就是上面说的奇异值,u就是上面说的左奇异向量。奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:
r是一个远小于m、n的数,这样矩阵的乘法看起来像是下面的样子:
右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。这里我们用一个简单的例子来说明矩阵是如何进行奇异值分解的。我们的矩阵A定义为:
链接:https://zhuanlan.hu.com/p/29846048