随笔分类 - Mahout
摘要:6.2分布式处理一个基于项目的推荐算法对于如此规模的数据,我们希望使用分布式处理的方法。首先,我们会对基于项目的算法的分布式变异版本进行描述。它在某种程度上和以前非分布式的版本很相似。当然它看起来是完全不同的,因为以前的算法未曾被翻译到分布式的世界。接下来我们要用Hadoop来跑一跑。6.2.1构造一个协同矩阵这个算法由一些简单的矩阵操作都成,它易于解释并且容易实现。如果你上次接触矩阵是好几年前了,不要担心,最棘手的操作只有矩阵乘法(如果您连矩阵乘法都不知道,拜托,那还搞啥数据挖掘...)。这里保证没有什么行列式、行分解、特征值等等。回忆一下,基于项目的推荐,我们依赖于ItemSimilari
阅读全文
摘要:6分布式推荐计算本章概述:分析维基百科上的一个大数据集利用Hadoop和分布式计算产生推荐结果伪分布式上存在的非分布式推荐本书着眼于持续增长的数据集,从10条到100,000再到1千万再到1.7千万。不过这依然是中等大小的推荐系统所处理的数据。本章依然放手一搏,处理了来自维基百科语料库中的1.3亿条数据,这些数据主要是以文章对文章的连接形式存在的。在这些数据集中,文章既充当了用户,也充当了项目。这也显示了Mahout在特定情形下十分灵活的应用。为满足演示目的,1.3亿的数据还是可管理的。但是对于单机处理推荐过程还是有一些困难的。这就需要使用一种新的推荐算法,通过Mahout基于的Mapredu
阅读全文
摘要:3.3 处理偏好值为空的数据(布尔偏好) 有时推荐引擎中出现偏好值为空的记录。它代表了用户和项目是关联的,但是并没有表现出关联程度。举了例子,一个新闻网站根据用户已阅读内容为用户推荐新闻。“已阅读”使一个用户和一个项目产生了关联,然而这是唯一能够获取的信息。一般网站也不会让用户去给文章做个排序,更不会让用户再做除了阅读之外的其他什么事了。所以我们仅仅知道用户和那些文章关联了,而再也没有其他的内容了。 面对这样的情形,我们别无选择。这里不会有偏好值。后续几章将会依然提供处理如此情形的技术和建议。然而有时我们忽略掉偏好值也未尝不是坏事,只要情形需要。 丢掉用户和项目之间的联系很容易,或者说我...
阅读全文
摘要:3.2 内存中的数据模型 DataMode是推荐器总输入数据的一种抽象。推荐算法需要用它来实现高效的访问数据。例如,DataModel可以在输入数据中提供一列用户,或者提供与某项目关联的所有偏好值,也或者提供对一个项目集合感兴趣的所有用户ID。本小节精选出一些关于DataModel的API来做一番介绍,这些API可以再官方文档中查阅到详细说明。3.2.1 GenericDataModel GenericDataModel是最简单的数据模型的实现,它是“内存版”的。当你希望在内存中构建你的数据模型时,它比较适合你,而非基于硬盘中的文件和数据库。它所接收的偏好是以FastByIDMap存储用户..
阅读全文
摘要:3推荐器的数据表达本章概要:Mahout的推荐数据如何呈现DataModel 的实现和使用布尔型的偏好数据处理推荐结果的好坏取决于数据的数量和质量。“巧妇难为无米之炊”用在这里再合适不过了。数据质量高本身是好事,而且数据量大也是好事。推荐算法天生就是数据密集型的,它们擅长处理大数据。算法运行的性能和数据的质量和呈现形式直接相关。一个好的数据结构可以影响算法的处理能力、处理规模以及很多其他性能。本章探索了一些关键的类,这些类主要负责呈现数据、访问推荐器相关数据。你将会了解为何Mahout提供的数据表达方式会影响整个框架的效率和可扩展性。本章将会详细介绍一个Mahout中关键的概念,它提供了数据访
阅读全文
摘要:2.4 评估查准率(precision)和召回率(recall) 我们可以从更广义的角度去看待推荐问题:它并不是严格的要去估计偏好指数来提供推荐结果,也不总是要向用户提供准确的偏好指数的值。很多时候,我们只需从好到坏列出推荐排序,事实上,有些时候我们只需列出很少一部分排名考前的就可以了。 这样来看,我们也可以利用经典的信息检索中的度量方法去评估分类器:查准率和召回率。这些术语被典型的用在搜索引擎之中。而且,搜索引擎正是为一个查询返回一些排名较好的结果。 一个搜索引擎虽然要尽量多的返回相关结果,但是一定不能在靠前的结果中返回一些不相干的结果。查准率描述的是在靠前的结果中相关结果所占的比例,我们.
阅读全文
摘要:2.3 评估推荐器 推荐器是一个工具,它用来解决“如何为一个用户给出最好的推荐”这样的问题。在得出结果之前,最好先弄清楚问题。究竟怎样才是一个好的推荐结果?我们如何才能得出这样的结果?这一章剩下的部分将停下来探索推荐器的评估,因为这是用来了解特定推荐器的有力工具。 最理想的推荐器会像巫师一样某明奇妙的猜到你所喜欢的东西。它可能会知道你有多喜欢一个东西,甚至你都没有见过它或者从未表达过你是否喜欢它。一个推荐器能够精确的得出你对于每个项目的偏好指数,然后按照偏好指数排名罗列出来,这就是一个好的推荐。 确实,为一些或者全部的项目打分评级是推荐引擎常见做法。所以,评估推荐器的一种方案就是评估它所产生的
阅读全文
摘要:2 推荐器的介绍本章概要: Mahout中的推荐器 推荐器实战一瞥 推荐引擎精度与质量评估 基于一个真实数据集的测试:GroupLens 每天我们都会对一些喜欢的、不喜欢的甚至不关心的事物进行一些评价。这中行为往往是无意识的。你在收音机上听到一首歌,你可能会因为它的美妙或者难听而注意到它,也可能直接忽略。这样的情形也会非常普遍的发生在人们对于T恤、沙拉酱、滑雪场、发型、脸型或者电视节目。 尽管人们的口味多种多样,但是它遵从一定的模式。人们往往会喜欢和他们偏好相似的事物。比如我爱吃培根生菜番茄三明治,你可以猜到我也喜欢火鸡三明治,因为这两种三明治很相似。或者说,我们可以认为一个人很可能会喜欢..
阅读全文