背景:非负矩阵分解 (nmf)的基本设置是我们采用具有非负元素的矩阵 X 并找到另外两个非负矩阵 H 和 T 使得
是最小值
在这个例子中是一个代表数据集的矩阵。行对应于数据样本,列对应于特征。我知道nmf用于减少功能。我的理解是,您可以使用潜在特征来训练模型。
但是,假设我使用 nmf 进行特征缩减,然后获取一行新数据,并希望找到新数据的缩减特征。我是否必须使用更新的数据集再次运行 nmf,然后每次都重新训练我的模型?
背景:非负矩阵分解 (nmf)的基本设置是我们采用具有非负元素的矩阵 X 并找到另外两个非负矩阵 H 和 T 使得
是最小值
在这个例子中是一个代表数据集的矩阵。行对应于数据样本,列对应于特征。我知道nmf用于减少功能。我的理解是,您可以使用潜在特征来训练模型。
但是,假设我使用 nmf 进行特征缩减,然后获取一行新数据,并希望找到新数据的缩减特征。我是否必须使用更新的数据集再次运行 nmf,然后每次都重新训练我的模型?
给定由数据矩阵表示的数据集,我们可以解决使用梯度下降,如果系数变为负值,则将系数设置为零。这给了我们一个. 如果我们得到一个新的数据行,那么我们就可以找到对应的约简特征(潜在特征的权重)通过求解方程:
.
@sebastianspiegel 是正确的,您应该接受他们的回答。也就是说,就您可能希望如何实际实现这一目标而言,还有一些内容需要补充。
大多数 NMF 库为您提供了提供预训练因子/基矩阵的选项,以及一些标志以指示您希望算法省略该矩阵的更新步骤。这使您可以参加预先训练的矩阵,并拟合一个新的根据您的新数据对其进行矩阵分析。
这样做有几个好处:
1)这个因式分解应该运行得更快,因为你的矩阵现在是矩阵,而不是
2)您之前分解的特征应该与当前分解的特征相同(即,如果您正在分解电影评分,并且您的第一个分解的第五个特征是“恐怖电影”,则此过程吐出的特征也应该是“恐怖电影”)