`
奔跑的羚羊
  • 浏览: 576316 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【译】mahout in action 3.3 内存中的DataModel

阅读更多
这是个抽象概念,在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组件

1
4
分享到:
评论
1 楼 leeing.org 2011-04-07  
good!

相关推荐

    mahout in action中的源码

    源码仓库中的`MiA-master`包含了《Mahout in Action》一书中的所有示例代码,这对于读者理解和实现书中介绍的算法非常有帮助。你可以跟随这些示例,逐步学习如何使用Mahout进行数据预处理、模型训练和评估。通过实际...

    Mahout In Action英文完整版

    《Mahout in Action》这本书不仅详细介绍了Mahout的核心技术和应用场景,还深入探讨了如何将其应用于实际项目中。无论是对于初学者还是有经验的数据科学家来说,都是一本不可多得的好书。通过对本书的学习,相信读者...

    Mahout in Action完整版本(英文)

    一些支持 Map-Reduce 的集群实现包括 k-Means、模糊 k-Means、Canopy、Dirichlet 和 Mean-Shift。  Distributed Naive Bayes 和 Complementary Naive Bayes 分类实现。

    Mahout in Action 2012

    Apache Mahout是一个Apache开源数据挖掘和机器学习项目,它提供了一系列基于...《Mahout in Action》作为一本实践导向的书籍,提供了详尽的理论知识和代码示例,是学习和应用Mahout进行数据挖掘和机器学习的理想选择。

    Mahout in action 实战中文版 高清 完整

    《Mahout in Action》是一本深入探讨Apache Mahout的实战指南,它详尽地介绍了如何在Hadoop平台上实现机器学习算法。这本书的中文高清完整版为中国的读者提供了方便,使得更多的开发者可以理解并掌握这一强大的数据...

    mahout in action源代码maven编译jar包

    《Mahout in Action源代码Maven编译JAR包详解》 Apache Mahout是一个流行的机器学习库,广泛用于数据挖掘和大数据分析。《Mahout in Action》这本书是Mahout技术的权威指南,提供了丰富的示例代码供读者实践。然而...

    Mahout In Action 2012 Source Code

    Mahout In Action 2012.pdf 配套源代码 Mahout In Action 2012 Source Code 原书 Mahout In Action 2012 版本 源代码。 帮助理解推荐系统的常用算法,分布式信息挖掘技术。

    Mahout in Action 最新版+完整版

    ### Mahout in Action 最新版+完整版 #### 知识点概述 《Mahout in Action》是一本关于Apache Mahout的权威指南,该书详细介绍了如何利用Mahout进行推荐系统、聚类分析以及分类等机器学习任务。此版本为2012年的...

    Mahout in action清晰完整版

    Mahout In Action 清晰完整版 聚类分析、算法推荐

    mahout in action中文版 最全的 docx

    《Mahout in Action》是一本详细介绍Apache Mahout的书籍,中文版提供了全面的翻译,适合对机器学习和大数据处理感兴趣的读者。Mahout是一个Apache基金会的开源项目,专注于机器学习算法,它在Java语言基础上构建,...

    mahout in action 英文完整版(2012)

    综上所述,《Mahout in Action》这本书覆盖了从理论到实践的多个方面,不仅详细介绍了Mahout的核心技术和算法实现,还提供了丰富的案例和实践经验分享,对于希望深入了解Mahout并将其应用于实际项目中的读者来说是一...

    Mahout_in_Action

    ### Mahout in Action #### 一、概览 《Mahout in Action》是一本全面介绍Apache Mahout这一开源机器学习库的专业书籍。本书由Sean Owen、Robin Anil、Ted Dunning和Ellen Friedman共同撰写,深入浅出地讲解了...

Global site tag (gtag.js) - Google Analytics