更新完15章 md内容

This commit is contained in:
jiangzhonglian
2017-06-20 21:21:28 +08:00
parent 7a6f67244f
commit cf6fac4af4
11 changed files with 206 additions and 69 deletions

View File

@@ -111,5 +111,4 @@ http://baike.baidu.com/link?url=76P-uA4EBrC3G-I__P1tqeO7eoDS709Kp4wYuHxc7GNkz_xn
* **作者:[片刻](http://www.apache.wiki/display/~jiangzhonglian) [1988](http://www.apache.wiki/display/~lihuisong)**
* [GitHub地址](https://github.com/apachecn/MachineLearning): <https://github.com/apachecn/MachineLearning>
* [原文链接](https://github.com/apachecn/MachineLearning/blob/master/docs/1.%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80.md): <https://github.com/apachecn/MachineLearning/blob/master/docs/1.%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80.md>
* **版权声明: 内容由[ApacheCN(apache中文网)](http://www.apache.wiki)更新维护,欢迎转载学习-记得标注信息来源,谢谢**
* **版权声明:欢迎转载学习 => 请标注信息来源于 [ApacheCN](http://www.apache.wiki)**

View File

@@ -90,3 +90,9 @@
如果使用在线PCA分析的方法你可以参考一篇优秀的论文 "Incremental Eigenanalysis for Classification"。
下一章要讨论的奇异值分解方法也可以用于特征值分析。
```
* * *
* **作者:[片刻](http://www.apache.wiki/display/~jiangzhonglian)**
* [GitHub地址](https://github.com/apachecn/MachineLearning): <https://github.com/apachecn/MachineLearning>
* **版权声明:欢迎转载学习 => 请标注信息来源于 [ApacheCN](http://www.apache.wiki)**

View File

@@ -1,6 +1,8 @@
# 第14章 利用SVD简化数据
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>
![利用SVD简化数据首页](/images/14.SVD/svd_headPage.jpg "利用SVD简化数据首页")
```
奇异值分解SVD, Singular Value Decomposition:
提取信息的一种方法可以把SVD看成是从噪声数据中抽取相关特征。从生物信息学到金融学SVD是提出信息的强大工具。
@@ -115,3 +117,9 @@
* 1在大型系统中SVD分解(可以在程序调入时运行一次)每天运行一次或者其频率更低,并且还要离线运行。
* 2在实际中另一个普遍的做法就是离线计算并保存相似度得分。(物品相似度可能被用户重复的调用)
* 3冷启动问题解决方案就是将推荐看成是搜索问题通过各种标签属性特征进行`基于内容的推荐`
* * *
* **作者:[片刻](http://www.apache.wiki/display/~jiangzhonglian) [1988](http://www.apache.wiki/display/~lihuisong)**
* [GitHub地址](https://github.com/apachecn/MachineLearning): <https://github.com/apachecn/MachineLearning>
* **版权声明:欢迎转载学习 => 请标注信息来源于 [ApacheCN](http://www.apache.wiki)**

View File

@@ -1,22 +1,21 @@
# 大数据与MapReduce
> 本章内容
![大数据与MapReduce首页](/images/15.BigData_MapReduce/mr_headPage.jpg "大数据与MapReduce首页")
* MapReduce
* Python中Hadoop流的使用
* 使用mrjob库将MapReduce自动化
* 利用Pegasos算法并行训练支持向量机
`大数据: 收集到的数据已经远远超出了我们的处理能力。`
## MapReduce:分布式计算的框架
## MapReduce
```
优点:可在短时间内完成大量工作
缺点:算法必须经过重写,需要对系统工程有一定的理解
适用数据类型:数值型和标称型数据
Hadoop 是 MapRedece框架的一个免费开源实现
MapReduce: 分布式的计算框架,可以将单个计算作业分配给多台计算机执行
优点: 使程序以并行的方式执行,可在短时间内完成大量工作
缺点: 算法必须经过重写,需要对系统工程有一定的理解。
适用数据类型: 数值型和标称型数据。
```
* MapReduce集群的示意图
![MapReduce集群的示意图](/images/15.BigData_MapReduce/MR_1_cluster.jpg)
* MapReduce框架的示意图
* ![MapReduce框架的示意图](/images/15.BigData_MapReduce/mr_1_cluster.jpg)
> 关于MapRduce的学习要点
@@ -27,16 +26,104 @@
* 数据被重复存放在不同的机器上,以防止某个机器实效
* mapper和reducer传输的数据形式为key/value对
## Hadoop流
## Python中Hadoop流的使用
## 在Amazon网络服务商运行Hadoop程序
> 理论简介
例如: Hadoop流可以像Linux命令一样执行
```Shell
cat inputFile.txt | python mapper.py | sort | python reducer.py > outputFile.txt
```
类似的Hadoop流就可以在多台机器上分布式执行用户可以通过Linux命令来测试Python语言编写的MapReduce脚本。
> 实战脚本
```
# 测试 Mapper
# Linux
cat input/15.BigData_MapReduce/inputFile.txt | python src/python/15.BigData_MapReduce/mrMeanMapper.py
# # Window
# python src/python/15.BigData_MapReduce/mrMeanMapper.py < input/15.BigData_MapReduce/inputFile.txt
# 测试 Reducer
# Linux
cat input/15.BigData_MapReduce/inputFile.txt | python src/python/15.BigData_MapReduce/mrMeanMapper.py | python src/python/15.BigData_MapReduce/mrMeanReducer.py
# # Window
# python src/python/15.BigData_MapReduce/mrMeanMapper.py < input/15.BigData_MapReduce/inputFile.txt | python src/python/15.BigData_MapReduce/mrMeanReducer.py
```
## MapReduce上的机器学习
## 在Python中使用mrjob来自动化MapReduce
> Mahout in Action
## 示例分布式SVM的Pegasos算法
1. 简单贝叶斯:
2. k-近邻算法:
3. 支持向量机(SVM)使用随机梯度下降算法求解如Pegasos算法。
4. 奇异值分解Lanczos算法是一个有效的求解近似特征值的算法。
5. k-均值聚类canopy算法初始化k个簇然后再运行K-均值求解结果。
## 你真的需要MapReduce吗?
## 使用mrjob库将MapReduce自动化
## 本章小节
> 理论简介
* MapReduce作业流自动化的框架Cascading 和 Oozie.
* mrjob是一个不错的学习工具与2010年底实现了开源来之于Yelp(一个餐厅点评网站).
```Shell
python mrMean.py < inputFile.txt > myOut.txt
```
> 实战脚本
```
# 测试 mrjob的案例
# 先测试一下mapper方法
# python src/python/15.BigData_MapReduce/mrMean.py --mapper < input/15.BigData_MapReduce/inputFile.txt
# 运行整个程序,移除 --mapper 就行
python src/python/15.BigData_MapReduce/mrMean.py < input/15.BigData_MapReduce/inputFile.txt
```
## 利用Pegasos算法并行训练支持向量机
> 在MapReduce框架上使用SVM的一般方法
```
收集数据:数据按文本格式存放。
准备数据输入数据已经是可用的格式所以不需任何准备工作。如果你需要解析一个大规模的数据集建议使用map作业来完成从而达到并行处理的目的。
分析数据:无。
训练算法与普通的SVM一样在分类器训练上仍需花费大量的时间。
测试算法:在二维空间上可视化之后,观察超平面,判断算法是否有效。
使用算法本例不会展示一个完整的应用但会展示如何在大数据集上训练SVM。该算法其中一个应用场景就是本文分类通常在文本分类里可能有大量的文档和成千上万的特征。
```
> Pegasos 算法
Pegasos是指原始估计梯度求解器(Peimal Estimated sub-GrAdient Solver)。
Pegasos算法工作流程是
1. 从训练集中随机挑选一些样本点添加到带处理列表中
2. 按序判断每个样本点是否被正确分类
* 如果是则忽略
* 如果不是则将其加入到待更新集合。
3. 批处理完毕后,权重向量按照这些错分的样本进行更新。
上述算法伪代码如下:
```
将w初始化为0
对每次批处理
随机选择k个样本点(向量)
对每个向量
如果该向量被错分:
更新权重向量w
累加对w的更新
```
我们继续看Python版本的代码实现。
* * *
* **作者:[片刻](http://www.apache.wiki/display/~jiangzhonglian) [小瑶](http://www.apache.wiki/users/viewmyprofile.action)**
* [GitHub地址](https://github.com/apachecn/MachineLearning): <https://github.com/apachecn/MachineLearning>
* **版权声明:欢迎转载学习 => 请标注信息来源于 [ApacheCN](http://www.apache.wiki)**