nmf源代码 matlab,NMFLibrary: MATLAB library for non-negative matrix factorization (NMF): Version 1.8.0...

NMFLibrary

Matlab library for non-negative matrix factorization (NMF)

Last page update: May 21, 2019

Latest library version: 1.8.0 (see Release notes for more info)

Introduction

The NMFLibrary is a pure-Matlab library of a collection of algorithms of non-negative matrix factorization (NMF).

Base NMF

MU (multiplicative updates)

MU

A.Cichocki, S.Amari, R.Zdunek, R.Kompass, G.Hori, and Z.He, "Extended SMART algorithms for non-negative matrix factorization," Artificial Intelligence and Soft Computing, 2006. (for alpha divergence and beta divergence)

PGD (projected gradient descent)

PGD

Direct PGD

C.-J. Lin, "Projected gradient methods for nonnegative matrix factorization," Neural Computation, vol.19, no.10, pp.2756-2779, 2007.

ALS (alternative least squares)

ALS

Hierarchical ALS (HALS)

A. Cichocki and P. Anh-Huy, "Fast local algorithms for large scale nonnegative matrix and tensor factorizations," IEICE Trans. on Fundamentals of Electronics, Communications and Computer Sciences, vol.92, no.3, pp. 708-721, 2009.

Acceralated Hierarchical ALS

ANLS (alternative non-negative least squares)

ASGROUP (ANLS with Active Set Method and Column Grouping)

ASGIVENS (ANLS with Active Set Method and Givens Updating)

BPP (ANLS with Block Principal Pivoting Method)

Variant

GNMF (Graph Regularized NMF)

D. Cai, X. He, X. Wu, and J. Han, "Non-negative Matrix Factorization on Manifold," Proc. 2008 Int. Conf. on Data Mining (ICDM), 2008.

D. Cai, X. He, J. Han and T. Huang, "Graph Regularized Non-negative Matrix Factorization for Data Representation," IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.33, No.8, pp.1548-1560, 2011.

Semi-NMF

C.H.Q. Ding, T. Li, M. I. Jordan, "Convex and Semi-Nonnegative Matrix Factorizations," IEEE Transactions on Pattern Analysis and Machine Intelligence, vol.32, no.1, 2010.

NeNMF (NMF with Sinkhorn Distance)

N. Guan, D. Tao, Z. Luo, and B. Yuan, "NeNMF: An Optimal Gradient Method for Non-negative Matrix Factorization", IEEE Transactions on Signal Processing, Vol. 60, No. 6, pp. 2882-2898, Jun. 2012.

SDNMF (NMF with Sinkhorn Distance)

W. Qian, B. Hong, D. Cai, X. He, and X. Li, "Non-negative matrix factorization with sinkhorn distance", IJCAI, pp.1960-1966, 2016.

Robust NMF

N. Guan, D. Tao, Z. Luo, and B. Yuan, "Online nonnegative matrix factorization with robust stochastic approximation," IEEE Trans. Newral Netw. Learn. Syst., 2012.

Sparse

sparseMU (Sparse multiplicative upates (MU))

J. Eggert and E. Korner, "Sparse coding and NMF", IEEE International Joint Conference on Neural Networks, 2004.

M. Schmidt, J. Larsen, and F. Hsiao, "Wind noise reduction using non-negative sparse coding", IEEE Workshop on Machine Learning for Signal Processing (MLSP), 2007.

sparseNMF (Sparse NMF)

NMFsc (NMF with sparseness constraints)

Patrik O. Hoyer, "Non-negative matrix factorization with sparseness constraints," Journal of Machine Learning Research (JMLR), vol.5, pp.1457-1469, 2004.

nsNMF (Nonsmooth NMF)

A. Pascual-Montano, J. M. Carazo, K. Kochi, D. Lehmann, and R. D. Pascual-Marqui, "Nonsmooth Nonnegative Matrix Factorization (nsNMF)," IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI), vol.28, no.3, pp.403-415, 2006.

fnsNMF (Fast nonsmooth NMF)

Z. Yang, Y. Zhang, W. Yan, Y. Xiang, and S. Xie, "A fast non-smooth nonnegative matrix factorization for learning sparse representation," IEEE Access, vol.4, pp.5161-5168, 2016.

NMF-HALS-SO (Hierarchical ALS with soft orthogonal constraint)

M. Shiga, K. Tatsumi, S. Muto, K. Tsuda, Y. Yamamoto, T. Mori, and T. Tanji, "Sparse modeling of EELS and EDX spectral imaging data by nonnegative matrix factorization", Ultramicroscopy, Vol.170, p.43-59, 2016.

Orthgotonal

DTPP (Orthgotonal multiplicative upates (MU))

C. Ding, T. Li, W. Peng, and H. Park, "Orthogonal nonnegative matrix t-factorizations for clustering", 12th ACM SIGKDD international conference on Knowledge discovery and data mining (KDD), 2006.

orthMU (Orthgotonal multiplicative upates (MU))

S. Choi, "Algorithms for orthogonal nonnegative matrix factorization", IEEE International Joint Conference on Neural Networks, 2008.

OrthNMF

