Taste 有着非常清晰的程序架构。看图说话,下面就是一个 User-based Recommender 的例图,说明了各个组件之间的关系。而对于一个 Item-based Recommender,除了不需要使用 PreferenceInferrer 和 Neighborhood 之外,和下图描述的基本架构是非常类似的。

作为一个协同过滤推荐引擎,Taste 包含下列基本要素。

  1. 用户:即上图中的 User,Taste 组件依据用户的偏好信息向用户进行推荐。
  2. 推荐项:即上图中的 Item,每个用户都会对多个 Item 进行偏好设定,比如打分。
  3. 偏好:即上图中的 Preference,每一条偏好数据记录的都是某个用户对某个 Item 的偏好程度。

从上面可以看出,偏好信息是推荐系统的基础,它总是以某种形式进行存储,即图中的 DataModel 和 Data Store。另外,原始的偏好信息可能并不能表示用户确切的偏好。举个例子,对于 5 分制的评分系统来说,有些人可能无论自己多么不喜欢,给的最低的评分都可能是 2 分,并不是 1 分;另外一些人则可能正相反,最喜欢的也就给 4 分。还有一种情况,对于一个 Item,给它评分的用户越少,通常那些用户越“相似”(我们可以理解为嗜好相同);如果评价的用户特别多,这些用户之间的相似度反而不好判断,对这类偏 好信息通常可以直接忽略。为了解决诸如此类的问题,我们需要对那些原始的偏好数据进行处理,使数据标准化、差异扩大化,以求能够较真实地反应用户的偏好信 息,这正是图中 PreferenceTransform 要做的工作。
经过以上处理,我们就得到了一个 DataModel,一个已经标准化了的用户偏好信息。

对于 User-Based Recommender 来说,下一步,我们就是要找出与目标用户相似的“邻居”(Neighborhood)了。
首先要做的是得到描述目标用户和其它用户之间关系的集合(Correlation),然后从中选择最相似的用户。生成Correlation时,会指定一 个推断规则(PreferenceInferrer),用来描述用户对那些自己没有明确表明过偏好的 Item 的偏好值。在计算用户相似度方面,Taste 提供了皮尔森相关系数(Person Correlation Coefficient)、余弦相似性(Cosine-based Similarity)相似度算法。有了最近邻的用户集合,就可以对目标用户的兴趣进行预测,生成推荐结果。

上面我们结合图描述了一个典型的 User-Based Recommender 的实现过程。总结并提取其中的重要对象,如下。

1、Recommender
Recommender 是 Taste 中的核心对象。给定一个 DataModel,Recommender 就可以生成生成对应的推荐结果。通常情况下,你只需要简单的选择使用 GenericUserBasedRecommender 或者是 GenericItemBasedRecommender 这两个 Recommender 接口的具体实现即可。另外,还可以通过 CachingRecommender 包装使用他们,以提升效率。

2、DataModel
DataModel 是包装用户偏好信息的接口。它的具体实现可以从任何数据源获取这些信息,当然,数据库通常是最常见的选择之一。尽管很多应用程序想编写一个他们自己的 DataModel,但其实 Taste 已经提供了一个 MysSqlJDBCDataModel,可以经由 JDBC 从数据库中获取偏好数据。另外,Taste 也提供了一个基于文件的 FileDataModel。
连同 DataModel 一起,Taste 使用 User、Item 和 Preference 这些概念来描述用户、推荐项和针对推荐项的偏好。自定义的 DataModel 应该实现这些接口以和应用程序匹配--比如一个 OnlineUser 代表网上商店的用户,一个 BookItem 代表一本书。

3、PreferenceTransform
PreferenceTransform 以某种方式改变偏好的值,通常是将其标准化,或者将其差异扩大化。PreferenceTransform 大多数情况下与 DataModel 一起使用。

4、UserCorrelation, ItemCorrelation
UserCorrelation 定义两个用户之间相似的程度。这是推荐系统中至关重要的一个部份,与 Neighborhood 的实现相关。
ItemCorrelation 也是类似的,只不过它用来描述两个 Item 之间的相似度。

5、Neighborhood
在一个 User-Based 推荐系统中,推荐的意思就是去寻找与给定用户相似的“邻居”。UserNeighborhood 描述了如何去选择那些“邻居”――比如,最相似的10个用户。具体实现时通常需要对 UserCorrelation 进行操作。

