数据库必知词汇:Mahout

简介: Mahout 是 Apache基金会旗下的一个开源项目,其提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。

Mahout 是 Apache基金会旗下的一个开源项目,其提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。

Mahout 项目是由 Apache Lucene(开源搜索)社区中对机器学习感兴趣的一些成员发起的,他们希望建立一个可靠、文档翔实、可伸缩的项目,在其中实现一些常见的用于集群和分类的机器学习算法,但此后在发展中又并入了更多广泛的机器学习方法。

Mahout 支持一些集群算法实现(都是使用 Map-Reduce 编写的),它们都有一组各自的目标和标准:

  • Canopy:一种快速集群算法,通常用于为其他集群算法创建初始种子。
  • k-Means(以及 模糊 k-Means):根据项目与之前迭代的质心(或中心)之间的距离将项目添加到 k 集群中。
  • Mean-Shift:无需任何关于集群数量的 推理知识的算法,它可以生成任意形状的集群。
  • Dirichlet:借助基于多种概率模型的集群,它不需要提前执行特定的集群视图。

Mahout 目前提供了一些工具,可用于通过 Taste 库建立一个推荐引擎 —针对 CF 的快速且灵活的引擎。Taste 支持基于用户和基于项目的推荐,并且提供了许多推荐选项,以及用于自定义的界面。Taste 包含 5 个主要组件,用于操作 用户、项目和 首选项:

  • DataModel:用于存储 用户、项目和 首选项。
  • UserSimilarity:用于定义两个用户之间的相似度的界面。
  • ItemSimilarity:用于定义两个项目之间的相似度的界面。
  • Recommender:用于提供推荐的界面。
  • UserNeighborhood:用于计算相似用户邻近度的界面,其结果随时可由 Recommender使用。

借助这些组件以及它们的实现,开发人员可以构建复杂的推荐系统,提供基于实时或者离线的推荐。基于实时的推荐经常只能处理数千用户,而离线推荐具有更好的适用性。Taste 甚至提供了一些可利用 Hadoop 离线计算推荐的工具。在许多情况中,这种合适的方法可以帮助您满足包含大量用户、项目和首选项的大型系统的需求。

Mahout目前支持两种根据贝氏统计来实现内容分类的方法。第一种方法是使用简单的支持 Map-Reduce 的 Naive Bayes 分类器。Naive Bayes 分类器为速度快和准确性高而著称,但其关于数据的简单(通常也是不正确的)假设是完全独立的。当各类的训练示例的大小不平衡,或者数据的独立性不符合要求时,Naive Bayes 分类器会出现故障。第二种方法是 Complementary Naive Bayes,它会尝试纠正 Naive Bayes 方法中的一些问题,同时仍然能够维持简单性和速度。

资料来源:
Apache Mahout 简介 https://www.ibm.com/developerworks/cn/java/j-mahout/
Mahout官网 http://mahout.apache.org/

相关文章
|
存储 安全 数据库
数据库必知词汇:分级存储
分级存储是将数据采取不同的存储方式分别存储在不同性能的存储设备上,减少非重要性数据在一级本地磁盘所占用的空间,还可加快整个系统的存储性能。
1008 0
|
存储 JSON NoSQL
数据库必知词汇:Cassandra
Apache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案,线性可扩展性和在商用硬件或云基础架构上经过验证的容错能力使它成为关键任务数据的理想平台。
983 0
|
分布式计算 负载均衡 算法
数据库必知词汇:Zookeeper
ZooKeeper是用于维护配置信息、命名、提供分布式同步以及提供组服务的集中式服务。ZooKeeper是Google的Chubby一个开源的实现,是Hadoop和HBase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,构成一个高效可靠的原语集,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
365 0
|
SQL 存储 分布式计算
数据库必知词汇:Hive
Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Apache Hive数据仓库软件有助于使用SQL读取,写入和管理驻留在分布式存储中的大型数据集。 可以将结构投影到已经存储的数据上。 提供了命令行工具和JDBC驱动程序以将用户连接到Hive。
854 0
|
SQL 分布式计算 数据挖掘
数据库必知词汇:Pig
Apache Pig 是一个高级过程语言,特点是其结构易于大量并行化,适合于使用 Hadoop 和 MapReduce 平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似 SQL 的查询,Pig 可以简化 Hadoop 的使用。
577 0
|
SQL 分布式计算 Oracle
数据库必知词汇:Sqoop
Apache Sqoop是一个用于在Apache Hadoop和关系数据库等结构化数据存储之间高效传输大容量数据的开源工具。主要用于在Hadoop(Hive)与传统的数据库间进行数据的传递,可以将一个关系型数据库(例如 :MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。此外,对于某些NoSQL数据库Sqoop也提供了连接器。
468 0
|
Apache 数据库
数据库必知词汇:Flume
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume具有简单灵活的基于流数据流的体系结构。它具有鲁棒性和容错性,具有可调的可靠性机制和许多故障转移和恢复机制。Flume使用一个简单的可扩展数据模型,允许在线分析应用程序。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
440 0
|
存储 缓存 API
数据库必知词汇:Memcached
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。
348 0
|
存储 分布式计算 搜索推荐
数据库必知词汇:HDFS
Hadoop分布式文件系统(Hadoop Distributed File System, HDFS)是指被设计成适合运行在通用硬件上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。
403 0
|
存储 SQL 分布式计算
数据库必知词汇:Hadoop
Apache Hadoop是一个由Apache基金会所开发的分布式系统基础架构,它允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。它被设计成从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。库本身的设计目的是在应用层检测和处理故障,而不是依赖硬件来提供高可用性,因此在计算机集群之上提供高可用性服务,而每个集群都可能容易出现故障。
641 0