AE 自编码器
是半监督的,自编码器是只有一层隐层节点,输入和输出具有相同节点数的神经网络
自动编码器输入的是X,我们的AE网络结构是X->H->X‘,我们的目的是让X’尽可能的等于X(X‘与X有相同维度),这样训练出来的H就可以用来表示或重构X。
用于压缩数据,但是没有泛化能力,因此不能作为生成模型
自动编码器与PCA的比较
自动编码器既能表征线性变换,也能表征非线性变换;而 PCA 只能执行线性变换。PCA可以直接得到最优的解析解,而AutoEncoders只能通过反向传播得到局部最优的数值解。因为自动编码器的网络表征形式,所以可将其作为层用于构建深度学习网络。设置合适的维度和稀疏约束,自编码器可以学习到比PCA等技术更有意思的数据投影。
PCA
PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值特征向量,选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵。这样就可以将数据矩阵转换到新的空间当中,实现数据特征的降维。
PCA算法两种实现方法**
基于特征值分解协方差矩阵实现PCA算法
输入:数据集,需要降到k维。
- 去平均值(即去中心化),即每一位特征减去各自的平均值。
- 计算协方差矩阵,注:这里除或不除样本数量n或n-1,其实对求出的特征向量没有影响。
- 用特征值分解方法求协方差矩阵的特征值与特征向量。
- 对特征值从大到小排序,选择其中最大的k个。然后将其对应的k个特征向量分别作为行向量组成特征向量矩阵P。
- 将数据转换到k个特征向量构建的新空间中,即Y=PX。
基于SVD分解协方差矩阵实现PCA算法
输入:数据集,需要降到k维。
- 去平均值,即每一位特征减去各自的平均值。
- 计算协方差矩阵。
- 通过SVD计算协方差矩阵的特征值与特征向量。
- 对特征值从大到小排序,选择其中最大的k个。然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵。
- 将数据转换到k个特征向量构建的新空间中。
通过SVD来完成,这个方法在样本量很大的时候很有效。
概率PCA
概率PCA不是PCA的变体,它就是PCA本身,概率PCA是从另一种角度来推导和理解PCA,它把PCA纳入了生成式的框架。
在概率PCA中, f(z;\theta) 是线性的,所以我们得到了一个线性高斯模型,线性高斯模型的优秀性质是牵扯到的4个概率都是高斯分布,所以我们可以直接给出边缘分布和编码分布的解析形式,极大似然估计和EM算法都可以使用。
PCA和概率PCA中 x 都是 z 的线性函数,只不过概率PCA显式地把高斯噪声 \epsilon 写在了表达式中;PCA没有显式写出噪声,而是把高斯噪声隐含在了二范数重建误差中。
VAE
AE和VAE的最重要的区别在于VAE迫使隐变量 z 满足高斯分布 p(z)=N(z|0,I) ,满足p(z)=N(z|0,I)时,p(z|x)后验概率也为正态分布,而AE对 z 的分布没有做任何假设。这个区别使得在生成新样本时,AE需要先数值拟合 p(z) ,才能生成符合数据集分布的隐变量
RPCA
Robust PCA考虑的是这样一个问题:一般的数据矩阵D包含结构信息,也包含噪声。那么可以将这个矩阵分解为两个矩阵相加:D = A + E,A是低秩的(由于内部有一定的结构信息造成各行或列间是线性相关的),E是稀疏的(含有噪声,则是稀疏的)
Robust PCA就是将一个矩阵分解为一个尽可能低秩矩阵L和一个尽可能稀疏的矩阵S,
图中下面公式为PCP问题,是由上面公式RPCA问题转换过来的
首先阐述低秩和稀疏的区别和联系
- 稀疏和低秩的相同点在于都表明矩阵的信息冗余比较大。具体来说,稀疏意味着有很多零,即可以压缩;低秩意味着矩阵有很多行(列)是线性相关的。
- 秩可以理解为图像所包含的信息的丰富程度,秩越低表示数据冗余性越大,因为用很少几个基就可以表达所有数据了。相反,秩越大表示数据冗余性越小
与经典PCA一样,Robust PCA(鲁棒主成分分析)本质上也是寻找数据在低维空间上的最佳投影问题。当观测数据较大和数据含有噪声时,PCA无法给出理想的结果,而Robust PCA能够从较大的且稀疏噪声污染的观测数据中恢复出本质上低秩的数据。
RPCA与PCA区别
Robust PCA与经典PCA问题一样,Robust PCA本质上也是寻找数据在低维空间上的最佳投影问题。对于低秩数据观测矩阵D,假如D受到随机(稀疏)噪声的影响,则D的低秩性就会破坏,使D变成满秩的。所以就需要将D分解成包含其真实结构的低秩矩阵A和稀疏噪声矩阵E之和。找到了低秩矩阵,实际上就找到了数据的本质低维空间,那么Robust PCA的Robust在哪呢?因为PCA前提假设的数据的噪声是高斯的,对于大的噪声或者严重的离群点,PCA会被它影响,导致其无法正常工作。而Robust PCA则不存在这个假设(Robust PCA假设噪声是稀疏的,而不管噪声的强弱)。
RPCA优化求解算法对比
数学推导详见Rubost PCA优化总结
RPCA代码详见这篇博客
RPCA代码详见这篇博客
RPCA各个求解算法原理详见这篇文章The Augmented Lagrange Multiplier Method for Exact Recovery of Corrupted Low-Rank Matrices
1、一般的增广拉格朗日乘算法(Augmented Lagrang Multipliers)
2、交替方向法(Alternating Direction Methods)
ADM 是对ALM的改善,加快了收敛速度,又称为不精确拉格朗日乘子法。
3、Exact ALM 算法
4、迭代阈值法(Iterative Thresholding)
5、Inexact ALM算法
6、加速近似梯度法(Accelerated Proximal Gradient)
PCP问题是可求解的凸优化问题,可以用ALM(增广拉格朗日算法来求解),比已有的鲁棒PCA算法,如加速近似梯度(APG)算法效果好
IT算法的迭代形式简单且收敛,但收敛速度比较慢,且很难选取合适的步长;APG与IT算法类似,但它却大大降低了迭代次数;ALM比APG快很多,而且ALM可以达到较高的精度,需要较低的存储空间。不精确拉格朗日乘子法(IALM)改善了EALM,不需要求解精确解,速度较快。