Mahout 简单使用经验
mahout项目介绍
推荐引擎利用特殊的信息过滤技术,将不同的内容(例如电影、音乐、书籍、新闻、图片、网页等)推荐给可能感兴趣的用户。通常情况下,推荐引擎的实现是通过将用户的个人喜好与特定的参考特征进行比较,并试图预测用户对一些未评分项目的喜好程度。参考特征的选取可能是从项目本身的信息中提取的,或是基于用户所在的社会或社团环境。
常用的推荐的方式主要有两种:
-
基于用户的推荐:通过查找相似的用户来推荐项目。由于用户的动态特性,这通常难以定量。
这句话的理解可以用一个简单的例子来说明,假如说这里的项目指的是各种书籍,那么推荐程序可以根据一个用户对所关注的书籍的各种属性做一个分析,分析出此用户到底喜欢如何类型的书籍,比如说是关于历史的,通过对这种喜好的分析,程序就可以找到与该用户有相同喜好的用户,即也同样喜欢历史类书籍的用户,假如找到的用户不光喜欢历史类的书籍,并且喜欢科技类的书籍,那么程序会尝试将该类书籍推荐给这个用户。
当然程序的分析可能比这要复杂得多,但是可以这样简单的来理解。
-
基于项目的推荐:计算项目之间的相似度并做出推荐。项目通常不会过多更改,因此这通常可以离线完成。
同样这里的项目我们可以理解为书籍,项目间的相似度可能通过多种属性对比而来,比如说书籍的分类,价格,作者等等相关属性。根据此类属性来找出与该书类似的书籍,来直接推荐给用户。这里如果项目的信息量比较大会影响在线推荐的执行效率,因为项目一般变动周期可能不会十分频繁,切参数的更换也不会非常频繁,所以项目之间的相似度可以周期性的计算并存储,然后供推荐程序调用,来提高推荐程序的运行效率。
主要推荐方式分为此两种类型。所有推荐利用的算法最终都需要计算用户及其评分项目之间的相似度。可以通过许多方法来计算相似度,并且大多数 CF 系统都允许您插入不同的指标,以便确定最佳结果。这里的不同的指标有待进一步研究,这里的指标应该可以自定义筛选的范围,以及筛选的规则。
推荐引擎的搭建
Mahout 目前提供了一些工具,可用于通过 Taste 库建立一个推荐引擎 — 针对 CF 的快速且灵活的引擎。Taste支持基于用户和基于项目的推荐,并且提供了许多推荐选项,以及用于自定义的界面。Taste 包含 5 个主要组件,用于操作 用户、项目 和 首选项:
-
DataModel: 用于存储用户、项目和首选项
-
UserSimilarity: 用于定义两个用户之间的相似度
-
ItemSimilarity: 用于定义两个项目之间的相似度
-
Recommender: 用于提供推荐
-
UserNeighborhood:用于计算相似用户邻近度,其结果随时可由 Recommender 使用
基于项目相似度的推荐的部分代码,其中带注释的部分为其的关键代码:
public class ItemBasedRecommender implementsRecommender {
privatefinal Recommender recommender;
publicItemBasedRecommender() throws IOException, TasteException {
this(newMovieDataModel());// 初始化一个数据模型
}
publicItemBasedRecommender(DataModel dataModel) throws TasteException {
// 取得所有电影数据的相似度数据
Collection<GenericItemSimilarity.ItemItemSimilarity> correlations=
MovieSimilarityTable.getAllMovieSimilarities();
// 根据相似度数据生成一个相似度对象
ItemSimilarity itemSimilarity = new GenericItemSimilarity(correlations);
// 根据电影的数据模型,和相似度来生成一个推荐对象,可以利用此对象设置相关参数来给用户做电影的相关推荐,此推荐是基于电影的相似性来计算出来的。
recommender = new CachingRecommender(new EmbededItemBasedRecommender(
newGenericItemBasedRecommender(dataModel, itemSimilarity)));
}
publicList<RecommendedItem> recommend(long userID, int howMany)
throwsTasteException {
returnrecommender.recommend(userID, howMany);
}
.........
//EmbededItemBasedRecommender类的定义
privatestatic final class EmbededItemBasedRecommender implements Recommender {
//包含一个GenericItemBasedRecommender实例;
privatefinal GenericItemBasedRecommender recommender;
privateEmbededItemBasedRecommender(GenericItemBasedRecommender recommender) {
this.recommender = recommender;
}
publicList<RecommendedItem> recommend(long userID, int howMany,
Rescorer<Long> rescorer)
throws TasteException {
FastIDSet itemIDs =recommender.getDataModel().getItemIDsFromUser(userID);
return recommender.mostSimilarItems(itemIDs.toArray(), howMany, null);
}
........
}
其他基于用户的相似度的推荐,与其十分类似。
mahout 推荐引擎的相关介绍,理解,如何应用。(2)
http://hi.baidu.com/liujiekkk123/blog/item/d6c4541b06470fe6af5133fe.html
mahout 推荐引擎的相关介绍,理解,如何应用。(3)
http://hi.baidu.com/liujiekkk123/blog/item/8334240938ed04386b60fbb3.html
分享到:
相关推荐
6. 配置推荐引擎的属性 在Mahout Taste Webapp的recommender.properties文件中,需要指定推荐算法的类,例如GroupLensRecommender。这是配置推荐系统行为的重要步骤。 7. 准备数据文件 Mahout Taste Webapp需要数据...
Mahout推荐引擎允许用户构建推荐系统,以向用户推荐他们可能感兴趣的商品或服务。通过使用Mahout,开发者可以利用可扩展的机器学习算法,这些算法经过优化,可以在大量数据上运行。 聚类是将数据点分组到具有相似...
在本项目中,我们主要探讨如何使用SpringBoot框架与Apache Mahout构建一个推荐系统,该系统专注于基于用户评分数据来推荐相关的电影。首先,让我们深入理解这个系统的各个组成部分。 **SpringBoot** SpringBoot是由...
《深入理解Mahout:朴素贝叶斯分类与中文分词技术解析》 Apache Mahout是一款基于Java开发的机器学习库,旨在提供可扩展的、高效的算法,用于数据挖掘和模式识别。在大数据时代,Mahout已经成为数据科学家和工程师...
它允许开发人员构建智能应用程序,如推荐引擎、社交网络分析等。 2. **推荐系统**:Mahout的核心应用之一就是推荐系统。这类系统通过分析用户的历史行为和偏好,预测用户可能感兴趣的物品或服务。在这个单机demo中...
在实际应用中,推荐引擎还需要考虑到实时性、可扩展性和推荐多样性等问题。Apache Mahout是一个开源框架,专门用于大规模数据上的机器学习,包括推荐系统的实现。它提供了多种推荐算法,并支持分布式计算,有助于...
1. **协同过滤(Collaborative Filtering, CF)/ 推荐引擎**:这是Mahout中最广为人知的功能之一,主要用于构建个性化推荐系统。通过对用户行为数据进行分析,能够预测用户可能感兴趣的产品或内容,并据此生成推荐...
- **推荐系统**:在电子商务、社交媒体和电影推荐等领域,Mahout可以帮助构建个性化的推荐引擎。 - **文本挖掘**:通过对大量文本数据的分析,提取主题、情感或者关系,应用于新闻聚合、舆情分析等场景。 - **...
书中不仅介绍了Mahout是什么以及如何设置,还提供了对推荐引擎、聚类、分类在现实世界中的应用的概览。 在推荐引擎部分,本书介绍了推荐系统的概念,以及如何在实际中构建推荐系统。推荐系统是一个广泛应用于电子...
推荐引擎主要基于两种类型的数据源:物品或内容的元数据,如关键词和描述,以及用户的相关信息,如性别、年龄和用户对物品的偏好。用户的偏好信息分为显式反馈(如评分和评论)和隐式反馈(如浏览历史和购买记录)。...
本文将详细介绍Mahout的相关知识,并通过其背景介绍、核心组件Hadoop(包括HDFS和MapReduce)、以及如何搭建和操作Hadoop环境等方面进行深入探讨。 #### 二、Hadoop简介 ##### 2.1 Hadoop概述 Hadoop是一个开源...
Apache Mahout是一个基于Hadoop的数据挖掘库,它提供了大规模机器学习算法的实现,包括推荐引擎、分类、聚类和关联规则挖掘。Mahout 0.9版本是该库的一个重要里程碑,尤其因为它是第一个全面支持Hadoop 2的版本。在...
#### 描述:Mahout in Action 英文完整版(2012),自然语言处理,协同过滤,推荐引擎,聚类,分类 - **自然语言处理**:自然语言处理(Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个...
Mahout 0.5包含了一套完整的推荐引擎,如基于用户的协同过滤(User-Based Collaborative Filtering)和基于物品的协同过滤(Item-Based Collaborative Filtering)。这些算法可以用于电影推荐、商品推荐等场景,通过...
王家林所著的《Mahout_in_Action》一书详细介绍了如何在实践中有效地使用Mahout,涵盖了Mahout的设置、推荐引擎、聚类和分类的基本原理与应用场景。通过本书,读者可以学习到如何搭建和优化Mahout环境,如何将推荐...
在标题中提到的"apache-mahout-distribution-0.12.2.tar.gz"是Mahout的一个发行版本,版本号为0.12.2,通常包含了源代码、文档、编译好的二进制文件以及相关的依赖库。 描述中提到了Mahout的主要用途——大数据推荐...