- Machine Learning Algorithms
- Giuseppe Bonaccorso
- 255字
- 2021-07-02 18:53:31
Non-negative matrix factorization
When the dataset is made up of non-negative elements, it's possible to use non-negative matrix factorization (NNMF) instead of standard PCA. The algorithm optimizes a loss function (alternatively on W and H) based on the Frobenius norm:

If dim(X) = n x m, then dim(W) = n x p and dim(H) = p x m with p equal to the number of requested components (the n_components parameter), which is normally smaller than the original dimensions n and m.
The final reconstruction is purely additive and it has been shown that it's particularly efficient for images or text where there are normally no non-negative elements. In the following snippet, there's an example using the Iris dataset (which is non-negative). The init parameter can assume different values (see the documentation) which determine how the data matrix is initially processed. A random choice is for non-negative matrices which are only scaled (no SVD is performed):
from sklearn.datasets import load_iris
from sklearn.decomposition import NMF
>>> iris = load_iris()
>>> iris.data.shape
(150L, 4L)
>>> nmf = NMF(n_components=3, init='random', l1_ratio=0.1)
>>> Xt = nmf.fit_transform(iris.data)
>>> nmf.reconstruction_err_
1.8819327624141866
>>> iris.data[0]
array([ 5.1, 3.5, 1.4, 0.2])
>>> Xt[0]
array([ 0.20668461, 1.09973772, 0.0098996 ])
>>> nmf.inverse_transform(Xt[0])
array([ 5.10401653, 3.49666967, 1.3965409 , 0.20610779])
NNMF, together with other factorization methods, will be very useful for more advanced techniques, such as recommendation systems and topic modeling.
- C#高級編程(第10版) C# 6 & .NET Core 1.0 (.NET開發經典名著)
- Python概率統計
- Kali Linux Web Penetration Testing Cookbook
- Hands-On Machine Learning with scikit:learn and Scientific Python Toolkits
- PhoneGap:Beginner's Guide(Third Edition)
- Visual C#通用范例開發金典
- SQL Server實用教程(SQL Server 2008版)
- 你必須知道的.NET(第2版)
- 3D Printing Designs:Design an SD Card Holder
- Learning Puppet
- Oracle Database 12c DBA官方手冊(第8版)
- C++從零開始學(視頻教學版)(第2版)
- C語言進階:重點、難點與疑點解析
- JSP編程教程
- Jenkins 2.x Continuous Integration Cookbook(Third Edition)