当前位置: 首页 > news >正文

Robust PCA via Outlier Pursuit

目录

  • 主要结果
    • 定理1
    • 定理2
  • 理论证明
    • 构造Oracle Problem
  • 算法

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\)

转载于:https://www.cnblogs.com/MTandHJ/p/10755183.html

相关文章:

  • JavaScript 设计模式之策略模式
  • SpringSocial相关的知识点
  • 移动端长按事件
  • 浅克隆和深克隆
  • (一)appium-desktop定位元素原理
  • 解密虚拟 DOM——snabbdom 核心源码解读
  • Python基础之列表
  • MyBatis配置多数据源
  • Asp.net core Identity + identity server + angular 学习笔记 (第三篇)
  • 【题解】四色定理
  • Android 实现动态背景“五彩蛛网”特效,让你大开眼界!
  • python高并发?
  • 雷林鹏分享:二级目录配置CI应用
  • Sym System Recovery 2013 ( 備份 操作 )
  • iOS-在项目中引入RSA算法
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • CSS 专业技巧
  • in typeof instanceof ===这些运算符有什么作用
  • Java 网络编程(2):UDP 的使用
  • javascript 哈希表
  • java中的hashCode
  • Sass 快速入门教程
  • spring security oauth2 password授权模式
  • SpringBoot几种定时任务的实现方式
  • TypeScript实现数据结构(一)栈,队列,链表
  • vue 个人积累(使用工具,组件)
  • 阿里云购买磁盘后挂载
  • 给新手的新浪微博 SDK 集成教程【一】
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端面试之闭包
  • 算法-图和图算法
  • 我的zsh配置, 2019最新方案
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • ​马来语翻译中文去哪比较好?
  • (bean配置类的注解开发)学习Spring的第十三天
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (定时器/计数器)中断系统(详解与使用)
  • (七)Knockout 创建自定义绑定
  • (四)Linux Shell编程——输入输出重定向
  • (五)网络优化与超参数选择--九五小庞
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)甲方乙方——赵民谈找工作
  • ../depcomp: line 571: exec: g++: not found
  • .NET 中 GetProcess 相关方法的性能
  • .net 中viewstate的原理和使用
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET面试题(二)
  • /etc/fstab 只读无法修改的解决办法
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [100天算法】-不同路径 III(day 73)
  • [AX]AX2012 R2 出差申请和支出报告