理论来源:
Robust principal component analysis? | Journal of the ACM
https://dl.acm.org/doi/abs/10.1145/1970392.1970395主成分分析-维基百科,自由的百科全书 --- Robust principal component analysis - Wikipedia
https://en.wikipedia.org/wiki/Robust_principal_component_analysis[CC字幕]流体动力学机器学习:11.鲁棒主成分分析 (RPCA)_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1cF41167rs/?spm_id_from=333.880.my_history.page.click&vd_source=66877ae3ecb45d1194ecb0c16c6aa493
代码展示:
1、收缩算子
function out = shrink(X,tau)
out = sign(X).*max(abs(X)-tau,0);
end
2、奇异值阈值算子
function out = SVT(X,tau)
[U,S,V] = svd(X,'econ');
out = U*shrink(S,tau)*V';
end
3、RPCA
function [L,S,count] = RPCA(X)
addpath E:\RPCA\code\function;
[n1,n2] = size(X);
mu = n1*n2/(4*sum(abs(X(:))));
lambda = 1/sqrt(max(n1,n2));
thresh = 1e-7*norm(X,'fro');
L = zeros(size(X));
S = zeros(size(X));
Y = zeros(size(X));
count = 0;
while((norm(X-L-S,'fro')>thresh)&&(count<1000))
L = SVT(X-S+(1/mu)*Y,1/mu);
S = shrink(X-L+(1/mu)*Y,lambda/mu);
Y = Y + mu*(X-L-S);
count = count + 1;
end
end
变量L为低秩矩阵,S为稀疏矩阵,count为迭代次数
matlab代码实现&spm=1001.2101.3001.5002&articleId=143196183&d=1&t=3&u=85ee986bffad455a909ef62f066c93f3)
1451

被折叠的 条评论
为什么被折叠?



