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

【译】mahout in action 2.3 推荐器考核

阅读更多
这是一个推荐引擎的工作,用来解释下面的问题:“对用户来说,怎么的推荐数据才是最好的”。在搞清楚这个的答案之前,我们首先应该解决这个问题。一个好的推荐数据精度指的是什么?我们需要知道产出一个怎么样的推荐器来产生他们?本节的下面部分将会探讨对一个推荐器的考核。因为它是一个工具,当我们开始思考特殊的推荐系统时,它将会是很有用的。

最优秀的推荐器,能够感知你的心灵。它以某种方式知道你可能很喜欢某个的项目,而这些项目你还没有看过或表达过任何喜好。一个优秀的推荐器可以预测所有的分值,并且根据未来的分值和已经打的分值进行排序,从而推荐出最有可以的项目

确实,大部分的推荐引擎也试图通过一些或所有其他的项目估计比率来工作。所以,考核一个推荐器的推荐能力的一种方法,就是考核它估计分值的质量:考核估计分值与实际分值的相似程度。

2.3.1 训练数据和打分

这些实际的分值虽然并不存在。当然没有人知道你在未来会如何喜欢一些新的项目(包括你自己)。通过把一小部分的真实数据集合置于一旁,把它们当作试验数据,这可以模仿一个推荐引擎。这些试验分值不存在于训练数据中,训练数据是为考核过的推荐引擎提供参考:它是除了试验数据的所有数据。相反,这个推荐器是为漏掉的试验数据估计分值,考核就是让它与真实值对比。

在这里,为推荐器生成一个“分值”是相当简单的。例如,在估计分值和实际分值中可以计算出平均差异。这种类型的得分,低一点的分值是比较好的,因为那意味着估算与真实值的差异是相当小的。0.0是完全匹配值,即在估计值和实际值之间没有一点不同。

有时差异的均方根是非常有用的: 在实际值和估计值之间差异值的平均值的平方根。这个值依然是越低越好。

项目1项目2项目3
真实值3.05.04.0
估计值3.52.05.0
差值0.53.01.0
差值的平均值= (0.5 + 3.0 + 1.0) / 3 = 1.5
均方根=√((0.52 + 3.02 + 1.02) / 3) = 1.8484

表2.1 平均差异和均平方根算法的一个演示

上面的表格显示了一组真实值和估计值之间的差异,以及它们如何形成的得分。最重要的是均方根可以除去那些尚有很大差距的估计值,如这里的项目2,这个结果还是很令人满意的。例如,被2点分开的估计值可能比两倍还多,这和被1点分开的估计值是一样的糟糕。因为这个简单的平均差异可能理解起来更直观,更容易,我们将会在下面的例子中使用它。

2.3.2运行RecommenderEvaluator

让我们再来看一下例子中的代码,评估一个简单的推荐器,这个推荐器是我们在较少的数据集合上创造的:

列表2.3配置运行一个推荐器的一个评估
RandomUtils.useTestSeed(); //A
DataModel model = new FileDataModel(new File("intro.csv"));
RecommenderEvaluator evaluator =
new AverageAbsoluteDifferenceRecommenderEvaluator();
RecommenderBuilder builder = new RecommenderBuilder() { //B
@Override
public Recommender buildRecommender(DataModel model)
throws TasteException {
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood =
new NearestNUserNeighborhood(2, similarity, model);
return
new GenericUserBasedRecommender(model, neighborhood, similarity);
}
};
double score = evaluator.evaluate(
builder, null, model, 0.7, 1.0); //C
System.out.println(score);

A 只用在可重复结果的例子中
B 建立下面的推荐器
C 用百分之七十的数据来训练;余下的百分之三十来测试

大部分的action发生在evaluate()。在RecommenderEvaluator内部把数据分成一个训练和测试集合,建立一个新的训练模型(DataModel)和推荐器来试验,把它的估计值和实际的试验数据对比。

注意我们不会通过这种方法否定一个推荐器。这是因为,这个方法内部将需要围绕一个最新创造的训练模型(DataModel)来建立一个推荐器。所以我们必须提供一个对象,这个对象可以建立一个来自与数据模型(DataModel)的推荐器,既一个推荐器的构造者(recommenderbuilder).在这里我们进行了一个如同我们在第一节里努力进行的实施。

2.3.3 评估结果

程序执行后会在输出一个结果:分数,它可以表示这个推荐器是效果。这样你就可以简单的看结果: 1.0。虽然存在随机性,在evaluator内部选择使用的测试数据,但是这个结果应该是一致性。因为它都是调用RandomUtils.useTestSeed(),每一次生成的数据的随机性是一致的。这仅仅是在这种例子和单元测试中使用,来保证可重复的结果。所以请不要在你实际的代码中使用。

这里,这个值意味着什么,依赖于我们使用的实现AverageAbsoluteDifferenceRecommenderEvaluator。通常,结果1.0又意外着,推荐器估计一个值,这个值偏离实际值为1.0。

在1到5的范围内,1.0这个值不算大,但一些小数据从这里开始。你的结果可能与数据集合随机分解的不同,因此training和test的集合在每次运算中都可能不同。

这个技术可以适用于任何的Recommender和DataModel。用均方根分值,代替有RMSRecommenderEvaluator的实施的AverageAbsoluteDifferenceRecommenderEvaluator

对evaluate()的0参数也可以代替为DataModelBuilder的一个实例,这可以被用于控制training DataModel是如何从training数据创建起来的。通常这个默认值就是很好的;如果在部署上你正在使用DataModel的一个专门的实施,那这是不可能的。一个DataModelBuilder是你如何把它加入评估过程。

1.0参数在最终控制了在所有的输入数据中有多少被使用。这里是百分之百。这可以被用来生产一个quicker,如果少一点精确,只用一个潜在的巨大的数据集合的一小部分来评估。例如,0.1将意味着百分之十的数据被使用,而百分之九十的数据别忽视。当对一个recommender快速地试验小部分的改变,这是很有用的。
3
5
分享到:
评论

相关推荐

    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 2012

    Apache Mahout是一个Apache开源数据挖掘和机器学习项目,它提供了一系列基于...《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源代码maven编译jar包

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

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

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

    Mahout In Action 2012 Source Code

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

    mahout_in_action_中文版

    #### 五、编写在Hadoop上的推荐器和分布式算法 针对维基百科的海量数据,Mahout可以部署新的推荐算法并利用分布式计算进行处理。具体而言,可以通过MapReduce模型来并行处理大规模的数据集,从而显著提高处理速度和...

    Mahout in action清晰完整版

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

    Mahout in Action 最新版+完整版

    《Mahout in Action》是一本关于Apache Mahout的权威指南,该书详细介绍了如何利用Mahout进行推荐系统、聚类分析以及分类等机器学习任务。此版本为2012年的最新完整版,由Sean Owen、Robin Anil、Ted Dunning和Ellen...

    mahout in action 英文完整版(2012)

    #### 描述:Mahout in Action 英文完整版(2012),自然语言处理,协同过滤,推荐引擎,聚类,分类 - **自然语言处理**:自然语言处理(Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个...

    mahout in action中文版 最全的 docx

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

    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