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

【译】mahout in action 3.1 Preference对象

阅读更多
一个推荐引擎的输入数据是评分数据:它喜欢什么以及多少。所以,Mahout recommenders的输入数据是一组简单的“userID”,“itemID”,和“评分数据”元组,当然,这是一个大的集合。评分数据有时候会被省略。

3.1.1 Preference对象

Preference是一个最基础的概念,它表现一个单一的userID,itemID和一个评分数据。这个对象表现为一个用户对一个项目的打分。Preference是一个接口,通常使用的实现类为GenericPreference。例如:创建一条记录,user(123),对item(456)的打分是3.0: new GenericPreference(123, 456, 3.0f)。

一组Preferences如何表现?如果你给出了一个合理的答案,如Collection<Preference> 或者 Preference[],大部分情况下,在Mahout APIs中不是这样实现的。Collections和arrays对处理海量Preference对象是无效的。如果你在Java中从未研究过上面的对象,你可能会感到困惑!

单个的GenericPreference包含20个字节的有用数据:一个8字节的user ID(Java long),8字节的item ID(long),4字节的分值(float)。这个对象的存在使GenericPreference包含的字节有惊人的增长:28个字节!这个变化依赖的是JVM的实现;这个数字是从苹果Mac OS X 10.6的64位Java 6 VM 得到的。由于上面的对象和其他线性问题,对这个对象来说,28个字节中包括8字节的参考值,另外20个字节的空格,在对象自身的表现内。由于上面的现象,因此一个GenericPreference对象已经比它需要多消耗了140%的存储。

为什么这么做?在recommender算法中,都需要所有评分数据的集合,这些评分数据是与一个用户或一个项目联系在一起的。在这样一个集合里,user ID或者item ID与所有好像多余的Preference对象将会是配套的。

3.1.2 PreferenceArray和实现

进入PreferenceArray,这个接口的实现表现为一个具有类似与数组的API的分值的集合。例如,GenericUserPreferenceArray表现为一个用户的所有打分.它在内部包括一个单一的user ID,一系列的item IDs,一系列的评分值。在一个用户的所有打分中,需要占用12个字节的内存(一个8字节的item ID和一个4字节的评分值)。把它与需要一个完整的Preference项目的大约48个字节相比较。这个4字节内存,包括对齐这个特殊的实现,
但它也提供了小的性能提升,更小的对象必须被垃圾回收器分配和检查。比较图3.1 and 3.2去理解这些保存是如何完成的。

图3.1效率较低的评分值的表现,利用一系列的Preference对象。灰色的区域代表上面的对象。白色的区域是数据,它包括引用对象。

图3.2利用GenericUserPreferenceArray更有效的表现

下面的代码表现一个PreferenceArray的典型的构造和使用
列表3.1在一个PreferenceArray中设置评分值
PreferenceArray user1Prefs = new GenericUserPreferenceArray(2); 
user1Prefs.setUserID(0, 1L); //A 
user1Prefs.setItemID(0, 101L); 
user1Prefs.setValue(0, 2.0f); //B 
user1Prefs.setItemID(1, 102L); 
user1Prefs.setValue(1, 3.0f); //C 
Preference pref = user1Prefs.get(1); //D 

A 为所有打分设置user ID
B User 1当前为item 101的打分2.0
C User 1为item 102的打分3.0
D Item 102的一个Preference实现

同样这里存在一个称为GenericItemPreferenceArray的实现,它内部的所有分值,与item关联而不是与user关联。它的目的和用法都是完全类似的。
  • 大小: 2.8 KB
  • 大小: 1.8 KB
分享到:
评论
1 楼 zhzhl202 2011-04-11  
翻译的文字很流畅。
现在市面上只有前9章得内容呢,完整的要11年6月才能出来呢

相关推荐

    Mahout In Action英文完整版

    ### Mahout in Action:全面解析 #### 一、概述 《Mahout in Action》是一本由Sean Owen、Robin Anil、Ted Dunning和Ellen Friedman合著的专业书籍,旨在深入介绍Apache Mahout这一强大的机器学习库。该书的网上...

    mahout in action中的源码

    《Mahout in Action》是一本深入探讨Apache Mahout机器学习框架的专业书籍,其源码提供了丰富的实践示例和深入理解Mahout算法的机会。在GitHub上,你可以找到这些源码的完整版本,链接为。下面,我们将详细探讨...

    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源代码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 实战中文版 高清 完整

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

    Mahout in Action 最新版+完整版

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

    mahout in action 英文完整版(2012)

    ### Mahout in Action 英文完整版(2012)关键知识点解析 #### 标题:Mahout in Action 英文完整版(2012) - **Mahout in Action**:本书主要介绍了Apache Mahout框架的应用和技术细节。Mahout是一个开源项目,专注...

    mahout in action中文版 最全的 docx

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

    mahout_in_action_中文版

    ### Mahout概述与应用场景 #### 一、Mahout简介 Mahout是Apache基金会下的一个开源机器学习项目。该项目主要关注于构建高效的机器学习算法库,尤其是面向大规模数据集的处理需求。Mahout的设计理念强调了算法的可...

    Mahout In Action带书签完整版

    ### Mahout In Action – 关键知识点解析 #### 一、Mahout概述 - **起源与发展**:Mahout作为Apache基金会下的一个开源项目,专注于提供可扩展的机器学习库。其核心算法涵盖了机器学习的主要领域,包括但不限于协同...

Global site tag (gtag.js) - Google Analytics