NonNegativeMatrixFactorization<T> Class

Represents a non-negative decomposition of a general matrix.

Definition

Namespace: Extreme.Mathematics.LinearAlgebra
Assembly: Extreme.Numerics (in Extreme.Numerics.dll) Version: 8.1.23
C#
public sealed class NonNegativeMatrixFactorization<T> : Decomposition<T>
Inheritance
Object  →  LinearOperator<T>  →  Decomposition<T>  →  NonNegativeMatrixFactorization<T>

Type Parameters

T

Remarks

Use the NonNegativeMatrixFactorization<T> class to compute an approximate factorization of a Matrix into matrices with only positive components. In other words, it rewrites a matrix X as a product

X = WH

where W and H have only zero or positive components. The inner dimension of the product (the number of columns of W and the number of rows of H) may be less than the rank of X. In this case, the factorization is only an approximation to the original matrix. This is actually very common, since the Non-Negative Matrix Factorization is often used to reduce the dimensionality of data.

The constructor NonNegativeMatrixFactorization<T> takes two arguments. The first is the matrix that is to be factorized. The second is the inner dimension of the product. The Decompose() method performs the actual calculation using an alternating least squares method. The resulting factors are then available as the LeftFactor and RightFactor properties.

Constructors

NonNegativeMatrixFactorization<T> Constructs a new NonNegativeMatrixFactorization<T> object.,

Properties

BaseMatrix Gets the underlying matrix of the decomposition.
(Inherited from Decomposition<T>)
ColumnCount Gets the number of columns in the matrix.
(Inherited from LinearOperator<T>)
ColumnIndex Gets or sets the index of labels for the columns of the matrix.
(Inherited from LinearOperator<T>)
Preliminary
ElementType Gets the element type of the matrix.
(Inherited from LinearOperator<T>)
Factors Gets a collection of the matrix factors that make up the decomposition.
(Overrides Decomposition<T>.Factors)
LeftFactor Gets the left component of the factorization.
Overwrite Gets or sets a value indicating whether the BaseMatrix should be overwritten by its decomposition.
(Inherited from Decomposition<T>)
RightFactor Gets the right component of the factorization.
RowCount Gets the number of rows in the matrix.
(Inherited from LinearOperator<T>)
RowIndex Gets or sets the index of labels for the rows of the matrix.
(Inherited from LinearOperator<T>)
Preliminary

Methods

