Xu H, Caramanis C, Sanghavi S, et al. Robust PCA via Outlier Pursuit[C]. neural information processing systems, 2010: 2496-2504.

这篇文章同样是关于矩阵恢复的。假设\(M = L_0 + C_0 \in \mathbb{R}^{p \times n}\),即\(M\)实际上是由一个低秩矩阵\(L_0\)和稀疏矩阵\(C_0\)构成。需要注意的是,这里的稀疏不是指某些元素为0,而是某列为零。可以简单地认为,\(L_0\)中是一些有用的正确的样本,而\(C_0\)中的是错误的样本(非零的部分)。所以,我们能够从中将\(L_0\)的列空间恢复出来,并识别出那些样本属于\(C_0\),即是错误的呢?

上面的作者的说法,我再用自己的话讲一下。\(M\)中的每一列都是一个\(p\)维样本,有些时候我们会遇到这种情况,有些样本是错误的。这个错误是指很严重的错误,而不是被一些噪声污染了,就像是这些数据是人的身高体重,却混入了长颈鹿的身高体重。所以呢,我们有理由相信,俩者分布在俩个子空间里,我们要做的就是判断哪个子空间里是我们想要的,哪个是错误的样本。显然正确的样本不能太少,而且正确的样本必须靠的紧凑一些。所以,这么想来,其实要求还不少。

显然直接这么做是不可靠的,举一个极端的例子:\(M\)中仅有\(M_{11}\)非零,那么显然是无法判断第一列是否是正确的样本的。所以,我们需要一个不连贯条件:

此外,作者也考虑了带噪声的问题\(M = L_0 + C_0 + N\),其中\(N\)是噪声。

针对不带噪声的问题,作者求解的下列问题:

其中\(\|C\|_{1,2}= \sum_{i=1}^n \|C_i\|_2\)为列的\(\ell_2\)范数的和,\(\|L\|_*\)是\(L\)的核范数。

针对带噪声问题,作者求解的是下列问题:

主要结果

定理1

定理2


理论证明

构造Oracle Problem


其中\(L_0 = U_0\Sigma_0V_0^T\), \(\mathcal{I}_0\)是\(C\)中不为0的非稀疏列的指标集,下面的类似的符号也类似的定义。

这个神谕问题,假设\(U_0, V_0, \mathcal{I}_0\)是已知的。