F. Pompilia, N. Gillis, P.-A. Absil, and F. Glineur, "Two algorithms for orthogonal nonnegative matrix factorization with application to clustering," Neurocomputing, vol.141, no.2, pp.15-25, 2014.

Symmetric

SymmANLS (Symmetric ANLS)

D. Kuang, C. Ding, H. Park, "Symmetric Nonnegative Matrix Factorization for Graph Clustering," The 12th SIAM International Conference on Data Mining (SDM'12), pp.106-117, 2012.

D. Kuang, S. Yun, H. Park, "SymNMF Nonnegative low-rank approximation of a similarity matrix for graph clustering," Journal of Global Optimization, vol.62, no.3, pp.545-574, 2015.

SymmHALS (Symmetric HALS)

Z. Zhu, X. Li, K. Liu, Q. Li, "Dropping Symmetry for Fast Symmetric Nonnegative Matrix Factorization," NIPS, 2018.

SymmNewton (Symmetric Newton)

Online/stochstic NMF

INMF (Incremental NMF) and ONMF (Online NMF)

SPG (Stochastic projected gradient descent)

RONMF (Robust online NMF)

N. Guan, D. Tao, Z. Luo, and B. Yuan, "Online nonnegative matrix factorization with robust stochastic approximation," IEEE Trans. Newral Netw. Learn. Syst., 2012.

SAGA-MU-NMF (SAGA multiplicative updates)

R. Serizel, S. Essid and G.Richard, "Mini-batch stochastic approaches for accelerated multiplicative updates in nonnegative matrix factorisation with beta-divergence,", IEEE 26th International Workshop on Machine Learning for Signal Processing (MLSP), 2016.

SMU (Stochastic multiplicative updates) and SVRMU (Stochastic variance reduced multiplicative updates)

Probabilistic NMF

PNMF-GIBBS (Gibbs sampler for non-negative matrix factorisation, with ARD.)

M.N. Schmidt, O. Winther, L.K. Hansen, "Bayesian non-negative matrix factorization," International Conference on Independent Component Analysis and Signal Separation, Springer Lecture Notes in Computer Science, Vol. 5441, 2009.

T. Brouwer, P. Lio, "Bayesian Hybrid Matrix Factorisation for Data Integration," 20th International Conference on Artificial Intelligence and Statistics (AISTATS), 2017.

PNMF-VB (Variational Bayesian inference for non-negative matrix factorisation, with ARD)

Algorithm configurations

Category

Name in example codes

function

options.alg

other options

Base

MU-EUC

nmf_mu

mu

metric='EUC'

MU-KL

nmf_mu

mu

metric='KL'

MU-ALPHA

nmf_mu

mu

metric='ALPHA-D'

MU-BETA

nmf_mu

mu

metric='BETA-D'

Modified MU

nmf_mu

mod_mu

Acceralated MU

nmf_mu

acc_mu

PGD

nmf_pgd

pgd

Direct PGD

nmf_pgd

direct_pgd

ALS

nmf_als

als

Hierarchical ALS

nmf_als

hals_mu

Acceralated hierarchical ALS

nmf_als

acc_hals_mu

ASGROUP

nmf_anls

anls_asgroup

ASGIVENS

nmf_anls

anls_asgivens

BPP

nmf_anls

anls_bpp

Variant

Semi-NMF

semi_nmf

NeNMF

nenmf

GNMF

GNMF

SDNMF

SDNMF

Sparse

sparseMU-EUC

nmf_sparse_mu

metric='EUC'

sparseMU-KL

nmf_sparse_mu

metric='KL'

sparseNMF

sparse_nmf

NMFsc

nmf_sc

nsNMF

ns_nmf

fnsNMF

ns_nmf

metric='EUC', update_alg='apg'

Orthogonal

DTPP

nmf_dtpp

orthMU

nmf_orth_mu

OrthNMF

NMF-HALS-SO

Symmetric

SymmANLS

symm_anls

SymmHALS

symm_halsacc

SymmNewton

symm_newton

Online

INMF

inmf

ONMF

onmf

Acceralated ONMF

omf_acc

SPG

spg_nmf

RONMF

ronmf

SAGA-MU-NMF

asag_mu_nmf

SMU

smu_nmf

SVRMU

svrmu_nmf

Probabilistic

PNMF-VB

pnmf_vb

PNMF-GIBBS

pnmf_gibbs

Folders and files

./ - Top directory.

./README.md - This readme file.

./run_me_first.m - The scipt that you need to run first.

./demo.m - Demonstration script to check and understand this package easily.

./demo_face.m - Demonstration script to check and understand this package easily.

|plotter/ - Contains plotting tools to show convergence results and various plots.

|auxiliary/ - Some auxiliary tools for this project.

|solver/ - Contains various optimization algorithms.

|--- base/ - Basic NMF solvers.

|--- online/ - Online/stochstic NMF solvers.

|--- sparse/ - Sparse NMF solvers.

|--- robust/ - Robust NMF solvers.

|--- orthogonal/ - Orthogonal NMF solvers.

|--- symm/ - Symmetric NMF solvers.

|--- nenmf/ - Nesterov's accelerated NMF solver.

|--- probabilistic/ - Probabilistic NMF solvers.

|--- 3rd_party/ - Solvers provided by 3rd_party.

First to do

Run run_me_first for path configurations.

%% First run the setup script

run_me_first;

Simplest usage example: 4 steps!

Just execute demo for the simplest demonstration of this package. .

%% Execute the demonstration script

demo;

The "demo.m" file contains below.

%% generate synthetic data non-negative matrix V size of (mxn)

m = 500;

n = 100;

V = rand(m,n);

%% Initialize rank to be factorized

rank = 5;

%% perform factroization

% MU

options.alg = 'mu';

[w_nmf_mu, infos_nmf_mu] = nmf_mu(V, rank, options);

% Hierarchical ALS

options.alg = 'hals';

[w_nmf_hals, infos_nmf_hals] = nmf_als(V, rank, options);

%% plot

display_graph('epoch','cost', {'MU', 'HALS'}, {w_nmf_mu, w_nmf_hals}, {infos_nmf_mu, infos_nmf_hals});

Let's take a closer look at the code above bit by bit. The procedure has only 4 steps!

Step 1: Generate data

First, we generate synthetic data of V of size (mxn).

m = 500;

n = 100;

V = rand(m,n);

Step 2: Define rank

We set the rank value.

rank = 5;

Step 3: Perform solver

Now, you can perform optimization solvers, e.g., MU and Hierarchical ALS (HALS), calling solver functions, i.e., nmf_mu() function and nmf_als() function after setting some optimization options.

% MU

options.alg = 'mu';

[w_nmf_mu, infos_nmf_mu] = nmf_mu(V, rank, options);

% Hierarchical ALS

options.alg = 'hals';

[w_nmf_hals, infos_nmf_hals] = nmf_als(V, rank, options);

They return the final solutions of w and the statistics information that include the histories of epoch numbers, cost values, norms of gradient, the number of gradient evaluations and so on.

Step 4: Show result

Finally, display_graph() provides output results of decreasing behavior of the cost values in terms of the number of iterrations (epochs) and time [sec].

display_graph('epoch','cost', {'MU', 'HALS'}, {w_nmf_mu, w_nmf_hals}, {infos_nmf_mu, infos_nmf_hals});

display_graph('time','cost', {'MU', 'HALS'}, {w_nmf_mu, w_nmf_hals}, {infos_nmf_mu, infos_nmf_hals});

That's it!

bd741a332558667e21ff9f4ecfc53b3c.png

More plots

"demo_face.m" illustrates the learned basis (dictrionary) in case of CBCL face datasets.

The dataset is first loaded into V instead of generating synthetic data in Step 1.

V = importdata('./data/CBCL_face.mat');

Then, we can display basis elements (W: dictionary) obtained with different algorithms additionally in Step 4.

plot_dictionnary(w_nmf_mu.W, [], [7 7]);

plot_dictionnary(w_nmf_hals.W, [], [7 7]);

e7416561e927ac34f7e5e9ed339b0a83.png

License

The NMFLibrary is free, non-commercial and open source.

The code provided iin NMFLibrary should only be used for academic/research purposes.

Third party files are included.

For ANLS algorithms: nnlsm_activeset.m, nnls1_asgivens.m, nnlsm_blockpivot.m, and normalEqComb.m written by Jingu Kim.

For PGD algorithm: nlssubprob.m.

For GNMF algorithm: GNMF.m, GNMF_Multi.m, constructW.m and litekmeans.m writtnen by Deng Cai.

For SDNMF algorithm: SDNMF.m, and SDNMF_Multi.m writtnen by Wei Qian.

For symmetric algorithms writtnen by D.Kang et al. and Z. Zhu et al.

For acceleration sub-routines in nmf_mu.m and nmf_als.m for MU and HALS from Nicolas Gillis.

For dictionaly visualization: plot_dictionnary.m, rescale.m, and getoptions.m.

Problems or questions

If you have any problems or questions, please contact the author: Hiroyuki Kasai (email: kasai at is dot uec dot ac dot jp)

Release notes

Version 1.7.0 (June 27, 2019)

Symmetic solvers are added.

Clustering quality measurements are integrated into store_nmf_infos.m.

Version 1.7.0 (May 21, 2019)

PNMF-VB and NeNMF are added.

Fixed some bugs.

Version 1.6.0 (May 16, 2019)

DTPP is added.

Version 1.5.1 (Apr. 22, 2019)

Some solvers are modified to fix bugs.

Version 1.5.0 (Jul. 30, 2018)

fnsNMF and NMF-HALS-SO are added.

Version 1.4.0 (Jul. 24, 2018)

sparseMU and orthMU are added.

MU with Kullback-Leibler divergence (KL), Amari alpha divergence, and beta divergenceare added.

Version 1.3.0 (Jul. 23, 2018)

NMFsc, scNMF and csNMF are added.

Version 1.2.0 (Jul. 21, 2018)

GNMF, Semi-NMF and SDNMF are added.

Version 1.1.0 (Apr. 17, 2018)

Online/stochastic solvers are added.

Version 1.0.0 (Apr. 04, 2017)

Initial version.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值