AddProductToVector Multiplies a Vector<T> by this instance and stores the result in a second vector of type DenseVector<T>.
(Inherited from LinearOperator<T>)
Obsolete.
Decompose Performs the actual LU decomposition.
(Overrides Decomposition<T>.Decompose())
EqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
EstimateConditionNumber Calculates an estimate for the condition number of a matrix.
(Overrides LinearOperator<T>.EstimateConditionNumber())
GetDeterminant Calculates the determinant of a matrix.
(Overrides LinearOperator<T>.GetDeterminant())
GetHashCodeServes as the default hash function.
(Inherited from Object)
GetInverse() Calculates the inverse matrix..
(Inherited from LinearOperator<T>)
GetInverse(Boolean) Calculates the inverse of the factorized matrix.
(Overrides LinearOperator<T>.GetInverse(Boolean))
GetObjectData Populates a SerializationInfo with the data needed to serialize the target object.
(Inherited from LinearOperator<T>)
GetTypeGets the Type of the current instance.
(Inherited from Object)
IsSingular Gets a value indicating whether the BaseMatrix of this decomposition is singular.
(Inherited from Decomposition<T>)
LeastSquaresSolve(Matrix<T>) Solves the system of linear equations for the specified right-hand side matrix in the least squares sense.
(Inherited from LinearOperator<T>)
LeastSquaresSolve(Vector<T>) Solves the system of linear equations for the specified right-hand side vector.
(Inherited from LinearOperator<T>)
LeastSquaresSolve(DenseMatrix<T>, Boolean) Solves the system of linear equations for the specified right-hand side dense matrix in the least squares sense and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
LeastSquaresSolve(DenseVector<T>, Boolean) Solves the system of linear equations for the specified right-hand side dense vector in the least squares sense and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
LeastSquaresSolveInto(Matrix<T>, Matrix<T>) Solves a system of equations defined by the matrix and multiple right-hand sides in the least squares sense.
(Inherited from LinearOperator<T>)
LeastSquaresSolveInto(Vector<T>, Vector<T>) Solves a system of equations defined by the matrix and the specified right-hand side in the least squares sense.
(Inherited from Decomposition<T>)
Multiply(Matrix<T>)Applies the linear operator to a matrix.
(Inherited from LinearOperator<T>)
Multiply(Vector<T>)Applies the linear operator to a vector.
(Inherited from LinearOperator<T>)
Multiply(TransposeOperation, Matrix<T>) Multiplies a matrix on the left by this matrix.
(Inherited from LinearOperator<T>)
Obsolete.
Multiply(TransposeOperation, Vector<T>) Multiplies a vector on the left by this vector.
(Inherited from LinearOperator<T>)
Obsolete.
MultiplyTranspose(Matrix<T>)Applies the transpose of the linear operator to a matrix.
(Inherited from LinearOperator<T>)
MultiplyTranspose(Vector<T>)Applies the (conjugate) transpose of the linear operator to a vector.
(Inherited from LinearOperator<T>)
Rank() Returns the numerical rank of a matrix.
(Inherited from LinearOperator<T>)
Rank(T) Returns the numerical rank of a matrix using the specified tolerance.
(Overrides LinearOperator<T>.Rank(T))
Solve(Matrix<T>) Solves the system of linear equations for the specified right-hand side matrix.
(Inherited from LinearOperator<T>)
Solve(Vector<T>) Solves the system of linear equations for the specified right-hand side vector.
(Inherited from LinearOperator<T>)
Solve(DenseMatrix<T>, Boolean) Solves the system of linear equations for the specified right-hand side dense matrix and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
Solve(DenseVector<T>, Boolean) Solves the system of linear equations for the specified right-hand side dense vector and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
SolveInto(Matrix<T>, Matrix<T>) Solves a system of equations defined by the matrix and multiple right-hand sides.
(Inherited from LinearOperator<T>)
SolveInto(Vector<T>, Vector<T>) Solves a system of equations defined by the matrix and the specified right-hand side.
(Inherited from LinearOperator<T>)
SolveInto(TransposeOperation, Matrix<T>, Matrix<T>) Solves a system of equations defined by the matrix and multiple right-hand sides.
(Inherited from LinearOperator<T>)
SolveInto(TransposeOperation, Vector<T>, Vector<T>) Solves a system of equations defined by the matrix and the specified right-hand side.
(Overrides LinearOperator<T>.SolveInto(TransposeOperation, Vector<T>, Vector<T>))
SolveTranspose(Matrix<T>) Solves the transposed system of linear equations for the specified right-hand side matrix.
(Inherited from LinearOperator<T>)
SolveTranspose(Vector<T>) Solves the system of linear equations for the specified right-hand side vector.
(Inherited from LinearOperator<T>)
SolveTranspose(DenseMatrix<T>, Boolean) Solves the transposed system of linear equations for the specified right-hand side dense matrix and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
SolveTranspose(DenseVector<T>, Boolean) Solves the transposed system of linear equations for the specified right-hand side dense vector and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
SolveTransposeInto(Matrix<T>, Matrix<T>) Solves a system of equations defined by the matrix and multiple right-hand sides.
(Inherited from LinearOperator<T>)
SolveTransposeInto(Vector<T>, Vector<T>) Solves a system of equations defined by the matrix and the specified right-hand side.
(Inherited from LinearOperator<T>)
ToStringReturns a string that represents the current object.
(Inherited from Object)

See Also