第一章 Mahout 简介

笔记内容援引 《Mahout 算法解析与案例实战》

Mathout 简介


Mahout 应用背景

  • ”云计算“ 是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备,这样可以最大限度,最大效率地利用计算机资源,达到快捷、高效地处理成数据的目的

  • 云计算的核心重点是云平台下算法的开发,有了算法的支撑才能发挥云计算才能发挥云计算的最大优势。单机实现的算法其编程思想和模式与云平台下的编程思路和模式很不一样

  • Hadoop 云平台是一个处理大数据的分布式应用的开源框架,提供分布式存储和高效计算能力,Hadoop具有如下优势:

    • 同时提供给分布式存储和计算能力
    • 具有极高的可扩展性
    • 其主要的组件之一 HDFS 具有很高的数据吞吐量
    • 具有软件和硬件容错性
    • 允许大数据的并行工作
  • Mahout 是 Apache 基金会的开源项目之一,一个 Hadoop 云平台的算法库。在使用 Hadoop 云平台的基础上,已经实现了多种经典算法,并一直在扩充中,其目标就是致力于创建一个可扩容的云平台算法库,可以将其功能有效地扩展到 Hadoop 云平台中,提高其运算效率


Mahout 算法库

聚类算法

  分类依据是不同点之间的距离:对于两个或者多个数据点,当它们之间的距离达到一定程度的时候,就把它们分为一个类,采用这种方式的聚类称做基于几何距离的聚类。聚类的目的就是把一组无标签的数据加上标签。但没有一个绝对的标准来衡量这些模型算法,需要根据用户的需求评测一个模型的好坏,而且还要求模型的参数要根据用户的不同数据加以调整以适应具体的情况
  Mahout 算法库中聚类模块包含的算法有:

  • Canopy 算法
    Canopy 算法是一种非常简单、快速的聚类方法,其经常用于其他聚类算法的初始步骤,比如 K-Means 算法

  • K-Means 算法
    K-Means 算法是一种相对简单但是广为人知的聚类算法,用于发现严格的聚类中心(即一个数据点只属于一个聚类中心)一般聚类问题都可以使用聚类算法,在 Mahout 中,该算法在每次循环时都会新建一个任务,对于算法来说,增加了很多外部消耗

  • Fuzzy K-Means
    是 K-Means 的扩展,用于发现松散的聚类中心(即一个数据点可能属于几个聚类中心)

  • Menan Shift 算法
    Menan Shift 算法最开始应用于图像平滑、图像分割和跟踪方面。该算法不需要提前知道聚类的类别数( K-Means 算法就需要)并且该算法形成的聚类形状是任意的且与聚类的数据是相关的

  • Spectral 算法
    Spectral 算法相对 K-Means 算法来说更加有效和专业化,它是处理图像谱分类的一种有效地算法,主要针对的数据也是图像数据

  • Minhash 算法
    Minhash 算法只负责将原始内容尽量均匀随机隐射为一个标签值,原理上相当于伪随机数产生算法,相对于传统的 hash 算法产生的两个签名,如果相等,说明原始内容在一定概率下是相等的。如果不相等,除了说明原始内容不相等外,不再提供任何信息。因为即使原始内容只相差一个字节,所产生的签名也很可能差别极大

  • Top Down 算法
    Top Down 算法是分层聚类的一种,它首先寻找比较大的聚类中心,然后对这些中心进行细粒度分类

