MATLAB中的矢量化方程

数据挖掘 推荐系统 梯度下降 matlab
2022-02-21 07:25:25

我正在使用 MATLAB 中的矩阵分解进行协同过滤。我正在使用梯度下降进行参数学习。要优化的成本函数是:

J=I(RUV)F2+λ1UF2+λ2VF2

我有以下更新方程:

Ju(i)=jIij(rijuivj)vj

Jv(i)=jIij(rijuivj)ui

矩阵的维度是:

I>nn

R>nn

U>nk

V>nk

我无法提出渐变的矢量化形式,因此我必须明确地循环 i 和 j,这大大减慢了代码速度。

1个回答

您的问题是如何对方程进行矢量化以进行更新?您有一个 i 和 j 的向量,并且对于每次更新,您都对 j 求和。计算每个分量的向量,然后对 j 求和。

提供实际代码可能会对您的问题有所帮助。就目前而言,它似乎很模糊。