作者先证明,满足\(M=L'+C';\mathcal{P}_{U_0}(L')=L';\mathcal{P}_{\mathcal{I_0}}(C')=C'\)的解有下列性质:
\[
U'U^T = U_0U_0^T, \quad \mathcal{I'}\subseteq \mathcal{I}_0
\]
这意味着,\(\hat{L}\)的列空间和\(L_0\)的列空间一致,\(\hat{C}\)中的列(非0)也确实是错误的列。

作者再证明,对于\((L', C')\)(不要求其为Oracle Problem的最优解,可行解即可),只要能找到一个\(Q\)满足对偶条件:


那么,\((L',C')\)也是原始问题(2)的最优解,而且如果\((b), (d)\)不等式是严格成立的,且\(\mathbb{S}_{\mathcal{I_0}}\cap \mathbb{S}_{V'} = \{0\}\),那么\((L', C')\)将是(2)的唯一最优解。
结合上面的证明,我们可以知道,只要我们能够证明这样的\(Q\)是存在的,那么\((L', C')\)就恢复出了同一个列子空间,并识别出了部分错误的样本。

所以我们现在需要做的就是去构造这样的一\(Q\),假设Oracle Problem的最优解为\((\hat{L}, \hat{C})\),作者在这个解的基础上,构造一个\(Q\)。

有定理四:

其中:

\(\bar{V} = \hat{V}\hat{U}^TU_0\)。

最后再证明定理4中的条件是能够达成的即可。

算法


其中\(\mathfrak{L}_{\epsilon}(S)\):如果\(S_{ii} \le \epsilon\),截断为0,否则\(S_{ii} := S_{ii} - \epsilon \cdot sgn(S_{ii})\)。
\(\mathfrak{C}_{\epsilon}(C)\): 如果\(\|C_i\|_2 \le \epsilon\),则将整列截断为0,否则\(C_i := C_i - \epsilon C_i / \|C\|_2\)

Robust PCA via Outlier Pursuit的更多相关文章

  1. 最优化之Robust PCA

    最近加了一个QQ群,接触了点新的东西,包括稀疏近似,低秩近似和压缩感知等.Robust PCA中既包含了低秩,又包含了稀疏,于是以其为切入点,做了如下笔记.笔记中有的公式有比较详细的推导,希望对读者有 ...

  2. 透过表象看本质!?之二——除了最小p乘,还有PCA

    如图1所示,最小p乘法求得是,而真实值到拟合曲线的距离为.那么,对应的是什么样的数据分析呢? 图1 最小p乘法的使用的误差是.真实值到拟合曲线的距离为 假如存在拟合曲线,设直线方程为.真实值到该曲线的 ...

  3. Rubost PCA 优化

    Rubost PCA 优化 2017-09-03 13:08:08 YongqiangGao 阅读数 2284更多 分类专栏: 背景建模   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA ...

  4. 矩阵分解(rank decomposition)文章代码汇总

    矩阵分解(rank decomposition)文章代码汇总 矩阵分解(rank decomposition) 本文收集了现有矩阵分解的几乎所有算法和应用,原文链接:https://sites.goo ...

  5. Matrix Factorization, Algorithms, Applications, and Avaliable packages

    矩阵分解 来源:http://www.cvchina.info/2011/09/05/matrix-factorization-jungle/ 美帝的有心人士收集了市面上的矩阵分解的差点儿全部算法和应 ...

  6. ECCV 2014 Results (16 Jun, 2014) 结果已出

    Accepted Papers     Title Primary Subject Area ID 3D computer vision 93 UPnP: An optimal O(n) soluti ...

  7. Computer Vision_18_Image Stitching: Image Alignment and Stitching A Tutorial——2006(book)

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  8. paper 127:机器学习中的范数规则化之(二)核范数与规则项参数选择

    机器学习中的范数规则化之(二)核范数与规则项参数选择 zouxy09@qq.com http://blog.csdn.net/zouxy09 上一篇博文,我们聊到了L0,L1和L2范数,这篇我们絮叨絮 ...

  9. L0、L1与L2范数、核范数(转)

    L0.L1与L2范数.核范数 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的L0.L1.L2和核范数规则化.最后聊下规则化项参数的选择问题.这里因为篇幅比较庞大 ...

随机推荐

  1. Floor报错原理分析

    最近开始打ctf了,发现好多sql注入都忘了,最近要好好复习一下. 基础知识: floor(): 去除小数部分 rand(): 产生随机数 rand(x): 每个x对应一个固定的值,但是如果连续执行多 ...

  2. 如何为ASP.NET Core设置客户端IP白名单验证

    原文链接:Client IP safelist for ASP.NET Core 作者:Damien Bowden and Tom Dykstra 译者:Lamond Lu 本篇博文中展示了如何在AS ...

  3. Node.js 命令行工具的编写

    日常开发中,编写 Node.js 命令行工具来完成一些小任务是很常见的操作.其编写也不难,和日常编写 Node.js 代码并无二致. package.json 中的 bin 字段 一个 npm 模块, ...

  4. OA发展史:由点到生态

    在当今无边界组织的商业背景下,企业与员工关系已经转化为联盟关系,以往通过工作场所.劳动合同等约束的形式已经逐步弱化,管理行为空前复杂,OA正是将一个个散点整合起来的看不见的手.那么,推动OA发展的核心 ...

  5. .NET西安社区 [拥抱开源,又见 .NET] 第二次活动简报

    「拥抱开源, 又见 .NET」 随着 .NET Core的发布和开源,.NET又重新回到人们的视野. .NET Core的下个3.0即将release,加入非常多的新功能,越来越拥抱变化,DevOps ...

  6. 【春华秋实】.NET Core之只是多看了你一眼

    感官初体验 技术学习是一件系统性的事情,如果拒绝学习,那么自己就会落后以至于被替代..NET也是一样,当开源.跨平台成为主流的时候,如果再故步自封,等待.NET的就是死路一条,幸好.NET Core问 ...

  7. 【转载】java static 关键字的四种用法

    原文链接点这里,感谢博主分享 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构 ...

  8. Cayley图数据库的简介及使用

    图数据库   在如今数据库群雄逐鹿的时代中,非关系型数据库(NoSQL)已经占据了半壁江山,而图数据库(Graph Database)更是攻城略地,成为其中的佼佼者.   所谓图数据库,它应用图理论( ...

  9. void类型和void* 的用法

    C语言中的void  和 void * 总结 1.void的作用 c语言中,void为“不确定类型”,不可以用void来声明变量.如:void a = 10:如果出现这样语句编译器会报错:variab ...

  10. jQuery获取或设置元素的宽度和高度

    jQuery获取或设置元素的宽度和高度: 可使用以下3种方法: 1,jQuery width() 和 height() 方法: 2,innerWidth() 和 innerHeight() 方法: 3 ...