推荐系统学习之mahout 学习评分计算

mahout 学习评分计算

 

一、基于item的推荐的评分计算方法
1 目标用户已评价的Item集合,UserItem{item1,item2} 评分为p1、p2 需预测的item3 item3与item1和item2的相似度为s1、s2
  (p1*s1+p2*s2)/(s1+s2) 限定分数在最大分和最小分之间

二、基于用户的推荐的评分计算方法
   同item类似 计算目标用户最近n个邻居的相似度,最近的2个邻居为user1,user2。user1,user2对item1的 评分p1、p2  与目标用户相似度为s1、s2
预测评分为(p1*s1+p2*s2)/(s1+s2)  限定分数在最大分和最小分之间

三、 knnItem推荐 预测评分的计算法

1 UserItem{item1,item2,item3} 评分为p1、p2、p3 需预测的item4 UserItem中与item4最相似的的2个Item为
item1和item2相似度为s1和s2 计算item1和item2权重为w1和w2  (p1*w1+p2*w2)/(w1+w2)
2 权重的的计算方法

theneighborhood={item1,item2,item4}

usersRatedNeighborhood={user1,user2}同时对theneighborhood有兴趣的用户集合(不包含目标用户)用户个数为numUsers

itemneighborhood ={item1,item2}  item个数为k

aMatrix为k*k阶矩阵  aMatrix[i][j] ,i为 itemneighborhood的第i个item,j为 itemneighborhood的第j个item

vki为usersRatedNeighborhood中第K个用户对itemi的评分 vkj为usersRatedNeighborhood中第K个用户对itemj的评分

  • aMatrix[i][j]=(v1i*v1j +...+vki*vkj )/numUsers

b为k*1阶矩阵

vk为usersRatedNeighborhood中第K个用户对需预测的item的评分

b[i][1] = (v1i*v1+...+vki*vk)/numUsers

diagonalA diagonalB为aMatrix中对角线元素的和

avgDiagonal = Math.max(diagonalA, diagonalB) / k

avgMatrixA = aMatrix[i][j]的和(i!=j) avgMatrixA /= k * k - k;

 avgVectorB = b[i]的和     avgVectorB /= k;

numUsersPlusBeta = numUsers + BETA;

aMatrix[i][j] = (numUsers * aMatrix[i][j] + BETA * average) / numUsersPlusBeta;(i==j ,average = avgDiagonal;i!=j ,average = avgMatrixA;)

 b[i] = (numUsers * b[i] + BETA * avgVectorB) / numUsersPlusBeta;

optimize(aMatrix,b)

Arrays.fill(x0, 3.0 / k);

    * function [x] = conjgrad(A,b,x0)
      x = x0;
      r = b - A*x0;
      w = -r;
      for i = 1:size(A);
         z = A*w;
         a = (r'*w)/(w'*z);
         x = x + a*w;
         r = r - a*z;
        if ( norm(r) < 1e-10 )
             break;
         end
         B = (r'*z)/(w'*z);
         w = -r + B*w;
      end
   end

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值