📅  最后修改于: 2023-12-03 15:12:51.274000             🧑  作者: Mango
非负矩阵分解(Non-negative Matrix Factorization, NMF)是一种常用的数据降维技术,也是大数据分析中最重要的基础工具之一。NMF 可以将一个大型的非负数据矩阵分解成两个小型的矩阵,便于后续处理。
NMF 的算法基于以下假设:
因此,目标就变为了找到 $W$ 和 $H$ 的一个合适的分解。
一步步来:
具体的更新公式可以使用欧几里得距离或者 KL 散度来拟合目标矩阵和近似矩阵之间的距离。
NMF 可以应用在以下场景中:
Python 的常用机器学习库 scikit-learn 中提供了 NMF 的实现。以下是一个简单的例子:
from sklearn.decomposition import NMF
import numpy as np
# 创建一个 4*6 的矩阵
X = np.array([[1, 0, 2, 4, 0, 5],
[4, 0, 0, 5, 1, 2],
[0, 1, 3, 4, 2, 0],
[5, 0, 4, 3, 1, 7]])
# 训练模型并分解矩阵
model = NMF(n_components=2, init='random', random_state=0)
W = model.fit_transform(X)
H = model.components_
print(W)
print(H)
上述代码中,我们通过 NMF 将一个 $46$ 的矩阵分解成两个 $42$ 的矩阵 $W$ 和 $H$。
非负矩阵分解是一种常用的数据降维技术,可以将大型的非负数据矩阵分解成两个小型的矩阵,便于后续处理。Python 中的 scikit-learn 库提供了 NMF 的实现。