2 推荐器

2   推荐器


本章的主要内容:

*  在Mahout中推荐器Recommender是什么样的

*  运行第一个推荐器Recommender

*  评估推荐引擎的准确和质量

*  用GroupLens网站的真实的数据来评估推荐器


每天我们都会有对周围的东西有一些看法和观点,这些东西可能是我们喜欢的,不喜欢的,还有莫不关心的东西 ,这些通常发生在不知不觉中。

例如,当你倾心听一首来自收音机的歌时,要么它引起妮的注意,要么它让妮讨厌,要么 妮根本就没有在意。同样的情况会发生在xxx.

虽然大家的品味经常在变,但他们都遵循一定的模式。人们往往喜欢的事情,类似于他们喜欢的其他事情。因为我喜欢吃熏肉、生菜、番茄组成的三明治,你可以猜到我想吃总会三明治,它们通常是拥有一样的火鸡的三明治。同样,大家往往喜欢大家喜爱的类似的事情。当一个朋友进入设计学校的时候,他看到几乎所有其他设计专业的学生,都拥有一台苹果电脑,这并不令人惊讶,因为她已经是一个终生Mac用户 

其实我们可以利用这些模式来预测,某些喜欢的和不喜欢的事情。如果我们让一个陌生人站在你的面前,问你是否知道她喜欢第三部《Lord of the Rings film》?除了猜测,你可能没有更好的办法。但是,如果她告诉你,她喜欢前两部电影。如果她不喜欢第三部,那是不可能的。换一句话,如果她说她讨厌这部电影,或者我们会问“天哪,怎么可能”。你可以直接猜到第三部电影肯定在她喜欢的列表上。推荐器几乎可以预测到这些模式,并利用他们来发现你不了解的新的,令人满意的事情。

2.1 什么是推荐器

因为某种原因你从书架上取到这本书。也许你是在知道的其他书本,看到了这本书, 并觉的它有用。或者觉得书店把它放在这个位置,是因为喜欢这些书的人也喜欢这本书。也或许你在一个同事的书架上看到这本书,这位同事与你一样对机器学习很有兴趣。也有可能他可能直接推荐你看这本书。

在这一章,我们将会深入研究人们产生推荐,发现新事物的一些方法。当然还有这些进程,在软件中如何利用mahout实施.我们已经设计了一些方法:发现我们可能喜欢的项目,从而可以留心相似品味的人,看看他们喜欢的东西。换句话说,我们可以算出什么样的项目,会像我们以前喜欢的项目。另外我们可以通过留心观察其他人的选择。这些描述了推荐引擎算法的两个主要类别:“基于用户(user-based)” 和 “基于项目(item-based)”推荐器。

2.1.1 是基于协同过滤推荐,还算基于内容的推荐严格的说,这里有协同过滤(CF)的例子。根据也只能根据,用户与项目的关系的知识,从而产生推荐器。这些技术并不需要识别项目本身的属性。这在某种程度上这是一个优势。推荐器框架根本不关心,这个项目是否是书本、主题公园、花、或者是其他的人,因为它们的属性中没有任何一个会被当作输入的。

这里有根据项目属性而成立的其他方法,通常被认为是“基于内容(content-based)”推荐算法。例如,如果有一个朋友把这本书推荐给你,是因为这是一本Manning出版书,这位朋友喜欢其他的Manning出版的书,那么这位朋友正在从事的事情,大概就是“content-based”推荐器算法。这个算法是依据这本书的一个属性:出版商。Mahout推荐框架不直接实施这种算法,虽然它提供了一些方法,把项目属性信息加入它的计算。同样的,它可能在技术上被认为是一个协同筛选框架。

这些算法没有问题;相反的是,它们同样可以表现的相当好。但是它们必要是特定领域的方法,试图编纂进一个框架将是相当困难的。建立一个有效的content-based书本推荐算法,人们将必须决定一本书中的哪个属性:页数,作者,出版商,颜色,字体,那个是有意义的,并达到那种程度。这种知识中没有一个是可以翻译成另外一个领域的;预定这种方式的推荐器,对选择那个是更好的披萨没有帮助。

也就是因为这个原因,Mahout将不会太多讨论这种形式的推荐器。这些观点被锁定在Mahout提供的事情中,并置入高阁;在本章将会举个例子,我们会为一个日期网站建立一个推荐器。在随后介绍的Mahout为基于协同过滤推荐算法进行的实施后,我们将会更详细的讨论它们与contene—based算法的关系。

2.1.2 主流推荐算法
到目前为止,很多人可能已经了解到,如amazon或netflix这样的网站,在现实中实施的推荐算法:根据浏览和购买历史,网站会生产一个产品列表,它的推荐可能会吸引你。这种类型的推荐引擎自从1900就已开始出现,但直到最近它才进入大量的计算机研究领域,被精心设计和研究。随着这些技术变得越来越主流,对它们的要求也不断增加,提供的开源实现也同样如此。随着日益增加的,可理解的,低层本的运算能力,意味着推荐引擎正变的越来越易理解并广泛使用。

事实上,推荐技术对客户来说不仅仅是像DVD这类推荐的事物。这种方法通常估计大量众多的事物之间的相互关联。一个人可以用相同的技术把DVD推荐给客户,估计那个客户最有可能喜欢某个DVD.在一个社会网络中,一个推荐器可以把人推荐给别外一些人。





2.2 运行第一个推荐引擎




2.2.1 建立输入的数据



2.2.2 创建一个推荐器Recommender



2.2.3 分析输出




2.3 评估推荐器



2.3.1 训练数据和得分




2.3.2 运行一个推荐评估





2.3.3   对结果的判断


2.4 通过预测和回访来评估



2.4.1 运行一个RecommenderIRStatsEvaluator



2.4.2 预测和回访中看出问题



2.5 评估GroupLens数据集


2.5.1 抽取推荐器使用的输入数据



2.5.2 另一个推荐器的体验



2.6 总结

这一章,我们介绍了关于推荐引擎的一些观点。我们已经使用小部分的数据来运行一个有代表性意义的推荐器,并解释了结果。

与此同时,我们对推荐引擎的输出结果进行了一些大体评估,我们也会在后面几章频繁的对结果进行评估。




你可能感兴趣的:(2 推荐器)