码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-10-21 22:43:36      阅读:235      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!