通过Mahout构建推荐系统:通过IDRescorer扩展评分规则

通过Mahout构建推荐系统时,如果我们需要加入某些过滤规则(比如:item的创建时间在一年以内),则需要用到IDRescorer接口,该接口源码如下:

package org.apache.mahout.cf.taste.recommender;
/**
 * <p>
 * A {@link Rescorer} which operates on {@code long} primitive IDs, rather than arbitrary {@link Object}s.
 * This is provided since most uses of this interface in the framework take IDs (as {@code long}) as an
 * argument, and so this can be used to avoid unnecessary boxing/unboxing.
 * </p>
 */
public interface IDRescorer {  

  /**
   * @param id
   *          ID of thing (user, item, etc.) to rescore
   * @param originalScore
   *          original score
   * @return modified score, or {@link Double#NaN} to indicate that this should be excluded entirely
   */
  double rescore(long id, double originalScore);  

  /**
   * Returns {@code true} to exclude the given thing.
   *
   * @param id
   *          ID of thing (user, item, etc.) to rescore
   * @return {@code true} to exclude, {@code false} otherwise
   */
  boolean isFiltered(long id);  

}

该接口规定了两个必须实现的方法:

1.rescore方法

功能:定义重新评分的逻辑。根据新的规则,为指定id的item重新评分。

返回:重评后的分数

输入参数:item的id,该item原来的评分

调用该方法的方法包括:

2.isFiltered

功能:定义过滤规则。判断指定id的item,根据新的规则,是否该排除在外,返回true就是该item应该排除在结果之外。

返回:true or false

输入参数:指定的id

调用该方法的方法包括:

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/tools/

无论是否需要根据特定规则过滤推荐结果,都必须先创建org.apache.mahout.cf.taste.recommender.Recommender类的对象r,然后通过对象r来执行推荐方法获得针对特定id用户的推荐结果List。

当无需使用特定规则过滤推荐结果时,只需使用Recommender对象的如下方法获得推荐结果:

/**
 * @param userID
 *          user for which recommendations are to be computed
 * @param howMany
 *          desired number of recommendations
 * @return {@link List} of recommended {@link RecommendedItem}s, ordered from most strongly recommend to
 *         least
 * @throws TasteException
 *           if an error occurs while accessing the {@link DataModel}
 */
List<RecommendedItem> recommend(long userID, int howMany) throws TasteException;

当需要根据特定规则过滤推荐结果时,需使用Recommender对象的如下方法获得推荐结果:

/**
 * @param userID
 *          user for which recommendations are to be computed
 * @param howMany
 *          desired number of recommendations
 * @param rescorer
 *          rescoring function to apply before final list of recommendations is determined
 * @return {@link List} of recommended {@link RecommendedItem}s, ordered from most strongly recommend to
 *         least
 * @throws TasteException
 *           if an error occurs while accessing the {@link DataModel}
 */
List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer) throws TasteException;

其中,最后一个参数就是本文开始提到的IDRescorer。

所以,当需要通过特定规则过滤推荐结果时,需先实现IDRescorer接口,定义评分逻辑和排除规则。

csdn博客 Gandalf_lee

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mahout
, 方法
, link
, 结果
, 规则
, param
, link to
, 推荐
${param.id}
,以便于您获取更多的相关知识。

时间: 2024-09-20 09:29:52

通过Mahout构建推荐系统:通过IDRescorer扩展评分规则的相关文章

Consul实践之Consul结合nginx构建高可用可扩展的Web服务

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1730439 前文<Consul实践之Consul是什么>讲述了consul是什么,这篇文档是一个Consul实际应用的一个例子,用Consul结合nginx构建高可用可扩展的Web服务.Consul还能做许多其他的事情,可以根据实际需要构思和使用. 方案概述 nginx提供的负载均衡服务同样支持高可用.可扩展的W

yahoo开发的网页评分插件YSlow的评分规则

YSlow是yahoo美国开发的一个页面评分插件,非常的棒,从中我们可以看出我们页面上的很多不足,并且可以知道我们改怎么却改进和优化. 仔细研究了下YSlow的评分规则. 主要有12条: 1. Make fewer HTTP requests 尽可能少的http请求..我们有141个请求(其中15个JS请求,3个CSS请求,47个CSS background images请求),多的可怕.思考了下,为什么把这个三种请求过多列为对页面加载的重要不利因素呢,而过多的IMG请求并没有列为不利因素呢?

基于Apache Mahout构建社会化推荐引擎

