首页 > 其他 > 详细

Matlab梯度下降解决评分矩阵分解

时间:2015-10-21 22:40:23      阅读:361      评论:0      收藏:0      [点我收藏+]
for iter = 1:num_iters
   
    %梯度下降 用户向量
    for i = 1:m
        %返回有0有1 是逻辑值
       ratedIndex1 = R_training(i,:)~=0 ;
       %U(i,:) * V‘  第i个用户分别对每个电影的评分
       
       %sumVec1  第i个用户分别对每个电影的评分 减去真实值
       sumVec1 = ratedIndex1 .* (U(i,:) * V‘ - R_training(i,:));
       product1 = sumVec1 * V;
       derivative1 = product1 + lambda_u * U(i,:);
       old_U(i,:) = U(i,:) - theta * derivative1;
    end
    
    %梯度下降 电影向量
    for j = 1:n
       ratedIndex2 = R_training(:,j)~=0;
       sumVec2 = ratedIndex2 .* (U * V(j,:)‘ - R_training(:,j));
       product2 = sumVec2‘ * U;
       derivative2 = product2 + lambda_v * V(j,:);
       old_V(j,:) = V(j,:) - theta * derivative2;
    end
    
    U = old_U;
    V = old_V;
    RMSE(i,1) = CompRMSE(train_vec,U,V);
    RMSE(i,2) = CompRMSE(probe_vec,U,V);

end

  

Matlab梯度下降解决评分矩阵分解

原文:http://www.cnblogs.com/hxsyl/p/4899248.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!