基于随机梯度下降的Matlab矩阵分解

时间:2013-10-06 20:04:13

标签: matlab math mathematical-optimization gradient-descent matrix-factorization

我必须将Matrix R [m n]分解为两个低秩矩阵(U [K m]和V [K * n]),我这样做是为了预测U和V缺少R值。
     Matrix Factorization

问题是,为了分解 R 我不能使用Matlab因子分解方法,所以我必须研究目标函数,它最小化sum-of-squared-errors以提高分解精度:
     Objective Function 详情如下:

enter image description here


我在本文中的问题是如何<{>>最小化函数F Matlab使用 Stochastic Gradient Descent 方法将R分解为U和V矩阵。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

最后,我在this page :)的帮助下想出了 我在一些步骤中解释了这个方法:

  1. 创建U [k * m]和V [k * n]并任意填充

  2. 在Ui和Vj上计算目标函数的导数

  3. 按如下方式进行梯度下降:

    while(您的标准满足(优化误差函数F)) {    UI = UI + A(U'i);    VJ = VJ + A(V'j);    使用Ui和Vj的新值评估F; }

  4. 使用最小F,取U和V,计算转置(U)* V和 结果估计为R( a 步长学习率