一、简介
Taste 是 Apache Mahout提供的一个协同过滤算法的高效实现,它是一个基于 Java 实现的可扩展的,高效的推荐引擎。Taste 既实现了最基本的基于用户的和基于内容的推荐算法,同时也提供了扩展接口,使用户可以方便的定义和实现自己的推荐算法。同时,Taste 不仅仅只适用于 Java 应用程序,它可以作为内部服务器的一个组件以 HTTP 和 Web Service 的形式向外界提供推荐的逻辑(这个测试失败了....求具体流程)。Taste 的设计使它能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求。
二、接口说明
- DateModel
用户喜好信息的抽象接口,它的具体实现可能来自任意类型的数据源以抽取用户喜好信息。Taste提供了MySQLDataModel,方便用户通过JDBC和MySQL访问数据, 此外还通过FileDataModel提供了对文件数据源的支持。
- UserSimilarity 和 ItemSimilarity
用于定义两个用户间的相似度,它是基于协同过滤的推荐引擎的核心部分,可以用来计算用户的“邻居”,这里我们将与当前用户口味相似的用户称为他的邻居。ItemSimilarity 类似的,定义内容之间的相似度
- UserNeighborhood
用于基于用户相似度的推荐方法中,推荐的内容是基于找到与当前用户喜好相似的“邻居用户”的方式产生的。UserNeighborhood 定义了确定邻居用户的方法,具体实现一般是基于 UserSimilarity 计算得到的。
- Recommender
Recommender 是推荐引擎的抽象接口,Taste中的核心组件。程序中,为它提供一个DataModel,它可以计算出对不同用户的推荐内容。实际应用中,主要使用它的实现类 GenericUserBasedRecommender 或者 GenericItemBasedRecommender,分别实现基于用户相似度的推荐引擎或者基于内容的推荐引擎。
三、案例
(1)下载测试数据
http://www.grouplens.org/node/73
(2)拷贝到指定目录
cp ml-1m.zip /home/hadoop/data/mahout cd /home/hadoop/data/mahout unzip ml-1m.zip # 电影信息文件 格式为MovieID::MovieName::MovieTags cp movies.dat integration/src/main/resources/org/apache/mahout/cf/taste/example/grouplens/ # 打分信息文件 格式为UserID::MovieID::Rating::Timestamp cp ratings.dat integration/src/main/resources/org/apache/mahout/cf/taste/example/grouplens/ mvn install -DskipTests
(3)修改Pom文件
<dependency> <groupId>${project.groupId}</groupId> <artifactId>mahout-examples</artifactId> <version>0.8</version> </dependency>
(4)使用jetty测试
cd integration mvn jetty:run
访问地址查看:http://localhost:8080/mahout-integration/RecommenderServlet?userID=1
(5)命令行方式测试
mvn -q exec:java -Dexec.mainClass="org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommenderEvaluatorRunner" -Dexec.args="-i /home/hadoop/data/mahout/ml-1m/ratings.dat"
四、Taste代码简述
// 1. 选择数据源 // 数据源格式为UserID,MovieID,Ratings // 使用文件型数据接口 DataModel model = new FileDataModel(new File("/Users/matrix/Documents/plan/test/ratings.txt")); // 2. 实现相似度算法 // 使用PearsonCorrelationSimilarity实现UserSimilarity接口, 计算用户的相似度 // 其中PearsonCorrelationSimilarity是基于皮尔逊相关系数计算相似度的实现类 // 其它的还包括 // EuclideanDistanceSimilarity:基于欧几里德距离计算相似度 // TanimotoCoefficientSimilarity:基于 Tanimoto 系数计算相似度 // UncerteredCosineSimilarity:计算 Cosine 相似度 UserSimilarity similarity = new PearsonCorrelationSimilarity(model); // 可选项 similarity.setPreferenceInferrer(new AveragingPreferenceInferrer(model)); // 3. 选择邻居用户 // 使用NearestNUserNeighborhood实现UserNeighborhood接口, 选择最相似的三个用户 // 选择邻居用户可以基于'对每个用户取固定数量N个最近邻居'和'对每个用户基于一定的限制,取落在相似度限制以内的所有用户为邻居' // 其中NearestNUserNeighborhood即基于固定数量求最近邻居的实现类 // 基于相似度限制的实现是ThresholdUserNeighborhood UserNeighborhood neighborhood = new NearestNUserNeighborhood(3, similarity, model); // 4. 实现推荐引擎 // 使用GenericUserBasedRecommender实现Recommender接口, 基于用户相似度进行推荐 Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); Recommender cachingRecommender = new CachingRecommender(recommender); List<RecommendedItem> recommendations = cachingRecommender.recommend(1234, 10); // 输出推荐结果 for (RecommendedItem item : recommendations) { System.out.println(item.getItemID() + "\t" + item.getValue()); }
相关推荐
协同过滤-推荐系统业界实践,主要讲亚马逊和今日头条的推荐
协同过滤-图书馆图书推荐系统(JAVA,JSP,SSM,MYSQL)(毕业论文12544字,共34页,程序代码,MySQL数据库) 【运行环境】 Eclipse, IDEA JDK1.8(JDK1.7) Tomcat8(Tomcat7) 【技术栈】 JAVA, JSP, SSM, JQUERY, MYSQL, HTML, ...
基于python+Flask的协同过滤-文本相似度的图书推荐系统-毕业设计源码+使用文档(高分优秀项目).zip 该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试...
Python实现图书推荐系统(基于协同过滤-文本相似度)源码,Python实现图书推荐系统(基于协同过滤-文本相似度)源码,主要功能截图 用户基本模块:包含的主要功能有用户注册、登录,图书模块:包含的主要功能有根据...
推荐系统组队学习之协同过滤 - 推荐系统基础
基于用户的协同过滤推荐算法--开题报告.pdf基于用户的协同过滤推荐算法--开题报告.pdf基于用户的协同过滤推荐算法--开题报告.pdf基于用户的协同过滤推荐算法--开题报告.pdf基于用户的协同过滤推荐算法--开题报告.pdf...
适用工作项目、毕业设计,课程设计,项目源码均经过助教老师测试,运行无误,欢迎下载 ------------------------------------------------------------------------ 下载后请首先打开README.md文件(如有)
协同过滤算法的私人诊所-协同过滤算法的私人诊所系统-协同过滤算法的私人诊所系统源码-协同过滤算法的私人诊所管理系统-协同过滤算法的私人诊所管理系统java代码-协同过滤算法的私人诊所系统设计与实现-基于...
基于用户的协同过滤算法UserCF作业流程图.pdf基于用户的协同过滤算法UserCF作业流程图.pdf基于用户的协同过滤算法UserCF作业流程图.pdf基于用户的协同过滤算法UserCF作业流程图.pdf基于用户的协同过滤算法UserCF作业...
基于java实现协同过滤算法,并附带测试集,假设用户喜欢跟他过去喜欢的物品相似的物品 ,历史上相似的物品在未来也相似 ,给定用户u,找到他过去喜欢的物品的集合R(u). , 把和R(u)相似的物品推荐给u.
基于协同过滤算法商品推荐系统论文-java-文档-基于协同过滤算法商品推荐系统文档 论文: !!!本文档只是论文参考文档! 需要项目源码、数据库sql、开发文档、毕设咨询等,请私信联系~ ① 系统环境:Windows/Mac ②...
协同过滤算法的私人诊所-协同过滤算法的私人诊所系统-协同过滤算法的私人诊所系统源码-协同过滤算法的私人诊所管理系统-协同过滤算法的私人诊所管理系统java代码-协同过滤算法的私人诊所系统设计与实现-基于...
公用部分功能: 首页展示商品, 首页轮播图, 分类展示商品, 商品详情展示, 协同过滤推荐的商品展示, 网站公告列表及详情展示, 全部商品 买家功能: 登录,注册, 退出,个人信息管理,密码修改,我的订单,我的留言,留言...
基于协同过滤和spark-als的电影推荐系统源码+项目说明.zip基于协同过滤和spark-als的电影推荐系统源码+项目说明.zip基于协同过滤和spark-als的电影推荐系统源码+项目说明.zip基于协同过滤和spark-als的电影推荐系统...
本系统在ANT下可以直接运行,...电影推荐系统中引用了Apache Mahout提供的一个协同过滤算法的推荐引擎Taste,它实现了最基本的基于用户和基于内容的推荐算法,并提供了扩展接口,使用户方便的定义和实现自己的推荐算法。
协同过滤算法的图书推荐系统-协同过滤算法的图书推荐系统的设计与实现代码-java-ssm-基于ssm的协同过滤算法的图书推荐系统项目-代码-源码-项目-系统-毕设-网站 1、技术栈:java,s sm,vue,ajax,maven,mysql,...
一种基于协同过滤推荐算法-K最近邻分类算法的App推荐方法.docx一种基于协同过滤推荐算法-K最近邻分类算法的App推荐方法.docx一种基于协同过滤推荐算法-K最近邻分类算法的App推荐方法.docx一种基于协同过滤推荐算法-K...
MovieLens-100k协同过滤推荐算法数据集
python django javascript bootstrap jquery 协同过滤 推荐算法 机器学习 影片显示、影片分类显示、热门影片排序显示、收藏影片排序显示、时间排序显示、评分排序显示、算法推荐、影片搜索、影片信息管理 python基于...
基于协同过滤算法使用hadoop实现的商品推荐系统+源代码+文档说明 -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96...