Mahout是一个机器学习,推荐引擎的开源软件。官网地址:http://mahout.apache.org/
推荐原理可以参考:http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/index.html
1. 推荐原理
基于用户的 CF(User CF)(Collaborative Filtering, 简称 CF),
基于用户的 CF 的基本思想相当简单,基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。计算上,就是将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,找到 K 邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户没有偏好的未涉及物品,计算得到一个排序的物品列表作为推荐。图 2 给出了一个例子,对于用户 A,根据用户的历史偏好,这里只计算得到一个邻居 - 用户 C,然后将用户 C 喜欢的物品 D 推荐给用户 A。
首先从官网上下载mahout的发布包,当前版本是0.7.
2. 创建用户喜好文件
参考mahout in action, 创建一个用户(User)和商品(Item)的喜好文件intro.csv, 一行一条:
用户id,ItemID, 喜好程度 1,101,5.0 #用户1对101的打分为5.0 1,102,3.0 1,103,2.5 2,101,2.0 #用户2对101的打分为2.0 。。。
喜好关系见图,具体见附件
3. 创建工程
创建一个pom工程的文件,在pom.xml中添加依赖
<dependency> <groupId>org.apache.mahout</groupId> <artifactId>mahout-core</artifactId> <version>0.7</version> <type>jar</type> <scope>compile</scope> </dependency>
主程序:
public class RecommenderIntro { /** * @param args * @throws IOException * @throws TasteException */ public static void main(String[] args) throws IOException, TasteException { //Load the data file DataModel model = new FileDataModel(new File("src/main/resources/intro.csv")); UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood (2, similarity, model); //reate the recommender engine Recommender recommender = new GenericUserBasedRecommender( model, neighborhood, similarity); //For user 1, recommend 2 item List<RecommendedItem> recommendations = recommender.recommend(1, 2); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); } } }
4 运行结果输出:
RecommendedItem[item:104, value:4.257081] RecommendedItem[item:106, value:4.0]
表示对用户1的推荐为104,106.
相关推荐
Apache Mahout是一个基于Java的开源机器学习库,它为大数据处理提供了丰富的算法和工具,用于实现推荐系统、分类和聚类。"mahout-0.3.tar"是Mahout项目在0.3版本的源码或二进制发行版的压缩文件,通常包含了项目的源...
Mahout作为Apache Software Foundation(ASF)旗下的一个开源项目,致力于提供一系列可扩展的机器学习算法实现,以帮助开发者更轻松地构建智能应用。Mahout涵盖了许多重要的机器学习任务,如聚类、分类、推荐系统...
Apache Mahout是一个基于Hadoop的分布式机器学习框架,主要用于实现可扩展的机器学习算法。在本节中,我们将深入探讨Apache Mahout的核心特性,推荐系统引擎,聚类和分类技术,以及Mahout的使用场景和适用人群。 ...
第五章mahout in action的例子在java 8中的实现 您可以从下载数据集 解压文件夹 data 中的 zip 并将文件 ratings.dat 重命名为 libimset-ratings.dat,文件性别.dat 到 libimset-gender.dat 在运行该程序之前,请...
例如,第一个交易记录为`[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]`。 ##### 构建FP树 假设已经完成了数据的预处理工作,接下来我们将...
Mahout作为一个用Java实现的开源机器学习库,自2008年起经历了从Lucene子项目到Apache顶级项目的转变,旨在提供可扩展的机器学习算法,支持聚类、分类和协同过滤等任务,且能在单机或Hadoop平台上运行。 Mahout支持...
在"wordcount"例子中,mapper接收文本行,对每一行进行分词,生成键值对(单词作为key,出现次数1作为value)。 接着是Reduce阶段,Hadoop将相同的key分组并将对应的values(出现次数)相加,从而得到每个单词的...
Yahoo推出的Cocktails框架就是一个例子,它允许开发人员使用JavaScript在浏览器、服务器甚至移动设备上构建统一的应用程序,进一步推动了Hadoop的跨平台应用。 综上所述,Hadoop因其投资热度、广泛应用、易用性提升...
第一部分 Hadoop——一种分布式编程框架第1章 Hadoop简介 21.1 为什么写《Hadoop 实战》 31.2 什么是Hadoop 31.3 了解分布式系统和Hadoop 41.4 比较SQL数据库和Hadoop 51.5 理解MapReduce 61.5.1 动手扩展一个简单...
第一部分“BACKGROUND AND FUNDAMENTALS”(背景和基础)介绍了Hadoop的基本概念和原理。 第二部分“DATALOGISTICS”(数据物流)涵盖了如何将数据移动进Hadoop和从中移动数据出来,以及数据序列化——处理文本和...
第一印象——两个简单的例子 17 2.1.1 简单的位置偏好数据集 17 2.1.2 存储汽车品牌和型号数据 22 2.2 使用多种语言 30 2.2.1 MongoDB驱动 30 2.2.2 初识Thrift 33 2.3 小结 34 第3章 NoSQL接口与交互 36 ...
"Gestion_Restaurant"项目就是一个典型的例子,它是一款采用Java编程语言开发的餐厅管理系统,旨在帮助餐饮业提升运营效率和服务质量。本文将深入探讨该项目的核心知识点,帮助读者理解其设计原理和实现机制。 首先...