交替方向乘子法ADMM算法的matlab代码


交替方向乘子法是用于求解低秩和稀疏最优化问题的有效算法,这个包提供了交替方向乘子法的matlab代码。This package solves several sparse and low-rank optimization problems by M-ADMM proposed in our work
资源截图
代码片段和文件信息
%
% References:
%
% C. Lu. A Library of ADMM for Sparse and Low-rank Optimization. National University of Singapore June 2016.
% https://github.com/canyilu/LibADMM.
% C. Lu J. Feng S. Yan Z. Lin. A Unified Alternating Direction Method of Multipliers by Majorization 
% Minimization. IEEE Transactions on Pattern Analysis and Machine Intelligence vol. 40 pp. 527-541 2018
%


addpath(genpath(cd))
clear

%% Examples for testing the low-rank matrix based models
% For detailed description of the sparse models please refer to the Manual.


%% generate toy data
d = 10;
na = 200;
nb = 100;

A = randn(dna);
X = randn(nanb);
B = A*X;
b = B(:1);

opts.tol = 1e-6; 
opts.max_iter = 1000;
opts.rho = 1.2;
opts.mu = 1e-3;
opts.max_mu = 1e10;
opts.DEBUG = 0;


%% RPCA
n1 = 100;
n2 = 200;
r = 10;
L = rand(n1r)*rand(rn2); % low-rank part

p = 0.1;
m = p*n1*n2;
temp = rand(n1*n21);
[~I] = sort(temp);
I = I(1:m);
Omega = zeros(n1n2);
Omega(I) = 1;
E = sign(rand(n1n2)-0.5);
S = Omega.*E; % sparse part S = P_Omega(E)

Xn = L+S;

lambda = 1/sqrt(max(n1n2));
opts.loss = ‘l1‘; 
opts.DEBUG = 1;
tic
[LhatShatobjerriter] = rpca(Xnlambdaopts);
toc
rel_err_L = norm(L-Lhat‘fro‘)/norm(L‘fro‘)
rel_err_S = norm(S-Shat‘fro‘)/norm(S‘fro‘)

err
iter


%% low rank matrix completion (lrmc) and regularized lrmc

n1 = 100;
n2 = 200;
r = 5;
X = rand(n1r)*rand(rn2);

p = 0.6;
omega = find(rand(n1n2)M = zeros(n1n2);
M(omega) = X(omega);
[Xhatobjerriter] = lrmc(M omega opts);
rel_err_X = norm(Xhat-X‘fro‘)/norm(X‘fro‘)
 
E = randn(n1n2)/100;
M = X+E;
lambda = 0.1;
[Xhatobjerriter] = lrmcR(M omega lambda opts);


%% low rank representation (lrr)
lambda = 0.001;
opts.loss = ‘l21‘; 
tic
[XEobjerriter] = lrr(AAlambdaopts);
toc
obj
err
iter

%% latent LRR (latlrr)
lambda = 0.1;
opts.loss = ‘l1‘; 
tic
[ZLobjerriter] = latlrr(Alambdaopts);
toc
obj
err
iter

%% low rank and sparse representation (lrsr)
lambda1 = 0.1;
lambda2 = 4;
opts.loss = ‘l21‘; 
tic
[XEobjerriter] = lrsr(ABlambda1lambda2opts);
toc
obj
err
iter

%% improved graph clustering (igc)
n = 100;
r = 5;
X = rand(nr)*rand(rn);
C = rand(size(X));
lambda = 1/sqrt(n);
opts.loss = ‘l1‘; 
opts.DEBUG = 1;
tic
[LSobjerriter] = igc(XClambdaopts);
toc
err
iter

%% multi-task low-rank affinity pursuit (mlap)
n1 = 100;
n2 = 200;
K = 10;
X = rand(n1n2K);
lambda = 0.1;
alpha = 0.2;
opts.loss = ‘l1‘; 
tic
[ZEobjerriter] = mlap(Xlambdaalphaopts);
toc
err
iter

%% robust multi-view spectral clustering (rmsc)
n = 100;
r = 5;
m = 10;
X = rand(nnm);
lambda = 1/sqrt(n);
opts.loss = ‘l1‘; 
opts.DEBUG = 1;
tic
[LSobjerriter] = rmsc(Xlambdaopts);
toc
err
iter

%% sparse spectral clustering (sparsesc)
lambda = 0.001;
n = 100;
X = rand(nn);
W = abs(X‘*X);
I = eye(n);
D = diag(sum(W1));
L = I - sqrt(inv(D

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-03-31 20:00  ADMM
     目录           0  2019-03-31 20:00  ADMM.git
     文件          14  2019-03-31 20:00  ADMM.gitignore
     文件         301  2019-03-31 20:00  ADMM.gitconfig
     文件          73  2019-03-31 20:00  ADMM.gitdescription
     文件          23  2019-03-31 20:00  ADMM.gitHEAD
     目录           0  2019-03-31 20:00  ADMM.githooks
     文件         478  2019-03-31 20:00  ADMM.githooksapplypatch-msg.sample
     文件         896  2019-03-31 20:00  ADMM.githookscommit-msg.sample
     文件        3327  2019-03-31 20:00  ADMM.githooksfsmonitor-watchman.sample
     文件         189  2019-03-31 20:00  ADMM.githookspost-update.sample
     文件         424  2019-03-31 20:00  ADMM.githookspre-applypatch.sample
     文件        1638  2019-03-31 20:00  ADMM.githookspre-commit.sample
     文件        1348  2019-03-31 20:00  ADMM.githookspre-push.sample
     文件        4898  2019-03-31 20:00  ADMM.githookspre-rebase.sample
     文件         544  2019-03-31 20:00  ADMM.githookspre-receive.sample
     文件        1492  2019-03-31 20:00  ADMM.githooksprepare-commit-msg.sample
     文件        3610  2019-03-31 20:00  ADMM.githooksupdate.sample
     文件        5775  2019-03-31 20:00  ADMM.gitindex
     目录           0  2019-03-31 20:00  ADMM.gitinfo
     文件         240  2019-03-31 20:00  ADMM.gitinfoexclude
     目录           0  2019-03-31 20:00  ADMM.gitlogs
     文件         183  2019-03-31 20:00  ADMM.gitlogsHEAD
     目录           0  2019-03-31 20:00  ADMM.gitlogs
efs
     目录           0  2019-03-31 20:00  ADMM.gitlogs
efsheads
     文件         183  2019-03-31 20:00  ADMM.gitlogs
efsheadsmaster
     目录           0  2019-03-31 20:00  ADMM.gitlogs
efs
emotes
     目录           0  2019-03-31 20:00  ADMM.gitlogs
efs
emotesorigin
     文件         183  2019-03-31 20:00  ADMM.gitlogs
efs
emotesoriginHEAD
     目录           0  2019-03-31 20:00  ADMM.gitobjects
     目录           0  2019-03-31 20:00  ADMM.gitobjectsinfo
............此处省略75个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)