Taste简介

Taste是Apache Mahout提供的一个协同过滤算法的高效实现,它是一个基于Java实现的可扩展的,高效的推荐引擎。Taste既实现了最基本的基于用户的和基于内容的推荐算法,同时也提供了扩展接口,使用户可以方便的定义和实现自己的推荐算法。同时,Taste不仅仅只适用于Java应用程序,它可以作为内部服务器的一个组件以HTTP和Web Service的形式向外界提供推荐的逻辑。Taste的设计使它能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求。

Taste的架构

Taste由以下五个主要的组件组成:

    • DataModel:DataModel是用户喜好信息的抽象接口,它的具体实现支持从任意类型的数据源抽取用户喜好信息。Taste默认提供JDBCDataModel和FileDataModel,分别支持从数据库和文件中读取用户的喜好信息。
    • UserSimilarity和ItemSimilarity:UserSimilarity用于定义两个用户间的相似度,它是基于协同过滤的推荐引擎的核心部分,可以用来计算用户的“邻居”,这里我们将与当前用户口味相似的用户称为他的邻居。ItemSimilarity 类似的,计算内容之间的相似度。
    • UserNeighborhood:用于基于用户相似度的推荐方法中,推荐的内容是基于找到与当前用户喜好相似的“邻居用户”的方式产生的。UserNeighborhood定义了确定邻居用户的方法,具体实现一般是基于 UserSimilarity 计算得到的。
    • Recommender:Recommender是推荐引擎的抽象接口,Taste中的核心组件。程序中,为它提供一个DataModel,它可以计算出对不同用户的推荐内容。实际应用中,主要使用它的实现类 GenericUserBasedRecommender或者GenericItemBasedRecommender,分别实现基于用户相似度的推荐引擎或者基于内容的推荐引擎。

运行Demo

1. 下载mahout-0.2

svn checkout https://svn.apache.org/repos/asf/mahout/branches/mahout-0.2/

2. 准备数据源,从Grouplen下载"1 Million MovieLens Dataset",链接:http://www.grouplens.org/system/files/ml-1m.zip

3. 解压数据源压缩包,将movie.dat和ratings.dat拷贝到/mahout-0.2/examples/src/main/java/org/apache/mahout/cf/taste/example/grouplens

4. 回到/mahout-0.2/examples目录下,运行"mvn install"

5. 进入/mahout-0.2/taste-web目录,拷贝 ../examples/target/grouplens.jar到 taste-web/lib目录

cp ../examples/target/grouplens.jar ./lib

6. 在/mahout-0.2下运行"mvn package"

7. 将 taste-web/target 目录下生成的war包“mahout-taste-webapp-0.2.war”拷贝到Tomcat的webapp下

8. 启动Tomcat,在/bin目录运行“./startup.sh”

9. 访问“http://localhost:8080/mahout-taste-webapp-0.2/RecommenderServlet?userID=1”

最新文章

  1. 求两圆相交部分面积(C++)
  2. unity自定义菜单面板开发
  3. 如何用jquery获取页面下HiddenField的值··
  4. PC缺少一个或多个网络协议 qq可登录(win10)
  5. sharepoint获取exchange邮箱报错:该帐户无权模拟所请求的用户
  6. python&MongoDB爬取图书馆借阅记录(没有验证码)
  7. Daily English
  8. C++ Primer : 第二章:变量和基本类型(1)
  9. hdu 3172 Virtual Friends
  10. Swift Tips - 当 Swift 遇上 CocoaPods
  11. tornado nginx supervisor
  12. 无法启动调试--未安装 Silverlight Developer 运行时。请安装一个匹配版本。
  13. Jquery效果之固定不动的块
  14. SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型
  15. oracle11g的内存分配不当,导致的错误ORA-01034,ORA-00838,ORA-27101
  16. react-router 离开路由前确认
  17. Android开发之漫漫长途 IX——彻底掌握Binder
  18. Vulkan的分层设计
  19. apply和call与this
  20. 用socket.io将Node后台与M站相联系

热门文章

  1. Java NIO的多路复用及reactor
  2. windows+php5.5+apache2.4+tomcat+mod_jk配置
  3. C#中实现WebBrowser控件的HTML源代码读写
  4. MVC EF 修改 封装类 通用泛型方法(一)
  5. 6、Cocos2dx 3.0游戏开发的基本概念找个小三场比赛
  6. ApacheBench(ab)使用简介
  7. Android-Universal-Image-Loader学习笔记(两)--LruDiscCache
  8. HDU 1983 BFS&&DFS
  9. 搭建环境Visual Studio 2013 社区版
  10. MSSQL2008数据库备份还原和数据恢复