0
我有一个矩阵R,我想用梯度下降法估计。该代码适用于小尺寸矩阵(例如100x1),但随着我增加尺寸(例如10x3),该代码会提供NaN值。请帮忙!多维矩阵的小值和大值的梯度下降
R =[196,242,3;186,302,3;22,377,1;244,51,2;166,346,1;298,474,4;115,265,2;253,465,5;305,451,3;6,86,3];
N = length(R);
M = size(R,2);
K = 3;
P = rand(N,K);
Q = rand(M,K);
alpha = 0.002;
beta = 0.02;
for iter = 1 : 5000
e = R - P*Q';
P_new = P + 2*alpha*(e*Q-beta*P);
Q_new= Q + 2*alpha*(e'*P-beta*Q);
mse2(iter) = norm(R - P*Q')/norm(R);
P=P_new;
Q=Q_new;
end
R_est = P*Q';
实际上,这是矩阵完成问题,以填补对原始矩阵R的缺失条目。因此,mse 2在原始R的值和估计的R R_est的值之间。 –
我无法弄清楚为什么数值在多维矩阵中变得如此之大。 –
在for循环中设置一个断点并逐步完成以查看变量的增长情况。 –