进行推荐一

引言
前面提到的两种典型的推荐算法,他们均在Mahout中得到实现:基于用户的推荐程序和基于物品的推荐程序。两种算法均依赖于两个事物(用户或物品)之间的相似性度量,或者说等同性定义。相似性的定义有多种:包括基于皮尔逊相关系数(Pearson correlation)、对数似然值(log likehood)、斯皮尔曼相关系数(Spearman correlation)、谷本系数(Tanimoto coefficient)等实现。


理解基于用户的推荐

基于用户的推荐算法的典型特征是,建立在用户间有某种相似性的基础上。事实上,这种算法在日常生活中很常见,根据人群之间的相似性进行推荐是非常合理的。


算法:

for(用户u尚未表达偏好的) 每个物品i{
    for(对i有偏好的) 每个其他用户v{
        计算u和v之间的相似度
        按照权重s将v对i的偏好并入平均值
    }
}
return 值最高的物品(按加权平均排序)

说明:外层循环简单地把每个已知的物品(用户未对其表达偏好的)作为候选的推荐项。内层循环逐个查看对候选物品做过评价的其他用户,并记下他们对该物品的偏好值。最终,将这些值的加权平均作为目标用户对物品偏好值的预测。每个偏好值的权重取决于该用户与目标用户之间的相似度。与目标用户越相似,他的偏好值所占权重越大。
但是,每个物品都检查实在是太慢了。实际应用中,通常会先计算出一个最相似用户的领域,然后仅考虑 这些用户评价过的物品:

for每个其他用户 w{
    计算用户u和用户w的相似度s
    按相似度排序后,将位置靠前的用户作为领域n
}
for(n中用户有偏好,而u中用户无偏好的){
    每个物品i
    for(n中用户对i有偏好的){
        每个其他用户v
        计算用户u和用户v的相似度s
        按权重s将v对i的偏好并入平均值
    }
}

这个过程与前面的区别在于首先确定相似的用户,在考虑这些最相似用户对什么物品感兴趣。这些物品就成为推荐的候选项。后续的过程是一样的。这就是标准的基于用户推荐算法,也是他在Mahut中的实现方式。


引入新的相似性度量,结果就会发生显著变化。由此可知,提供推荐的方式是多种多样的——而这还只是调整了方法的一个侧面。Mahout是由多个组件混搭而成的,而非单一的推荐引擎,其各个组件的组合可以定制,从而针对特定应用提供理想的推荐。通常包括如下组件:

  • 数据模型,由DataModel实现
  • 用户间的相似性度量,由UserSimilarity实现
  • 用户领域的定义,由UserNeighborhood实现
  • 推荐引擎的定义,由Recommender实现

总之,要想推荐得更好更快,就必然需要经历一个漫长的实验和调优过程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值