RPCA(robust principal component analysis)
稳健主成分分析/鲁棒主成分分析
范数是一个函数,表示方式为||x||,它常常被用来度量某个向量空间(或矩阵)中的每个向量的长度或大小。
在线性代数中,常用到范数这个概念。对于一维空间的实数集,标准的范数就是绝对值;那么将绝对值的概念推广到多维空间就叫做范数,即范数是绝对值函数的推广。[1]
先直观的感受一下二维空间的范数,假设在二维空间的向量为
则v的1范数为
∥ v ∥ 1 = ∥ ( x , y ) ∥ 1 = ∣ x ∣ + ∣ y ∣ = ( ∣ x ∣ 1 + ∣ y ∣ 1 ) 1 1 \|\mathbf{v}\|_{1}=\|(x, y)\|_{1}=|x|+|y|=\left(|x|^{1}+|y|^{1}\right)^{\frac{1}{1}} ∥v∥1=∥(x,y)∥1=∣x∣+∣y∣=(∣x∣1+∣y∣1)11 (1.1)
V的2范数为
∥ v ∥ 2 = ∥ ( x , y ) ∥ 2 = ∣ x ∣ 2 + ∣ y ∣ 2 = ( ∣ x ∣ 2 + ∣ y ∣ 2 ) 1 2 \|\mathbf{v}\|_{2}=\|(x, y)\|_{2}=\sqrt{|x|^{2}+|y|^{2}}=\left(|x|^{2}+|y|^{2}\right)^{\frac{1}{2}} ∥v∥2=∥(x,y)∥2=∣x∣2+∣y∣2=(∣x∣2+∣y∣2)21 (1.2)
V的3范数为
∥ v ∥ 3 = ∥ ( x , y ) ∥ 3 = ∣ x ∣ 3 + ∣ y ∣ 3 3 = ( ∣ x ∣ 3 + ∣ y ∣ 3 ) 1 3 \|\mathbf{v}\|_{3}=\|(x, y)\|_{3}=\sqrt[3]{|x|^{3}+|y|^{3}}=\left(|x|^{3}+|y|^{3}\right)^{\frac{1}{3}} ∥v∥3=∥(x,y)∥3=3∣x∣3+∣y∣3=(∣x∣3+∣y∣3)31 (1.3)
V的P范数为
∥ v ∥ p = ∥ ( x , y ) ∥ p = ∣ x ∣ p + ∣ y ∣ p p = ( ∣ x ∣ p + ∣ y ∣ p ) 1 p \|\mathbf{v}\|_{\mathrm{p}}=\|(x, y)\|_{p}=\sqrt[p]{|x|^{p}+|y|^{p}}=\left(|x|^{p}+|y|^{p}\right)^{\frac{1}{p}} ∥v∥p=∥(x,y)∥p=p∣x∣p+∣y∣p=(∣x∣p+∣y∣p)p1 (1.4)
当 时,有些区别,V的无穷范数为
∥ v ∥ ∞ = ∥ ( x , y ) ∥ ∞ = max ( ∣ x ∣ , ∣ y ∣ ) \|\mathbf{v}\|_{\infty}=\|(x, y)\|_{\infty}=\max (|x|,|y|) ∥v∥∞=∥(x,y)∥∞=max(∣x∣,∣y∣) (1.5)
①正定性
∥ x ∥ ≥ 0 , 当且仅当 x = 0 时, ∥ x ∥ = 0 \|\mathrm{x}\| \geq 0 \text {, 当且仅当 } \mathrm{x}=0 \text { 时, }\|\mathrm{x}\|=0 ∥x∥≥0, 当且仅当 x=0 时, ∥x∥=0
②齐次性
∥ λ x ∥ = ∣ λ ∣ ∥ x ∥ \|\lambda \mathrm{x}\|=|\lambda|\|x\| ∥λx∥=∣λ∣∥x∥
③三角不等式
∥ x + y ∥ ≤ ∥ x ∥ + ∥ y ∥ , ∀ x , y ∈ C n \|x+y\| \leq\|x\|+\|y\|, \forall x, y \in C^{n} ∥x+y∥≤∥x∥+∥y∥,∀x,y∈Cn
④对任意的X属于Cn(n维复数向量空间),有
∥ − x ∥ = ∥ x ∥ \|-x\|=\|x\| ∥−x∥=∥x∥
⑤对任意的X,Y属于Cn,有
∥ x ∥ − ∥ y ∥ ≤ ∥ x − y ∥ \|x\|-\|y\| \leq\|x-y\| ∥x∥−∥y∥≤∥x−y∥
当P=0时,也就是L0范数,由上面可知,L0范数并不是一个真正的范数,它主要被用来度量向量中非零元素的个数。用上面的L-P定义可以得到的L-0的定义为:
∥ v ∥ 0 = ∥ ∑ i = 1 n x i o 0 ∥ \|\mathbf{v}\|_{0}=\left\|\sqrt[0]{\sum_{i=1}^{n} x_{i}^{o}}\right\| ∥v∥0=∥ ∥0∑i=1nxio∥ ∥
我们知道非零元素的零次方为1,但零的零次方,非零数开零次方很不好说明L0的意义,所以在通常情况下,大家都用的是:
∥ x ∥ 0 = # ( i ∣ x i ≠ 0 ) \|\mathbf{x}\|_{0}=\#\left(i \mid x_{i} \neq 0\right) ∥x∥0=#(i∣xi=0) (1.6)
表示向量x中非零元素的个数。
∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ \|\mathbf{x}\|_{1}=\sum_{i=1}^{n}\left|x_{i}\right| ∥x∥1=∑i=1n∣xi∣
(1.7)
L1范数是我们经常见到的一种范数,定义如上。表示向量x中非零元素的绝对值之和。L1范数有很多的名字,例如我们熟悉的曼哈顿距离、最小绝对误差等。
使用L1范数可以度量两个向量间的差异,如绝对误差和(Sum of Absolute Difference)。
SAD ( x 1 , x 2 ) = ∑ i n ∣ x 1 i − x 2 i ∣ \operatorname{SAD}\left(x_{1}, x_{2}\right)=\sum_{i}^{n}\left|x_{1 i}-x_{2 i}\right| SAD(x1,x2)=i∑n∣x1i−x2i∣
由于L1范数的天然性质,对L1优化的解是一个稀疏解,因此L1范数也被叫做稀疏规则算子。通过L1可以实现特征的稀疏,去掉一些没有信息的特征,
L2范数是我们最常见最常用的范数了,我们用的最多的度量距离欧氏距离就是一种L2范数。
∥ x ∥ 2 = ∑ i = 1 n x i 2 \|\mathbf{x}\|_{2}=\sqrt{\sum_{i=1}^{n} x_{i}^{2}} ∥x∥2=i=1∑nxi2 (1.8)
表示向量元素的平方和再开平方。 像L1范数一样,L2也可以度量两个向量间的差异,如平方差和(Sum of Squared Difference)
SSD ( x 1 , x 2 ) = ∑ i = 1 n ( x 1 i − x 2 i ) 2 \operatorname{SSD}\left(x_{1}, x_{2}\right)=\sum_{i=1}^{n}\left(x_{1 i}-x_{2 i}\right)^{2} SSD(x1,x2)=i=1∑n(x1i−x2i)2
∥ A ∥ ∗ = ∑ i = 1 min { m , n } σ i = tr ( A T A ) \|A\|_{*}=\sum_{i=1}^{\min \{m, n\}} \sigma_{i}=\operatorname{tr}\left(\sqrt{A^{T} A}\right) ∥A∥∗=i=1∑min{m,n}σi=tr(ATA)
其中, σ i \sigma_{i} σi 为奇异值,r=rank(A)。
因为rank()是非凸的,在优化问题里面很难求解,那么就需要寻找它的凸近似来近似它了。rank(w)的凸近似就是核范数||A||*。(后面会解释凸性优化问题)
应用:矩阵填充,鲁棒PCA(稳健PCA),背景建模等
我们知道矩阵是一个由m行和n列组成的二维数据对象,因此一共有m x n个数值。当这个矩阵的绝大部分数值为零,且非零元素呈不规律分布时,则称该矩阵为稀疏矩阵。
稀疏矩阵在机器学习方面是很常见的。尽管它们自然而然地出现在一些数据收集过程中,更多时候,它们是在使用特定的数据转化技术时得到的。例如我们用一个算法来提取词性标签作为补充标签,来训练序列分类器;如果在文档全集中进行提取,其结果可以被向量化成一个非常巨大的稀疏矩阵,从而作为参数传递给分类器;又例如从TalkingData的移动数据中,把移动设备的品牌以及使用的app这两个变量变为虚拟变量时,我们会得到一个数万列的稀疏矩阵。
那些非零数值占大多数元素的矩阵即是稠密矩阵(Dense Matrix)。
从物理意义上讲,矩阵的秩度量的就是矩阵的行列之间的相关性。秩可以度量相关性,而矩阵的相关性实际上就表示了矩阵的结构信息。
如果矩阵之间各行的相关性很强,那么就表示这个矩阵实际可以投影到更低维的线性子空间,也就是用几个向量就可以完全表达了,它就是低秩的。
如果X是一个m行n列的数值矩阵,rank(X)是X的秩,假如rank (X)远小于m和n,则我们称X是低秩矩阵。低秩矩阵每行或每列都可以用其他的行或列线性表出,可见它包含大量的冗余信息。利用这种冗余信息,可以对缺失数据进行恢复,也可以对数据进行特征提取。
凸优化问题(OPT,convex optimization problem)指定义在凸集中的凸函数最优化的问题。 虽然条件苛刻,但应用广泛,具有重要价值,主要体现在:
凸优化本身具有很好的性质
一来,凸问题的局部最优解就是全局最优解。二来,凸优化理论中的Lagrange对偶,为凸优化算法的最优性与有效性提供了保证。近些年来关于凸问题的研究非常透彻,以至于只要把某一问题抽象为凸问题,就可以近似认为这个问题已经解决了。
凸优化具有很强扩展性
对于非凸问题,通过一定的手段,要么可以等价地化归为凸问题,要么可以用凸问题去近似、逼近得到边界。例如,几何规划、整数规划,虽然本身是非凸的,但是可以借助凸优化手段去解,这就极大地扩张了凸优化的应用范围。
对于一个凸优化问题,所有局部最优点都是全局最优的。
“By its very nature, PCA is sensitive to the presence of outliers and therefore also to the presence of gross errors in the datasets. This has led to attempts to define robust variants of PCA and the expression RPCA has been used for different approaches to this problem.”[8]
从上面这段话可以知道:PCA对于异常值非常敏感,当数据中存在较多的异常值(噪点数据)时对结果会产生较大影响。
这是由于PCA的假设是数据是高斯分布的,而引进RPCA则是将假设扩散到存在噪点的数据也可以使用。
传统的PCA使用相关系数矩阵或协方差矩阵进行分解,RPCA选择将原有矩阵分解为特殊的两个矩阵之和。
X = L + S X=L+S X=L+S
L为低秩矩阵,S为稀疏矩阵。
更具体得来说,RPCA通过求解这样一个凸性的矩阵分解最优化问题从而达到更精准的降维。
这个凸性问题的目标函数是
min L , S ∥ L ∥ ∗ + λ ∥ S ∥ 1 \min _{L, S}\|\mathbf{L}\|_{*}+\lambda\|\mathbf{S}\|_{1} L,Smin∥L∥∗+λ∥S∥1 (1.10)
这个式子意味着,我们需要找到原矩阵中的“一般模式”部分(低秩矩阵的秩)和干扰部分。并且为了实现降维,我们应该要实现用尽可能少的变量来表达出“一般模式”部分,也就是用越少的秩(不相关部分)表示原有矩阵。
而参数λ和1范数是对我们干扰项的参数调整。一般情况下,L越少的秩意味着越大的误差,即S中的非0元素之和越大。目标函数的则希望在这两者之间取得一个平衡实现最优化。
[1] https://blog.csdn.net/a493823882/article/details/80569888
[2] https://blog.csdn.net/zhaohongfei_358/article/details/122818616
[3] https://www.toutiao.com/a6647043426384609805/
[4] https://blog.csdn.net/manduner/article/details/80564414
[5] https://blog.csdn.net/a493823882/article/details/80569888
[6] https://blog.csdn.net/zouxy09/article/details/24972869
[7] https://blog.csdn.net/qq_38151401/article/details/97612498
[8] Jolliffe IT, Cadima J. Principal component analysis: a review and recent developments. Philos Trans A Math Phys Eng Sci. 2016 Apr 13;374(2065):20150202. doi: 10.1098/rsta.2015.0202. PMID: 26953178; PMCID: PMC4792409.