`
JokerT
  • 浏览: 22968 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

mahout(Taste)初探

阅读更多


mahout是 Apache Software Foundation (ASF)开发的一个开源项目,主要包括了一些经典机器学习算法的实现,并且通过对hadoop的支持可以很容易的拓展到云上,对mahout的关注主要是因为它收纳了Taste框架。

一、关于安装

有两种方式可以使用mahout,一种是直接安装:按照JDK->maven->mahout->hadoop的顺序,参照http://www.docin.com/p-239482860.html,这个过程我只完成了一半,因为后来发现mahout可以直接在eclipse里集成,非常简单->(http://www.cnblogs.com/dlts26/archive/2011/09/13/2174889.html)

二、taste实施流程

在《mahout in action》里有这么一张图:

 

可以看到mahout实现推荐的一个大致流程,首先将数据组织成DataModel格式,在此基础上计算UserSimilarity,并形成UserNeighborhood记录,之后把这些数据塞进现成的recommender接口里就可以得到相应的推荐结果,下面是一个实例

 

class RecommenderIntro {
public static void main(String[] args) throws Exception {
    DataModel model = new FileDataModel(new File("intro.csv")); 
    UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
    UserNeighborhood neighborhood =new NearestNUserNeighborhood(2, similarity, model);
    Recommender recommender = new GenericUserBasedRecommender( model, neighborhood, similarity);
    List<RecommendedItem> recommendations = recommender.recommend(1, 1); 
    for (RecommendedItem recommendation : recommendations) {
        System.out.println(recommendation);
    } 
} 
} 


只有几行代码,感觉流程很是简单,但是应用到实际环境中其实并不容易,我现在看到的难点起码有以下几个:

 

1. 数据格式。大部分网站的数据应该是存在数据库里了,那么mahout所要求的数据model的格式是DataModel,这中间需要经历一个转换,好在已经有现成的MySQLJDBCModel ,但是其默认是通过JNDI方式查找数据源,如果想单独加载数据库运行一个推荐算法,就要通过这种方式

 

MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setServerName("my_database_host");
dataSource.setUser("my_user");
dataSource.setPassword("my_password");
dataSource.setDatabaseName("my_database_name");
JDBCDataModel dataModel = new MySQLJDBCDataModel(
dataSource, "my_prefs_table", "my_user_column", 
"my_item_column", "my_pref_value_column");

这种连接方式效率很成问题,肯定不能用在生产环境,而我们自己直接实现DataModel接口所要实现的方法又过多(详情可见mahout api ,https://builds.apache.org//job/Mahout-Quality/javadoc/)比如生产用的hibernate或ibatis,如何生成mahout需要的model,要好好考虑一下。

 

 

2. 计算效率。mahout是通过DataModel形式对preference记录存储做了优化的,但是具体在应用中的表现,如内存占用率、响应速度还需要进一步考察,这里面涉及到缓存的使用策略。

 

3. 验证。 要构建一个靠谱的推荐框架,验证这一步肯定是必不可少的。这里就有一个推荐系统一直纠结的问题了:到底什么样的推荐结果是好的,如果根据用户以往的评分记录进行推荐,那么那些没有评分的item就一定代表用户不喜欢么,恐怕未必。所以这里就有一个对“好”的定义的策略问题,这直接影响到推荐系统的效果。

 

4.冷启动。这也是很纠结的问题了,用户第一次登陆系统,无推荐记录,你推荐给他什么。看了一些相关文章,各系统的解决方案不同,有推荐当前热点的,也有强制用户注册时选择偏好信息的,不一而足,这也是一个需要考虑的问题。

 



分享到:
评论

相关推荐

    如何成功运行Apache Mahout的Taste Webapp-Mahout推荐教程-Maven3.0.5-JDK1.6-Mahout0.5

    根据给定的文件信息,我们可以提炼出以下几个与Apache Mahout及其Taste Webapp相关的知识点: 1. Apache Mahout简介 Apache Mahout是一个开源项目,隶属于Apache软件基金会(ASF),专门提供可扩展的机器学习算法...

    Net协同过滤推荐引擎-移植自java版的apache mahout taste+源代码+文档说明

    - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! &lt;项目介绍&gt; 1、该资源内项目代码都经过测试运行成功,...

    elasticsearch-taste:基于Mahout Taste的Elasticsearch建议

    Elasticsearch Taste插件概述Elasticsearch Taste插件是基于的协作过滤实现。 该插件提供了Elasticsearch上推荐引擎的以下功能: 用户/项目/首选项的数据管理。 基于项目的推荐人。 基于用户的推荐器。 相似的用户/...

    ntaste:.Net协同过滤推荐引擎——移植自java版的apache mahout taste

    直接翻译自java版的协同过滤推荐引擎 apache mahout taste。支持在java最新版0.9中移除的Slope One、TreeClustering demo: string filePath = @"E:\WorkStudio\ntaste\ntaste.Test\datafile\item.csv"; var model = ...

    mahout 0.5

    **Apache Mahout 0.5 知识点详解** Apache Mahout 是一个开源机器学习库,专注于大规模数据集上的算法实现。在Mahout 0.5版本中,它提供了多种机器学习算法,包括推荐系统、分类和聚类,以及一些基础的数学和统计...

    mahout-core-0.9.jar+mahout-core-0.8.jar+mahout-core-0.1.jar

    这个压缩包包含的是Mahout项目不同版本的核心库,分别是mahout-core-0.9.jar、mahout-core-0.8.jar和mahout-core-0.1.jar。这些版本的差异在于功能的完善、性能的优化以及对新特性的支持。 1. **Mahout核心功能**:...

    mahout所需jar包

    **马哈多(Mahout)库的概述** 马哈多(Mahout)是Apache软件基金会的一个开源项目,专注于提供可扩展的机器学习库。它基于Hadoop,这意味着它能够利用分布式计算来处理大规模数据集。 Mahout的目标是帮助开发人员...

    [Mahout] Windows下Mahout单机安装

    【标题】:“Mahout在Windows下的单机安装教程” 【内容详解】 Apache Mahout是一个开源机器学习库,它提供了一系列的可扩展、分布式算法,涵盖了推荐系统、分类、聚类等多个机器学习领域。在Windows环境下安装...

    maven_mahout_template-mahout-0.8

    《Apache Maven与Mahout实战:基于maven_mahout_template-mahout-0.8的探索》 Apache Maven是一款强大的项目管理和依赖管理工具,广泛应用于Java开发领域。它通过一个项目对象模型(Project Object Model,POM)来...

    能找到的最全的 mahout in action中文版

    【Taste项目】Mahout吸收了开源协同过滤项目"Taste",增强了其在推荐系统领域的功能。Taste项目为开发推荐系统提供了便利的工具和框架。 【发展历程】Mahout从2008年开始,最初作为Lucene的子项目,后来逐渐发展...

    mahout 原理 简介

    - **2009年**:Taste 协同过滤代码库捐赠给了 Mahout 项目,同年发布了版本 0.1 和 0.2。 - **2010年**:Mahout 成为了 Apache 顶级项目,并在 AlphaCSP 的 The Edge 2010 大会上进行了展示,同年发布了版本 0.4。 ...

    Mahout源码

    **Apache Mahout 源码解析** Apache Mahout 是一个基于Java的开源机器学习库,旨在简化大规模数据集上的机器学习算法实现。它为开发者提供了一系列预构建的、可扩展的机器学习算法,包括分类、聚类、推荐系统以及...

    mahout源码

    《深入理解Mahout:朴素贝叶斯分类与中文分词技术解析》 Apache Mahout是一款基于Java开发的机器学习库,旨在提供可扩展的、高效的算法,用于数据挖掘和模式识别。在大数据时代,Mahout已经成为数据科学家和工程师...

    Mahout in Action 2012

    Apache Mahout是一个Apache开源数据挖掘和机器学习项目,它提供了一系列基于Java的工具和库,用于构建可扩展的推荐系统、聚类算法以及其他机器学习应用。Mahout的目标是简化数据挖掘任务的实现,使其不仅仅局限于...

    mahout Algorithms源码分析

    Mahout是一个Apache Software Foundation(ASF)旗下的开源项目,主要用途是提供可扩展的机器学习算法的实现,帮助开发人员更方便快捷地创建智能应用程序。Mahout包含了很多算法的实现,包括聚类(Clustering)、...

    mahout api 学习资料

    mahout_help,mahout的java api帮助文档,可以帮你更轻松掌握mahout

    MAHOUT实战(中文版)

    《MAHOUT实战》这本书是关于Apache Mahout机器学习库的中文版指南,旨在帮助读者理解和应用Mahout进行大数据分析和构建智能应用。Apache Mahout是一个开源项目,它提供了可扩展的机器学习算法,用于分类、聚类和推荐...

    大数据Mahout实践指南

    《大数据Mahout实践指南》是一本深入探讨大数据分析与机器学习技术的专业书籍,尤其侧重于Apache Mahout框架的应用。Mahout是Apache软件基金会的一个开源项目,致力于提供可扩展的、易于使用的机器学习库,用于构建...

Global site tag (gtag.js) - Google Analytics