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/