转载在:http://my.donews.com/clickstone/category/推荐系统/

转载于:https://www.cnblogs.com/lvpei/archive/2010/08/06/1794116.html

Taste/Thoth:Taste Architecture 概览【转Beyond Search】相关推荐

  1. Taste/Thoth:开源的推荐系统引擎

    Taste 是非常棒的一个推荐系统核心引擎,sf 上可以下载到 Taste 的最新版本.Taste 同时也是 2007 Google Summer of Code 里的一个项目. 当初学习推荐系统开发 ...

  2. Mahout算法集Taste

    Apache Mahout 是 ApacheSoftware Foundation (ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应 ...

  3. 2020_WWW_The Structure of Social Influence in Recommender Networks

    [论文阅读笔记]2020_WWW_The Structure of Social Influence in Recommender Networks 论文下载地址: https://doi.org/1 ...

  4. 程序员练级攻略(2018)-陈皓-笔记整理

    程序员练级攻略(2018)     开篇词     入门篇         零基础启蒙         正式入门     修养篇         程序员修养     专业基础篇         编程语 ...

  5. regnam r语言_R语言分析上海日料店价格和评价之前的联系

    一.前期数据准备,爬去大众点评上日料的数据,包括,价格,口味,环境,服务, 代码如下: hy1 left right for(i in 1:length(name)){ name[i] } name ...

  6. 动态展示二叉搜索树之实践进行时

    目录 一.选题展示 二.思考题目 三.阶段一:图形显示二叉搜索树之插入 1.图形显示二叉搜索树的要求 2.原博主的代码和输出 四.阶段二:图形显示二叉搜索树之查删 1.二叉搜索树的查找操作 2.二叉搜 ...

  7. linux 正则表达式 作用,Linux 正则表达式使用简介

    正则表达式基本介绍 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 正则表达式的基本元素包括普通字符和元字 ...

  8. [CTSC2018]混合果汁 二分 套 主席树上二分

    题意: n种果汁,第iii种果汁的美味程度是did_idi​有lil_ili​​升,价格是pip_ipi​升 mmm个询问,要求使用果汁的总量不小于LimLimLim,价格不超过GGG,最大化所用的果 ...

  9. 基于Mahout的电影推荐系统

    1.Mahout 简介 Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员 ...

最新文章

  1. svn 常见问题记录
  2. 云从科技在渝布局人工智能大数据平台
  3. TCP/IP详解--第十八章
  4. Lua 5.1.1 源代码阅读笔记
  5. 江西理工大学c语言程序设计竞赛怎么备考,2015年江西理工大学C语言程序设计竞赛(高级组)...
  6. 安卓APP_ 控件(4)—— ImageView
  7. DataTable两列转换四列
  8. 手机丢了如何损失最小
  9. Mac OSX用终端检测文件的sha1值
  10. 代码管理学:一时不检查,工作必走样
  11. 类似金山打字的窗口打字游戏代码版--注释很多,不用讲解
  12. 【学习笔记】尚硅谷大数据项目之Flink实时数仓---数据采集
  13. Node.js使用npm下载第三方模块包步骤
  14. VHDL学习:两种方式实现四选一选择器
  15. PCB的paste与solder层
  16. [ABAP] MOVE-CORRESPONDING 表
  17. #三、股市数学拟合理论的理论兼容
  18. pytorch中实现Balanced Cross-Entropy
  19. 使用java导入excel表格中的内容进入到数据库中,出现excel表格的后缀名错误,如何解决。
  20. SQL高级——PLSQL数据库编程

热门文章

  1. 小米电脑桌面没见计算机怎么办,手机屏幕太小?一分钟教会你小米手机投屏电脑方法,低调收藏!...
  2. Android 简述touch事件中的MotionEvent
  3. 零基础从微软官网制作纯净的U盘启动盘
  4. 织梦dedecms 幻灯片 自定义设置
  5. 关于文件读写缓存的问题(flush的使用场景)
  6. ssm健康饮食推荐系统分析与设计 毕业设计-附源码261631
  7. 留住幸福的办法是不断创造幸福
  8. 二级网站域名怎么申请?
  9. Wilson‘s theorem(威尔逊定理)
  10. 圆锥的表面积和体积计算