您的位置:首页 > 其它

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

2013-05-14 09:51 309 查看
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

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: