上传者: lzy969737017 
                                    |
                                    上传时间: 2022-03-23 20:35:03
                                    |
                                    文件大小: 29KB
                                    |
                                    文件类型: -
                                
                            
                                
                            
                                MahNMF  Manhattan Non-negative Matrix Factorization  code
% Manhattan Non-negative Matrix Factorization.
% ManhNMF: Matlab Code for Efficient Robust Manhattan NMF Solver
% Reference
%  [1] N. Guan, D. Tao, Z. Luo, and J. Shawe-taylor, "MahNMF: Manhattan
%  Non-negative Matrix Factorization," arXiv:1207.3438v1, 2012.
%  [2] N. Guan, D. Tao, Z. Luo, and J. Shawe-taylor, "MahNMF: Manhattan
%  Non-negative Matrix Factorization," Submitted to Journal of Machine Learning Research, 2013.
% The model is X \approx W^TH, where X, W, and H are defined as follows:
% X (m x n): data matrix including n samples in m-dimensional space;
% W (r x m): basis matrix including r bases in m-dimensional space;
% H (r x n): coefficients matrix includeing n encodings in r-dimensional space.
% Written by Naiyang Guan (ny.guan@gmail.com)
% Copyright 2012-2014 by Naiyang Guan and Dacheng Tao
% Modified at Jan. 28 2013
% 
%        X : Input data matrix (m x n)
%        r : Target low-rank
%
%        (Below are optional arguments: can be set by providing name-value pairs)
%        MAX_ITER : Maximum number of iterations. Default is 1,000.
%        MIN_ITER : Minimum number of iterations. Default is 10.
%        MAX_TIME : Maximum amount of time in seconds. Default is 100,000.
%        W_INIT : (m x r) initial value for W.
%        H_INIT : (r x n) initial value for H.
%        LAM_INIT : initial value of smoothness parameter. Default is 1.
%        MDL_TYPE : Model type (Default is 'PLAIN'),
%               'PLAIN' - MahNMF (min{||X-W^T*H||_1,s.t.,W >= 0 and H >= 0}.),
%               'BXC' - Box Constrained MahNMF (min{||X-W^T*H||_1,s.t.,1 >= W >= 0 and 1 >= H >= 0}.),
%               'MNR' - Manifold Regularized MahNMF
%               (min{||X-W^T*H||_1+.5*beta*TR(H*Lp*H^T),s.t.,W >= 0 and H >= 0}.),
%               'GSP' - Group Sparse MahNMF
%               (min{||X-W^T*H||_1+.5*beta*\sum_{g\in G}||W^[g]||_{1,p},s.t.,W >= 0 and H >= 0}.),
%               'SYM' - Symmetric MahNMF (min{||X-H*H^T||_1,s.t., H >= 0}.).
%        ALG_TYPE : Algorithm type (Default is 'AGD'),
%               'AGD' - Accelerated Gradient Descent,
%               'RRI' - Rank-one Residue Iteration.
%        BETA : Tradeoff parameter over regularization term. Default is 1e-3.
%        SIM_MTX : Similarity matrix constructed by 'constructW'.
%        GPP_MTX : Group pattern for boundary of all groups.
%        TOL_INNR : Stopping tolerance of inner iterations. Default is 1e-2.
%        TOL_OUTR : Stopping tolerance of outer iterations. Default is 1e-3.
%               If you want to obtain a more accurate solution, decrease TOL_INNR or TOL_OUTR and increase MAX_ITER at the same time.
%        VB_OUTR : 0 (default) - No debugging information is collected.
%                  1 (debugging purpose) - History of computation is returned by 'HIS' variable.
%                  2 (debugging purpose) - History of computation is additionally printed on screen.
%        VB_INNR : 0 (default) - No debugging information is collected.
%                  1 (debugging purpose) - History of computation is returned by 'HIS' variable.
%                  2 (debugging purpose) - History of computation is additionally printed on screen.
% 
%        W : Obtained basis matrix (r x m).
%        H : Obtained coefficients matrix (r x n).
%        iter : Number of iterations.
%        elapse : CPU time in seconds.
%        HIS : (debugging purpose) History of computation,
%               niter - total iteration number spent for Nesterov's optimal
%               gradient method,
%               cpus - CPU seconds at iteration rounds,
%               objf - objective function values at iteration rounds,
%               dlta - stopping criteria of block coordinate descent.
%
% 
%        >>X=rand(1000,500);
%        >>ManhNMF(X,10);
%        >>ManhNMF(X,20,'verbose',1);
%        >>ManhNMF(X,30,'verbose',2,'w_init',rand(r,m));
%        >>ManhNMF(X,5,'verbose',2,'tol_outr',1e-5);
% Note: other files 'GetStopCriterion.m', 'ApproxFunC.m', and 'wmedianf.mexw32' should be included under the same
% directory as this code.