Apache Mahout学习笔记(一)

本文是学习(http://www.ibm.com/developerworks/cn/java/j-mahout/)的笔记。

监管和 无监管学习

监管学习的任务是学习带标签的训练数据的功能,以便预测任何有效输入的值。监管学习的常见例子包括将电子邮件消息分类为垃圾邮件,根据类别标记网 页,以及识别手写输入。创建监管学习程序需要使用许多算法,最常见的包括神经网络、Support Vector Machines (SVMs) 和 Naive Bayes 分类程序。

无监管学习的任务是发挥数据的意义,而不管数据的正确与否。它最常应用于将类似的输入集成到逻辑分组中。它还可以用于减少数据集中的维度数据,以便只专注于最有用的属性,或者用于探明趋势。无监管学习的常见方法包括 k-Means、分层集群和自组织地图。

常用的三个领域

  • 推荐
  • 集群
  • 分类

软件安装   

   JDK 1.6 或更高版本
    Ant 1.7 或更高版本
    如果要编译 Mahout 源代码,还需要安装 Maven

建立一个推荐引擎

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

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

借助这些组件以及它们的实现,开发人员可以构建复杂的推荐系统,提供基于实时或者离线的推荐。基于实时的推荐经常只能处理数千用户,而离线推荐具有更好的适用性。

使用 Mahout 实现集群

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

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

 

posted on 2014-09-13 15:43  学而优,思则通  阅读(235)  评论(0编辑  收藏  举报

导航