分类算法

  分类时一种基于训练样本数据(这些数据都已经被贴上标签)区分另外的样本数据标签的过程
  Mahout 算法库中分类模块包含的算法有:

  • Logistic Regression
    Logistic Regression 是一种利用预测变量(预测变量可以使数值型,也可以是离散型)来预测事件出现概率的模型。其主要应用于生产欺诈检测,广告质量估计,以及定位产品预测等。在 Mahout 中主要使用随机梯度下降(SGD)思想来实现该算法
  • Bayesian
    贝叶斯(Bayesian)就是通过联系事件 A 与事件 B ,计算从一个事件产生另一事件的概率,即从结果上溯源。在 Mahout 中目前已经实现的贝叶斯分类器,其中一种是朴素贝叶斯算法,另外一种是互补型的朴素贝叶斯算法
  • SVM
    Support Vector Machine(支持向量机)属于一般化线性分类器。这种分类器的特点是它能够同时最小化经验误差与最大化几何边缘区,因此支持向量机也称为最大边缘区分类器
  • Random Forests
    Random Forests (随机森林) 是一个包含多个决策树的分类器,并且其输出的类别由个别树输出的类别的众数而定。这里的众数是指个别树输出类别重复最多的一个类别数值。随机森林算法在决策树的基础上发展而来,继承了决策树的优点,同时弱化了决策树的缺点
  • Hidden Markov Models
    Hidden Markov Models (隐马尔可夫模型) 主要用在机器学习上,比如语音识别、手写识别及自然语音处理等

协同过滤算法

  协同过滤算法也可以称为推荐算法。在 Mahout 算法库中主要包括以下算法:

  • Distributed Item-Based Collaborative Filtering
    Distributed Item-Based Collaborative Filtering 是基于项目的系统过滤算法,其简单思想就是利用项目之间的相似度来为用户进行项目推荐。项目之间的相似性通过不同用户对该项目的评分来求出,每个项目都有一个用户向量,两个项目之间的相似度便是根据这个用户向量求得的。求得项目之间的相似度,便可以针对用户对项目的评分清单来推荐与清单中极为相似的项目

  • Collaborative Filtering using a parallel matrix factorization
    Collaborative Filtering using a parallel matrix factorization 在 Mahout 的介绍中是以 Collaborative Filtering with ALS-WR 的名称出现的。该算法最核心的思想就是把所有的用户以及项目想象成一个二维表格,该表格中有数据的单元格 (i,j) ,便是第 i 个用户对第 j 个项目的评分,然后利用该算法使用表格中有数据的单元格来预测为空的单元格。预测得到的数据即为用户对项目的评分,然后按照预测的项目评分从高到低排序,便可以进行推荐了

频繁项集挖掘算法

  在 Mahout 算法库中,频繁项集挖掘算法主要是指 FP 树关联规则算法。传统关联规则算法是根据数据集建立 FP 树,然后对 FP 树进行挖掘,得到数据库的频繁项集。在 Mahout 中实现并行 FP 树关联规则算法的主要思路就是按照一定的规则把数据集分开,然后在每个分开的部分数据集建立 FP 树,然后对 FP 树进行挖掘,得到频繁项集。这里使用的是把数据集分开的规则,可以保证最后通过所有 FP 树挖掘出来的频繁项集全部加起来没有遗漏,但是会有少量重叠


Mahout 应用

1. 商业中应用

  • Adobe AMP 公司使用 Mahout 的聚类算法把用户区分为不同的圈子,通过精确定位营销来增加用户
  • Amazon 的个人推荐平台也是使用 Mahout 的算法库来进行推荐的
  • AOL 使用 Mahout 来进行购物推荐
  • DataMine Lab 使用 Mahout 的推荐算法以及聚类算法来提高客户广告投放的精确度
  • iOffer 使用 Mahout 频繁项集挖掘算法和协同过滤算法为用户推荐项目
  • Twitter 使用 Mahout 的 LDA 模型为用户推荐其感兴趣的东西
  • Yahoo 公司的邮件使用 Mahout 的关联规则算法

2. 学术中的应用

  • 在 TU Berlin 大学的 “Large Scale Data Analysis and Data Mining” 课程中,使用 Hadoop 和 MapReduce 来进行数据并行分析的教学
  • 在 Nagoya Institute of Technology, Mahout 被用来在一个研究项目中进项数据分析

你可能感兴趣的:(读书笔记临时存放处)