Extreme Optimization™: Complexity made simple.

Numerical Components
for .NET

  • Home
  • Features
    • Math Library
    • Vector and Matrix Library
    • Statistics Library
    • Performance
    • Usability
  • Documentation
    • Introduction
    • Math Library User's Guide
    • Vector and Matrix Library User's Guide
    • Statistics Library User's Guide
    • Reference
  • Resources
    • Downloads
    • QuickStart Samples
    • Sample Applications
    • Frequently Asked Questions
    • Technical Support
  • Blog
  • Order
  • Company
    • About us
    • Testimonials
    • Customers
    • Press Releases
    • Careers
    • Contact us
Introduction
Deployment Guide
Using Parallelism
Expand Mathematics Library User's GuideMathematics Library User's Guide
Expand Vector and Matrix Library User's GuideVector and Matrix Library User's Guide
Expand Statistics Library User's GuideStatistics Library User's Guide
Expand ReferenceReference
  • Home
    • Features
    • Solutions
    • Documentation
    • QuickStart Samples
    • Sample Applications
    • Downloads
    • Technical Support
    • Download trial
    • How to buy
    • Blog
    • Company
    • Resources
  • Documentation
    • Introduction
    • Deployment Guide
    • Using Parallelism
    • Mathematics Library User's Guide
    • Vector and Matrix Library User's Guide
    • Statistics Library User's Guide
    • Reference
  • Vector and Matrix Library User's Guide
    • Vectors
    • Matrices
    • Structured Matrix Types
    • Matrix Decompositions
    • Sparse Vectors and Matrices
    • Complex Linear Algebra
    • Single-Precision Linear Algebra
  • Matrix Decompositions
    • The LU Decomposition
    • The QR Decomposition
    • The Cholesky Decomposition
    • The Eigenvalue Decomposition
    • The Singular Value Decomposition
    • Non-Negative Matrix Factorization
    • Solving Linear Systems
  • Non-Negative Matrix Factorization
Collapse image Expand Image Copy image CopyHover image
         




Non-Negative Matrix Factorization (NMF)

The Non-Negative Matrix Factorization (NMF) is a decomposition of a matrix into a product of two matrices

X = WH,

where all entries in W and H are positive or zero. When the inner dimension of the product (the number of columns of W) is less than the rank of X, then the product is only an approximation, and the factorization is sometimes referred to as the Approximative Non-Negative Matrix Factorization.

In the Extreme Optimization Mathematics Library for .NET, the non-negative matrix factorization is implemented by the NonNegativeMatrixFactorization class.

The NonNegativeMatrixFactorization class

The NonNegativeMatrixFactorization class represents the non-negative matrix factorization of a matrix. It has only one constructor which takes two paramters. The first is a Matrix that represents the matrix that is to be factored. The second parameter is an integer that specifies the inner dimension of the matrix product. If this value is less than both the number of rows and columns of the original matrix, then the factorization is approximate.

The Decompose()()()() method performs the actual decomposition using an alternating least squares algorithm. For large matrices, this method may take a long time to complete. This method is called by other methods as needed. You will rarely need to call it explicitly.

After the decomposition is computed, the LeftFactor and RightFactor properties return DenseMatrix objects that represent the non-negative factors.

Unlike other matrix decompositions, the non-negative matrix factorization does not help with solving systems of equations or related operations. Although methods like Solve()()()() are defined, they simply delegate the work to the corresponding method on the base matrix.

Send comments on this topic to support@extremeoptimization.com

Copyright (c) 2004-2011 ExoAnalytics Inc.

Copyright © 2003-2013, Extreme Optimization. All rights reserved.
Extreme Optimization, Complexity made simple, M#, and M Sharp are trademarks of ExoAnalytics Inc.
Microsoft, Visual C#, Visual Basic, Visual Studio, Visual Studio.NET, and the Optimized for Visual Studio logo
are registered trademarks of Microsoft Corporation.