|
1 | 1 | # 大数据与MapReduce |
2 | 2 |
|
3 | | -> 本章内容 |
| 3 | + |
4 | 4 |
|
5 | | -* MapReduce |
6 | | -* Python中Hadoop流的使用 |
7 | | -* 使用mrjob库将MapReduce自动化 |
8 | | -* 利用Pegasos算法并行训练支持向量机 |
| 5 | +`大数据: 收集到的数据已经远远超出了我们的处理能力。` |
9 | 6 |
|
10 | | -## MapReduce:分布式计算的框架 |
| 7 | +## MapReduce |
11 | 8 |
|
12 | 9 | ``` |
13 | | -优点:可在短时间内完成大量工作。 |
14 | | -缺点:算法必须经过重写,需要对系统工程有一定的理解。 |
15 | | -适用数据类型:数值型和标称型数据。 |
| 10 | +Hadoop 是 MapRedece框架的一个免费开源实现。 |
| 11 | +MapReduce: 分布式的计算框架,可以将单个计算作业分配给多台计算机执行。 |
| 12 | +优点: 使程序以并行的方式执行,可在短时间内完成大量工作。 |
| 13 | +缺点: 算法必须经过重写,需要对系统工程有一定的理解。 |
| 14 | +适用数据类型: 数值型和标称型数据。 |
16 | 15 | ``` |
17 | 16 |
|
18 | | -* MapReduce集群的示意图 |
19 | | - |
| 17 | +* MapReduce框架的示意图 |
| 18 | +*  |
20 | 19 |
|
21 | 20 | > 关于MapRduce的学习要点 |
22 | 21 |
|
|
27 | 26 | * 数据被重复存放在不同的机器上,以防止某个机器实效 |
28 | 27 | * mapper和reducer传输的数据形式为key/value对 |
29 | 28 |
|
30 | | -## Hadoop流 |
| 29 | +## Python中Hadoop流的使用 |
31 | 30 |
|
32 | | -## 在Amazon网络服务商运行Hadoop程序 |
| 31 | +> 理论简介 |
| 32 | +
|
| 33 | +例如: Hadoop流可以像Linux命令一样执行 |
| 34 | + |
| 35 | +```Shell |
| 36 | +cat inputFile.txt | python mapper.py | sort | python reducer.py > outputFile.txt |
| 37 | +``` |
| 38 | + |
| 39 | +类似的Hadoop流就可以在多台机器上分布式执行,用户可以通过Linux命令来测试Python语言编写的MapReduce脚本。 |
| 40 | + |
| 41 | +> 实战脚本 |
| 42 | +
|
| 43 | +``` |
| 44 | +# 测试 Mapper |
| 45 | +# Linux |
| 46 | +cat input/15.BigData_MapReduce/inputFile.txt | python src/python/15.BigData_MapReduce/mrMeanMapper.py |
| 47 | +# # Window |
| 48 | +# python src/python/15.BigData_MapReduce/mrMeanMapper.py < input/15.BigData_MapReduce/inputFile.txt |
| 49 | +
|
| 50 | +# 测试 Reducer |
| 51 | +# Linux |
| 52 | +cat input/15.BigData_MapReduce/inputFile.txt | python src/python/15.BigData_MapReduce/mrMeanMapper.py | python src/python/15.BigData_MapReduce/mrMeanReducer.py |
| 53 | +# # Window |
| 54 | +# python src/python/15.BigData_MapReduce/mrMeanMapper.py < input/15.BigData_MapReduce/inputFile.txt | python src/python/15.BigData_MapReduce/mrMeanReducer.py |
| 55 | +``` |
33 | 56 |
|
34 | 57 | ## MapReduce上的机器学习 |
35 | 58 |
|
36 | | -## 在Python中使用mrjob来自动化MapReduce |
| 59 | +> Mahout in Action |
| 60 | +
|
| 61 | +1. 简单贝叶斯: |
| 62 | +2. k-近邻算法: |
| 63 | +3. 支持向量机(SVM):使用随机梯度下降算法求解,如Pegasos算法。 |
| 64 | +4. 奇异值分解:Lanczos算法是一个有效的求解近似特征值的算法。 |
| 65 | +5. k-均值聚类:canopy算法初始化k个簇,然后再运行K-均值求解结果。 |
| 66 | + |
| 67 | +## 使用mrjob库将MapReduce自动化 |
| 68 | + |
| 69 | +> 理论简介 |
| 70 | +
|
| 71 | +* MapReduce作业流自动化的框架:Cascading 和 Oozie. |
| 72 | +* mrjob是一个不错的学习工具,与2010年底实现了开源,来之于Yelp(一个餐厅点评网站). |
| 73 | + |
| 74 | +```Shell |
| 75 | +python mrMean.py < inputFile.txt > myOut.txt |
| 76 | +``` |
| 77 | + |
| 78 | +> 实战脚本 |
| 79 | +
|
| 80 | +``` |
| 81 | +# 测试 mrjob的案例 |
| 82 | +# 先测试一下mapper方法 |
| 83 | +# python src/python/15.BigData_MapReduce/mrMean.py --mapper < input/15.BigData_MapReduce/inputFile.txt |
| 84 | +# 运行整个程序,移除 --mapper 就行 |
| 85 | +python src/python/15.BigData_MapReduce/mrMean.py < input/15.BigData_MapReduce/inputFile.txt |
| 86 | +``` |
| 87 | + |
| 88 | +## 利用Pegasos算法并行训练支持向量机 |
| 89 | + |
| 90 | +> 在MapReduce框架上使用SVM的一般方法 |
| 91 | +
|
| 92 | +``` |
| 93 | +收集数据:数据按文本格式存放。 |
| 94 | +准备数据:输入数据已经是可用的格式,所以不需任何准备工作。如果你需要解析一个大规模的数据集,建议使用map作业来完成,从而达到并行处理的目的。 |
| 95 | +分析数据:无。 |
| 96 | +训练算法:与普通的SVM一样,在分类器训练上仍需花费大量的时间。 |
| 97 | +测试算法:在二维空间上可视化之后,观察超平面,判断算法是否有效。 |
| 98 | +使用算法:本例不会展示一个完整的应用,但会展示如何在大数据集上训练SVM。该算法其中一个应用场景就是本文分类,通常在文本分类里可能有大量的文档和成千上万的特征。 |
| 99 | +``` |
| 100 | + |
| 101 | +> Pegasos 算法 |
| 102 | +
|
| 103 | +Pegasos是指原始估计梯度求解器(Peimal Estimated sub-GrAdient Solver)。 |
| 104 | +Pegasos算法工作流程是: |
| 105 | +1. 从训练集中随机挑选一些样本点添加到带处理列表中 |
| 106 | +2. 按序判断每个样本点是否被正确分类 |
| 107 | + * 如果是则忽略 |
| 108 | + * 如果不是则将其加入到待更新集合。 |
| 109 | +3. 批处理完毕后,权重向量按照这些错分的样本进行更新。 |
| 110 | + |
| 111 | +上述算法伪代码如下: |
| 112 | + |
| 113 | +``` |
| 114 | +将w初始化为0 |
| 115 | +对每次批处理 |
| 116 | + 随机选择k个样本点(向量) |
| 117 | + 对每个向量 |
| 118 | + 如果该向量被错分: |
| 119 | + 更新权重向量w |
| 120 | + 累加对w的更新 |
| 121 | +``` |
37 | 122 |
|
38 | | -## 示例:分布式SVM的Pegasos算法 |
| 123 | +我们继续看Python版本的代码实现。 |
39 | 124 |
|
40 | | -## 你真的需要MapReduce吗? |
| 125 | +* * * |
41 | 126 |
|
42 | | -## 本章小节 |
| 127 | +* **作者:[片刻](http://www.apache.wiki/display/~jiangzhonglian) [小瑶](http://www.apache.wiki/users/viewmyprofile.action)** |
| 128 | +* [GitHub地址](https://github.com/apachecn/MachineLearning): <https://github.com/apachecn/MachineLearning> |
| 129 | +* **版权声明:欢迎转载学习 => 请标注信息来源于 [ApacheCN](http://www.apache.wiki)** |
0 commit comments