这是个抽象概念,在Mahout中,recommender的输入数据是DataModel。DataModel的实现为各种推荐器算法需要的数据提供了有效的使用。例如,一个DataModel可以在输入数据中,提供一个包括所有user IDs的列表,或提供与一个item相关联的所有分值,或者提供一个为一系列item IDs打分的所有用户的列表。我们将会集中研究一些highlights;一个关于DataModel的API的更详细的描述,可以通过在线文档中找到。
3.3.1 GenericDataModel
这个我们先来看一下,最简单的实现(在内存中实现),GenericDataModel。当你想用编程的方法,而不是基于一个现存的外部数据资源。例如一个文件或相关数据库在内存中创建你的数据表现时,这是非常合适的。它只是以这种形式把分值当作输入数据,这个形式就是一个FastByIDMap映射user IDs到有这些用户的数据的PreferenceArrays上。
列表3.2 基于GenericDataModel,定义输入数据
FastByIDMap<PreferenceArray> preferences =
new FastByIDMap<PreferenceArray>();
PreferenceArray prefsForUser1 = new GenericUserPreferenceArray(10); //A
prefsForUser1.setUserID(0, 1L);
prefsForUser1.setItemID(0, 101L); //B
prefsForUser1.setValue(0, 3.0f); //B
prefsForUser1.setItemID(1, 102L);
prefsForUser1.setValue(1, 4.5f);
… (8 more)
preferences.put(1L, prefsForUser1);// C
DataModel model = new GenericDataModel(preferences); //D
A为user 1建立PreferenceArray
B添加第一个preference,在刚刚创建的10中
C把user 1的preference添加到输入数据上
D创建DataModel
一个GenericDataModel使用多少内存?储存的分值的数目占内存占用的绝对优势。通过一些经验揭示,每一preference占用28个字节的Java heap space 。它包括所有的数据和其他次要数据结构--如指数。如果你喜欢你也可以尝试一下;下载一个GenericDataModel,调用 System.gc() ,几次后,比较Runtime.totalMemory()和Runtime.freeMemory()的结构。这是未加工过的,但应该可以给出一个合理的估计,这个估计就是数据占有多少内存。
3.3.2 基于文件的数据
通常我们不会直接地使用GenericDataModel,而是可能使用FileDataModel: FileDataModel从一个文件中读取数据,并可以在内存中储存作为结果的分值数据,从而转化为GenericDataModel。
几乎任何一个合理的文件都将会这么做。我们在第一节里已经看到了一个这样文件的例子,在这节里,我们创造了一个简单的用逗号分割数据的文件,在这个文件里,每一行都包含一个数据:user ID,item ID,分值。使用Tab分割的文件也同样这么做。如果它们的名字各自以“.zip” 或“.gz”为后缀,使用对应的zip和gzip解压。在压缩格式储存这一数据是一个好想法,因为它是巨大的,并且被压缩好的。
3.3.3 Refreshable组件
分享到:
相关推荐
源码仓库中的`MiA-master`包含了《Mahout in Action》一书中的所有示例代码,这对于读者理解和实现书中介绍的算法非常有帮助。你可以跟随这些示例,逐步学习如何使用Mahout进行数据预处理、模型训练和评估。通过实际...
《Mahout in Action》这本书不仅详细介绍了Mahout的核心技术和应用场景,还深入探讨了如何将其应用于实际项目中。无论是对于初学者还是有经验的数据科学家来说,都是一本不可多得的好书。通过对本书的学习,相信读者...
一些支持 Map-Reduce 的集群实现包括 k-Means、模糊 k-Means、Canopy、Dirichlet 和 Mean-Shift。 Distributed Naive Bayes 和 Complementary Naive Bayes 分类实现。
Apache Mahout是一个Apache开源数据挖掘和机器学习项目,它提供了一系列基于...《Mahout in Action》作为一本实践导向的书籍,提供了详尽的理论知识和代码示例,是学习和应用Mahout进行数据挖掘和机器学习的理想选择。
《Mahout in Action》是一本深入探讨Apache Mahout的实战指南,它详尽地介绍了如何在Hadoop平台上实现机器学习算法。这本书的中文高清完整版为中国的读者提供了方便,使得更多的开发者可以理解并掌握这一强大的数据...
《Mahout in Action源代码Maven编译JAR包详解》 Apache Mahout是一个流行的机器学习库,广泛用于数据挖掘和大数据分析。《Mahout in Action》这本书是Mahout技术的权威指南,提供了丰富的示例代码供读者实践。然而...
Mahout In Action 2012.pdf 配套源代码 Mahout In Action 2012 Source Code 原书 Mahout In Action 2012 版本 源代码。 帮助理解推荐系统的常用算法,分布式信息挖掘技术。
1. **协同过滤(Collaborative Filtering, CF)/ 推荐引擎**:这是Mahout中最广为人知的功能之一,主要用于构建个性化推荐系统。通过对用户行为数据进行分析,能够预测用户可能感兴趣的产品或内容,并据此生成推荐...
### Mahout in Action 最新版+完整版 #### 知识点概述 《Mahout in Action》是一本关于Apache Mahout的权威指南,该书详细介绍了如何利用Mahout进行推荐系统、聚类分析以及分类等机器学习任务。此版本为2012年的...
Mahout In Action 清晰完整版 聚类分析、算法推荐
《Mahout in Action》是一本详细介绍Apache Mahout的书籍,中文版提供了全面的翻译,适合对机器学习和大数据处理感兴趣的读者。Mahout是一个Apache基金会的开源项目,专注于机器学习算法,它在Java语言基础上构建,...
综上所述,《Mahout in Action》这本书覆盖了从理论到实践的多个方面,不仅详细介绍了Mahout的核心技术和算法实现,还提供了丰富的案例和实践经验分享,对于希望深入了解Mahout并将其应用于实际项目中的读者来说是一...
### Mahout in Action #### 一、概览 《Mahout in Action》是一本全面介绍Apache Mahout这一开源机器学习库的专业书籍。本书由Sean Owen、Robin Anil、Ted Dunning和Ellen Friedman共同撰写,深入浅出地讲解了...