推荐引擎简介 推荐引擎利用特殊的信息过滤(IF,Information Filtering)技术,将不同的内容(例如电影.音乐.书籍.新闻.图片.网页等)推荐给可能感兴趣的用户.通常情况下,推荐引擎的实现是通过将用户的个人喜好与特定的参考特征进行比较,并试图预测用户对一些未评分项目的喜好程度.参考特征的选取可能是从项目本身的信息中提取的,或是基于用户所在的社会或社团环境. 根据如何抽取参考特征,我们可以将推荐引擎分为以下四大类: 基于内容的推荐引擎:它将计算得到并推荐给用户一些与该用户已选择过的

Windows Workflow: 构建自定义活动以扩展您的工作流的作用范围

本文基于 .NET Framework 3.0 的预发布版本撰写而成.文中包含的所有信息均有变更可能. 本文讨论: 构建基本活动和复合活动 异步和基于事件的活动 自定义设计体验 验证和错误处理 本文使用了以下技术: .NET Framework 3.0 自定义工作流 活动是 Windows Workflow Foundation 的其中一个最重要的方面,在构建它们时需要考虑许多功能 .Don Box 和 Dharma Shukla 在他们于 2006 年 1 月撰写的文章"使用 Windows

通过Mahout构建贝叶斯文本分类器的精彩案例

背景&目标: 1.sport.tar 是体育类的文章,一共有10个类别: 用这些原始材料构造一个体育类的文本分类器,并测试对比bayes和cbayes的效果: 记录分类器的构造过程和测试结果. 2.user-sport.tar 是用户浏览的文章,每个文件夹对应一个用户: 利用上题构造的文本分类器,计算每个用户浏览各类文章的占比: 记录计算过程和结果. 实验环境: Hadoop-1.2.1 Mahout0.6 Pig0.12.1 Ubuntu12 Jdk1.7 原理&流程 建立文本分类器:

梦幻西游手游珍品物品指什么 珍品宝宝技能评分规则

梦幻西游手游珍品是什么意思 只有评分达到一定分数才能算上珍品,珍品的宠物和装备可以在商城摆摊交易出售给其他玩家,珍品的商品上架后需要过1天的公示期,公示期期间其他玩家不可购买,上架7天后自动下架 . 梦幻西游手游珍品包括哪些 一.高级魔兽要诀 二.珍品装备(强化打造≥50级才有可能成为珍品):强化打造的高属性装备(评分高) 三.珍品宠物:参战等级≥55级的宠物宝宝,且与宠物的成长.技能类型.技能数有关(神兽属于珍品宠物) 梦幻西游手游珍品宠物评分计算 当宠物所携带的技能评分≥100时即可成为珍品

《推荐系统:技术、评估及高效算法》一导读

前 言 推荐系统是为用户推荐所需物品的软件工具和技术.提供的推荐旨在通过各种决策过程来支持用户,例如,买什么物品.听什么歌或者读什么新闻.推荐系统对于在线用户处理信息过载是一个非常有价值的方法,并成为电子商务领域最强大和流行的工具.因此,人们提出了各种各样的推荐技术,并在过去的10年中将其中很多方法成功地运用在商务领域. 推荐系统的发展需要多学科的支持,涉及来自各个领域的专家知识,如人工智能.人机交互.信息检索.数据挖掘.数据统计.自适应用户界面.决策支持系统.市场营销或消费者行为等.本书旨在基

推荐系统——从原理到实践,还有福利赠送!

之前流水账似的介绍过一篇机器学习入门的文章,大致介绍了如何学习以及机器学习的入门方法并提供了一些博主自己整理的比较有用的资源.这篇就尽量以白话解释并介绍机器学习在推荐系统中的实践以及遇到的问题... 也许很多点在行家的眼里都是小菜一碟,但是对于刚刚接触机器学习来说,还有很多未知等待挑战. 所以读者可以把本篇当做是机器学习的玩具即可,如果文中有任何问题,还请不吝指教. 本篇将会以下面的步骤描述机器学习是如何在实践中应用的: 1 什么是推荐系统? 2 机器学习的作用 3 机器学习是如何使用的? 4

揭秘Keras推荐系统如何建立模型、获取用户爱好

你是否有过这样的经历?当你在亚马逊商城浏览一些书籍,或者购买过一些书籍后,你的偏好就会被系统学到,系统会基于一些假设为你推荐相关书目.为什么系统会知道,在这背后又藏着哪些秘密呢? 推推荐系统可以从百万甚至上亿的内容或商品中把有用的东西高效地显示给用户,这样可以为用户节省很多自行查询的时间,也可以提示用户可能忽略的内容或商品,使用户更有黏性,更愿意花时间待在网站上,从而使商家赚取更多的利润,即使流量本身也会使商家从广告中受益. 那么推荐系统背后的魔术是什么呢?其实任何推荐系统本质上都是在做排序.