你不能错过的机器学习之 Mahout介绍

一、Mahout概述
1.1 Mahout是什么?
Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。
Mahout最大的优点就是基于hadoop实现,把很多以前运行于单机上的算法,转化为了MapReduce模式,这样大大提升了算法可处理的数据量和处理性能。
1.2 Mahout能干嘛?
Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现、分类、聚类等。
Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
目前比较成熟和活跃的主要包括:

1、频繁模式挖掘
2、聚类算法
3、分类器
4、推荐算法
5、频繁子项挖掘
二、安装与简单使用
2.1 Mahout安装特别简单,只需要解压到指定目录即可。(可以修改一下环境变量)
2.2 测试是否能正常使用,显示如下页面即为成功!
你不能错过的机器学习之 Mahout介绍_第1张图片

你不能错过的机器学习之 Mahout介绍_第2张图片
三、Kmeans均值聚类算法案例
因为本章的mahout是基于Hadoop运行,所以首先确保Hadoop正常使用!
3.1 数据准备
在linux下新建一个文件,用来保存数据。
数据如下:你不能错过的机器学习之 Mahout介绍_第3张图片

3.2 数据准备好之后,在hdfs上新建一个目录,
/user/root/testdata (案例路径写死的)

3.3 将数据上传到上面目录
hdfs dfs -put test.txt /user/root/testdata

3.4 执行如下命令
hadoop jar mahout-examples-0.9-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
过程如下:
你不能错过的机器学习之 Mahout介绍_第4张图片

你不能错过的机器学习之 Mahout介绍_第5张图片
由于聚类算法是一种迭代的过程,所以它回一直重复执行mr任务到符合要求,所以会稍微慢一点。
3.5 执行完毕,会在/user/root/下生成一个output目录如下: (同样这里的路径也是写死的)
你不能错过的机器学习之 Mahout介绍_第6张图片
你不能错过的机器学习之 Mahout介绍_第7张图片
四、Kmeans算法简单介绍
Kmeans算法是最常用的聚类算法,主要思想是:在给定K值和K个初始类簇中心点的情况下,把每个点(亦即数据记录)分到离其最近的类簇中心点所代表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计算该类簇的中心点(取平均值),然后再迭代的进行分配点和更新类簇中心点的步骤,直至类簇中心点的变化很小,或者达到指定的迭代次数。
k-means算法以距离作为数据对象间相似性度量的标准,通常采用欧氏距离来计算数据对象间的距离。下面给出欧式距离的计算公式:
你不能错过的机器学习之 Mahout介绍_第8张图片
这里不说那些复杂的公式,用直白的话让大家明白:
你不能错过的机器学习之 Mahout介绍_第9张图片

简单的讲,均值cluster的划分就是先随机出一个点和一个距离它最远的点,然后通过距离计算一直迭代,结束的标志是达到阈值或者指定迭代的次数。
当然距离计算除了上面的欧式距离算法,还有其他的算法,大家可以去找度娘唠唠!
但这种当时有很多缺点:
  需要用户事先指定类簇个数K;
  聚类结果对初始类簇中心的选取较为敏感;
  容易陷入局部最优;
  只能发现球型类簇;
五、Kmeans的改进
k-means++算法选择初始seeds的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。算法的描述如下:
1、从输入的数据点集合中随机选择一个点作为第一个聚类中心
2、对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x)
3、选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大
4、重复2和3直到k个聚类中心被选出来
利用这k个初始的聚类中心来运行标准的k-means算法

鉴于本人实力有限,如果有什么错误的地方,还请大佬指出,感激不尽!

你可能感兴趣的:(机器学习,Mahout)