我必须将Matrix
R [m n]分解为两个低秩矩阵(U [K m]和V [K * n]),我这样做是为了预测U和V缺少R值。
问题是,为了分解 R 我不能使用Matlab
因子分解方法,所以我必须研究目标函数,它最小化sum-of-squared-errors
以提高分解精度:
详情如下:
我在本文中的问题是如何<{>>最小化函数F Matlab
使用 Stochastic Gradient Descent 方法将R分解为U和V矩阵。
感谢您的帮助!
答案 0 :(得分:3)
最后,我在this page :)的帮助下想出了 我在一些步骤中解释了这个方法:
创建U [k * m]和V [k * n]并任意填充
在Ui和Vj上计算目标函数的导数
按如下方式进行梯度下降:
while(您的标准满足(优化误差函数F)) { UI = UI + A(U'i); VJ = VJ + A(V'j); 使用Ui和Vj的新值评估F; }
使用最小F,取U和V,计算转置(U)* V和 结果估计为R( a 步长或学习率)