关闭

Robust principal component analysis?(RPCA简单理解)

391人阅读 评论(0) 收藏 举报
分类:

参考文献:Candès, E.J., Li, X., Ma, Y., and Wright, J.: ‘Robust principal component analysis?’, J. ACM, 2011, 58, (3), pp. 11

作者主页有很多关于low-rank的代码:http://perception.csl.illinois.edu/matrix-rank/sample_code.html

主要算法公式如下:

clip_image002

clip_image004

clip_image006

clip_image008

关于这个低秩分解的代码,其实相当简单:

例如:公式(5-2)对应的代码为:

S = wthresh(M-L+Y/miu,'s',lambda/miu);

公式(5-3)对应的代码:

% ---- update L --- % 
[U,D,V] = svd(M-S+Y/miu,'econ'); 
D1 = wthresh(D,'s',1/miu);    
L = U*D1*V';

我自己根据公式编写的代码如下:

复制代码
% 求解 argmin rank(L) + ||S||_1  s.t. M = L+S
% Reference: Wright, J., Ganesh, A., Rao, S., Peng, Y. and Ma, Y. (2009) 
% Robust principal component analysis: Exact recovery of corrupted low-rank matrices via convex optimization. 
% In: Proceedings of Advances in neural information processing systems. 2080-2088.
L = zeros(size(M));
S = L;
Y = L;
norm_two = lansvd(M, 1, 'L'); % computes the K largest singular values.
miu = 1.25/norm_two;
% miu = 0.1;
max_miu = 1e7;
lambda = 0.005;
rho = 1.5;
max_iter = 200;
for iter = 1:max_iter
    % --- update S ----%
    S = wthresh(M-L+Y/miu,'s',lambda/miu);
    % ---- update L --- %
    [U,D,V] = svd(M-S+Y/miu,'econ');
    D1 = wthresh(D,'s',1/miu);    
    L = U*D1*V';
    Y = Y+miu*(M-L-S);
    miu = min(max_miu,rho*miu);
    obj(iter) = norm(M-L-S,'fro')^2;
    if iter > 2 && abs(obj(iter) - obj(iter-1)) < 1e-7
        break;
    end
end
figure;
imshow(reshape(L(:,80),50,40),[]);  title('低秩部分');

figure;
imshow(reshape(S(:,80),50,40),[]); title('稀疏部分');
figure;
imshow(reshape(M(:,80),50,40),[]); title('原始图像');
复制代码

对于AR数据库,我们对遮挡脸进行了试验,结果如下:

image

而同时,我们调用作者主页编写的权威代码得到的结果为:(这里原始文章的代码下载地址为:链接: http://pan.baidu.com/s/1i5m4QrV 密码: fduh)

image

 

这里我们小小总结下调这篇文章算法参数的心得:

1、lambda值越大时,对于lambda约束的矩阵,其值就越小,几乎为0,矩阵越稀疏,甚至与稀疏到0~~;相反的,另外的那个矩阵则占据主导位置。

     所以,在作者原始代码中,lambda=1/sqrt(m), m为图像特征维数。经验:lambda常可取值[0.001,0.01];

2、关于miu这个值,作者用的是miu=1.25/S_L, S_L表示原始矩阵M的最大特征值。miu一般可取0.15等

3、总感觉尽管低秩矩阵可以去掉遮挡,但是是以丢失细节特征为代价。

4、一般而言,遮挡矩阵M中,若全为遮挡脸,那么恢复效果一般比较差,而当存在一些未遮挡脸时,恢复效果会比较好!!


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Robust PCA 学习笔记

很久没有写学习笔记了,年初先后忙考试,忙课程,改作业,回家刚安定下来,读了大神上学期给的paper,这几天折腾数学的感觉很好,就在这里和大家一起分享一下,希望能够有所收获。响应了Jeffrey的建议,...
  • abcjennifer
  • abcjennifer
  • 2013-02-05 23:26
  • 50129

机器学习:Principal components analysis (主分量分析)

Principal components analysis 这一讲,我们简单介绍Principal Components Analysis(PCA),这个方法可以用来确定特征空间的子空间,用一种更加...
  • shinian1987
  • shinian1987
  • 2016-05-11 08:43
  • 7411

解释一下核主成分分析(Kernel Principal Component Analysis, KPCA)的公式推导过程~

KPCA,中文名称”核主成分分析“,是对PCA算法的非线性扩展,言外之意,PCA是线性的,其对于非线性数据往往显得无能为力,例如,不同人之间的人脸图像,肯定存在非线性关系,自己做的基于ORL数据集的实...
  • wsj998689aa
  • wsj998689aa
  • 2014-10-23 15:44
  • 21861

笔记:Inductive Robust Principal Component Analysis

本文针对经典的 Inductive Robust Principal Component Analysis 的理论方法进行展开详解。本人学术水平有限,文中如有错误之处,敬请指正。
  • xueshengke
  • xueshengke
  • 2016-11-17 20:43
  • 512

笔记:Online robust principal component analysis via truncated nuclear norm regularization

本文是这篇 Neurocomputing 期刊论文的笔记,主要是对文中的理论方法进行展开详解。本人学术水平有限,文中如有错误之处,敬请指正。
  • xueshengke
  • xueshengke
  • 2017-05-20 21:35
  • 496

Robust Principal Component Analysis

  • 2012-08-14 13:59
  • 1.05MB
  • 下载

彻底理解PCA(Principal Component Analysis)主成分分析

怎样理解矩阵特征值 K-L变换 PCA算法
  • u014485485
  • u014485485
  • 2017-10-31 22:19
  • 150

PCA算法.pdf(主成分分析 ( Principal Component Analysis , PCA ))

  • 2011-02-21 14:31
  • 8.60MB
  • 下载

PCA主成分分析(Principal Component Analysis)

  • 2014-12-25 10:39
  • 1.67MB
  • 下载

主成分分析(principal component analysis) PCA

  • 2015-04-09 19:19
  • 3.16MB
  • 下载
    个人资料
    • 访问:88139次
    • 积分:1301
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:73篇
    • 译文:0篇
    • 评论:12条
    文章分类
    最新评论