当前课程知识点:互联网大规模数据分析技术 > 第八章 推荐系统 > 第23讲 Mahout数据挖掘平台 > 第23讲 Mahout数据挖掘平台
欢迎来到
互联网大规模数据分析技术
的课堂
我是今天的主讲教师李琳
来自武汉理工大学
今天我们开始第23讲
Mahout数据挖掘平台
在今天的内容当中
我们会介绍什么是Mahout
有哪些常用的数据分析工具
Mahout的发展历史
最后
我们会以K-means聚类算法为例
给大家讲解一下Mahout平台上
如何使用聚类算法
什么是Mahout呢
Mahout中文意思是象夫
看象人
那么Mahout也是我们Apache
这样一个开源的项目
在数据分析这样一个金字塔当中
我们看一下数据分析所处的位置
在数据分析当中
我们可以采用数据挖掘技术
来帮助我们进行数据的分析
从而对我们的决策进行支持
在这里面
我们首先要了解数据从哪里来
存在什么地方
进行查询之后
我们怎么来做数据挖掘
达到这样一个数据决策分析的
这样一个过程
在数据分析当中
主流的是一些统计的方法
有目的的对收集的数据
进行分析处理并解读分析的结果
传统的统计有哪些方法呢
比如说求中均值、中位值、方差
偏差、峰值这样一些指标
同时我们还有一些算法
在这样一个图当中
大家可以看到比较熟悉的
回归分析、贝叶斯网络
逻辑回归、神经网络、决策
K-means聚类等
各种各样的机器学习算法
在这里
我们举一个回归分析的例子
回归分析是要做什么呢
也就是说数据分析当中的
机器学习算法
主要完成一些什么样的事情呢
在第一张图上面
我们看到分布了很多的点
我们想做的事情
请用一个函数来描述这些点
当我给定一个新的x值的时候
你能告诉我它的y值是多少呢
这种情况下我们需要找一条
能够拟合
尽可能拟合大部分数据的直线
在这个直线当中
我们学习得到这个直线
这个直线一般写成ax+b,对吧
ax表示斜率,b代表截距
当我们如果知道了a
知道了b之后
当有一个新的点到来的时候
我能够通过这个方法
算得一个y值
那么这个y就是我的预测
这是回归分析
也就是说
我通过对历史数据的建模
什么是模型呢
这样一个线性的关系
就是我们所学的数学模型
建立好模型之后
当新的数据到来的时候呢
你可以通过这个模型
计算出你预测的值是多少
这就是我们机器学习当中的
基于训练数据的回归分析
同时基于这样一种思想
我们还能够进行分类
前面讲的回归分析能够预测
具体的数值
在这里面的分析主要是预测类别
这个在前面的数据挖掘课当中
我们的老师
都给大家做了一个简要的介绍
在这里我们仍然看一个例子
比如说
我们有天气晴、热、高、无风
我们用一个N来表示它的类别
我们用雨、冷、正常、无风
代表p这样一个类别
也就是说
这些属性能够决定最终输出的类别
我们能不能根据已有的历史数据
我们也可以把它叫做训练数据
来预测分析一下
当我给你一条新的数据的时候
你能不能告诉我
这个类别是P还是N
在这里
我们前面学习过决策树的方法
对不对
我们可以用这种决策树的方式
来一步步的进行推导
从而判别它究竟是P还是N
这是分类
接下来
还有一类主流的数据分析方法
前面的我们的课程当中
也给大家介绍过叫聚类
这里我们简单的回忆一下
聚类分析是将物理的
或者抽象的数据集合
划分为多个类别的过程
聚类之后的每个类别中
任意两个数据样本之间
具有较高的相似度
而不同类别的样本之间
具有较低的相似度
我们的聚类算法有层次聚类算法
有基于密度的聚类算法
有基于划分式的
这样一些聚类算法
聚类的主要目的是形成类别
不同的类聚集到一起
这一个类里面的数据
它特别的相近
这一个类里面的数据它很相近
但是类和类之间
它们之间的数据的相似度
并不是那么高
这就是我们在数据分析
和数据挖掘当中常用到的
分类聚类统计分析这样一些方法
同时在前面的课程当中
我们还学习了关联分析对不对
我们学习了
关联规则频繁向量机的挖掘
我们知道了啤酒与纸尿裤
这样一个故事
这些大量的数据挖掘和分析的
一些算法
都已经有了一些开源的实现
这个是购物车和啤酒纸尿裤的
这样一个例子
这样一些数据分析工具有哪些呢
我们传统的数据库
也能做数据分析
我们有一些可视化的工具
我们还有一些
能够数据分析的商用的软件
这些都构成了
我们数据分析的工具
我们对常用的
传统数据分析工具做了一个排行
大家可以看到
基于统计的各种数据分析工具
仍然我们的主流
在这里我们看到非常熟悉的
Matlab
数据挖掘的Weka、SPSS、R、SAS
这些排在前面的
都是我们主流的分析工具
其中R是开源的
R、SAS和SPSS的典型应用场景
均为实验室
处理数据受限于内存
无法处理海量数据
而Oracle这样的数据管理系统
能够处理海量数据
但是在分析方面的却略有不足
它们可以采用抽样的方法
来解决数据分析的问题
所以
当遇到大规模数据分析的时候
我们仍然希望
要有这样一个分布式的计算平台
也就是前面我跟大家介绍的
Hadoop、Spark
基于MapReduce的
这样一些并行计算
如何把这些并行计算
和数据分析的一些工具
能够结合起来供大家使用呢
Mahout就解决了这样一类问题
在Mahout当中我们解决了
一些算法的MapReduce
也就是解决了一些算法的
MapReduce的一些编程问题
比如说我们常见的clustering
它的K-means这样一种方法
我们在Mahout当中
就实现了它的分布式
比如说在分类问题当中
我们的贝叶斯和KNN也实现了
在我们的信息检索当中
前面我们用了几节课的时间
跟大家讲了倒排索引
大家会发现它非常适合
MapReduce的编程模式
所以我们叫perfect fits
我们常见的一些算法都实现了
MapReduce化
这样一些算法
有的是非常适合MapReduce的
一步就能够完成
有的可以通过多次的
MapReduce的工作来达到并行化
当然有的问题可能目前还没有
很好的MapReduce化的解决方案
比如说传统的支持向量机
和隐马尔科夫链
前面我们已经看到
不少的数据分析和机器学习算法
已经能够实现MapReduce
并行化的编程
Mahout它是怎么来的呢
它作为Lucene的一个子项目
前面我们介绍了Lucene
这样一个信息检索平台
这样一个信息检索它存在大量的
文本数据分析和挖掘的需求
比如说文本的自动分类
和文本重复性的判断
导致Lucene项目中的
部分开者转向了机器学习领域
最终将这些机器学习算法
形成的最初的Mahout
同时Mahout也被吸收到了
开源项目当中
2010年成为Apache的顶级项目
Mahout主要目的是
实现可伸缩的机器学习算法
也就是算法的MapReduce化
但是也不一定要求
是基于Hadoop平台的
你也可以选择非分布式的算法
目标是帮助开发人员快速的建立
具有机器智能的应用程序
目前比较成熟和活跃的算法
主要包括频繁模式挖掘
聚类算法、分类算法
推荐系统和频繁子项挖掘
大家可以在Mahout的主页上面
获取更多的关于算法的信息
接下来我们就用K-means的聚类
做一个Mahout的实例的演示
在这里我们的K-means
首先要选取K个初始中心点
并把这每个对象
分配给离它最近的中心
这是一个map的过程
然后计算出当前每个距离中心
作为新的距离中心
这是一个reduce的过程
将这样一个MapReduce的过程
不断地去执行
直到聚类的情况不再变化为止
所以我们等会儿的例子
将会以文本聚类为例
文本聚类就是要把
一个文档集合当中的文本
分成不同的类别
这些文档聚类的应用在哪里呢
比如说
我们可以用在搜索引擎上面
对结果进行聚类
把相类似的结果放到一起
便于用户快速的定位信息
同时
也可以做文档集合的自动整理
我们来看一下
文本聚类的具体过程
首先我们要有数据
我们要对这样一些文档
进行聚类的话
首先我们要对文档进行预处理
这个预处理就包括分词
和一些简单的停用词的去除
同时我们要建立一些信息特征
构造特征空间
实际上在这个里面
我们用的最多的就是
在信息检索课当中所学的
向量空间模型
当我们得到
这样的向量空间模型之后
我们就按照Mahout
所提供的聚类算法的接口
将这样一个格式
送入到我们的聚类算法当中去
最后会形成输出
所以实际上
当你要使用Mahout平台
来做文本聚类的时候
你关键的工作在于数据的表示
怎么把文档表示成文档向量
实际上在信息检索课当中
我们已经知道了向量空间模型
Vector?Space?Model
在这样一个模型当中
每一个单词都有一个权重
这个权重可以是
你在这个文档当中出现的次数
也可以是我们学过的TF-IDF
这样的话通过TF-IDF
或者其他方式的权重计算
我们就能获得这样一个
向量空间模型
当有了向量空间模型之后
我们的聚类算法
需要算两点之间的相似度
你们相似或者距离很近
我就把你们俩放到一起
所以在相似度
或者是距离的计算当中
我们的Mahout提供了很多种
距离和相似度的计算指标
比如说欧氏距离
比如说平方欧氏距离
比如说曼哈顿距离
绝对值、平方、开根号
我们还可以有前面所学的点积
这样一个余弦距离
我们还有谷本距离测度
所以呢,Mahout当中提供了
多种多样的距离计算函数
同学们会问
老师,那我用哪个距离函数
去做文本聚类分析呢
这个要你根据具体的数据
去进行测试
没有一个统一的标准
接下来我们用这两张图
来给大家演示一下
K-means聚类的过程
在K-mmeans聚类当中
首先我们要选择K个聚类中心
在这个例子当中
我选择三个聚类中心
在图上大家可以看到C1、C2、C3
随机的,在Map阶段
在每个点付给离其最近的簇
怎么来做呢
我们需要算距离
这个点和这个中心点的距离
这个点和这个中心点的距离
所有的点
和任意三个点的中心距离
把和我相离比较近的中心点
与我放到一起
这样的话我们初步的形成了
这样的三个簇
在Reduce阶段我们做什么呢
Reduce阶段
我们要取相互关联的点的均值
作为新的聚类中心
前面我们已经计算到了
C1、C2、C3,随机取的
现在我们把这些点
放到这里面之后
我们重新求一个聚类中心
变成了这样
我们会发现聚类中心有了变化
从一个位置到了另外一个位置
我下一次再做一次Reduce
这个聚类中心点又会发生变化
每轮迭代之后
最终的布局
将反馈给同样的循环过程
直到我们的聚类中心的位置
不再移动
也就是说等到下一次迭代的时候
如果我算的C1还是前一次的C1
那么ok我们可以不动了
这就是整个MapReduce当中的
K-means聚类算法的使用
在Mahout当中
我们怎么来用这个K-means
很简单
在Linux环境下
你们输入这样一些命令
当然你要告诉K-means
你用的是TFIDF的向量空间模型
你用的是哪一个数据集
你的数据的聚类中心
最开始的开始的K取多少个
这些都需要你在开始的时候
进行一些预设
当你完成之后
Mahout的聚类分析
就会开始运行了
你有数据已经生成的向量
并且把向量写在相应的目录当中
并且告诉我初始的中心点是哪些
Mahout的聚类就开始工作
算完之后,它会把结果输出
但是大家不要希望Mahout
给大家输出非常漂亮的
可视化结果
Mahout输出的结果
将会以这样一些工具
来帮助大家完成
那么最终它会得到什么样的呢
像这样一种格式
大家要去分析一下
比如说聚类1当中有哪些文件
聚类2当中有哪些文件
聚类4当中有哪些文件
前面我们的参数大家注意一下
我们是设了十三个聚类
所以在这里
如果你们想获取比较漂亮的
这样一个输出的话
还要对这样一些数据
做一些可视化操作
这就是这一讲的主要内容
感谢同学们的观看
-第1讲 大数据与数据挖掘概述
-第2讲 频繁项集和关联规则的基本概念
-第3讲 Apriori算法
-第4讲 Apriori算法的改进与兴趣度度量
-第5讲 分类的基本概念
-第6讲 决策树
--第6讲 决策树
-第7讲 简单贝叶斯分类
-第8讲 聚类的基本概念
-第9讲 K-Means & K-Medoids Clustering
--第9讲 K-Means & K-Medoids Clustering
-第四章 聚类算法--习题
-第10讲 大数据处理平台Hadoop
-第11讲 MapReduce编程
-第12讲 大数据处理平台Spark
-第13讲 NoSQL数据库
-第14讲 Web信息检索简介
-第15讲 信息检索之倒排索引
-第16讲 信息检索之TFIDF
--Video
-第17讲 信息检索之相似度排序
-第18讲 Web搜索之链接分析
-第19讲 Web搜索之PageRank
-第20讲 Lucene信息检索平台
-第七章 Web链接分析--习题
-第21讲 推荐系统简介
-第22讲 推荐系统之协同过滤
-第23讲 Mahout数据挖掘平台
-第24讲 信息过滤评价体系
-第八章 推荐系统--习题一
-第八章 推荐系统--习题二
-综合编程题




