编辑推荐

  《Spark MLlib机器学习:算法、源码及实战详解》系统、全面、深入地解析了SparkMLlib机器学习的相关知识,着力于探索分布式机器学习的底层实现。

  以源码为基础,兼顾算法、理论与实战,帮助读者在实际工作中进行MLlib的应用开发和定制开发。  适合大数据、Spark、数据挖掘领域的从业人员阅读。

内容简介

  《SparkMLlib机器学习:算法、源码及实战详解》以Spark1.4.1版本源码为切入点,全面并且深入地解析SparkMLlib模块,着力于探索分布式机器学习的底层实现。

  《SparkMLlib机器学习:算法、源码及实战详解》中本着循序渐进的原则,首先解析MLlib的底层实现基础:数据操作及矩阵向量计算操作,该部分是MLlib实现的基础;接着对各个机器学习算法的理论知识进行讲解,并且解析机器学习算法如何在MLlib中实现分布式计算;然后对MLlib源码进行详细的讲解;最后进行MLlib实例的讲解。相信通过《SparkMLlib机器学习:算法、源码及实战详解》的学习,读者可全面掌握SparkMLlib机器学习,能够进行MLlib实战、MLlib定制开发等。  《SparkMLlib机器学习:算法、源码及实战详解》适合大数据、Spark、数据挖掘领域的从业人员阅读,同时也为Spark开发者和大数据爱好者展现了分布式机器学习的原理和实现细节。

作者简介

  黄美灵,久邦数码高级数据挖掘工程师,Spark爱好者,致力于分布式机器学习的研究与应用,现从事移动互联网的计算广告和数据变现工作,专注Spark机器学习在计算广告中的研究和实践。

目录

第一部分 SparkMLlib基础
第1章 Spark机器学习简介2
1.1 机器学习介绍2
1.2 Spark介绍3
1.3 SparkMLlib介绍4
第2章 Spark数据操作6
2.1 SparkRDD操作6
2.1.1 SparkRDD创建操作6
2.1.2 SparkRDD转换操作7
2.1.3 SparkRDD行动操作14
2.2 MLlibStatistics统计操作15
2.2.1 列统计汇总15
2.2.2 相关系数16
2.2.3 假设检验18
2.3 MLlib数据格式18
2.3.1 数据处理18
2.3.2 生成样本22
第3章 SparkMLlib矩阵向量26
3.1 Breeze介绍26
3.1.1 Breeze创建函数27
3.1.2 Breeze元素访问及操作函数29
3.1.3 Breeze数值计算函数34
3.1.4 Breeze求和函数35
3.1.5 Breeze布尔函数36
3.1.6 Breeze线性代数函数37
3.1.7 Breeze取整函数39
3.1.8 Breeze常量函数40
3.1.9 Breeze复数函数40
3.1.10 Breeze三角函数40
3.1.11 Breeze对数和指数函数40
3.2 BLAS介绍41
3.2.1 BLAS向量-向量运算42
3.2.2 BLAS矩阵-向量运算42
3.2.3 BLAS矩阵-矩阵运算43
3.3 MLlib向量43
3.3.1 MLlib向量介绍43
3.3.2 MLlibVector接口44
3.3.3 MLlibDenseVector类46
3.3.4 MLlibSparseVector类49
3.3.5 MLlibVectors伴生对象50
3.4 MLlib矩阵57
3.4.1 MLlib矩阵介绍57
3.4.2 MLlibMatrix接口57
3.4.3 MLlibDenseMatrix类59
3.4.4 MLlibSparseMatrix类64
3.4.5 MLlibMatrix伴生对象71
3.5 MLlibBLAS77
3.6 MLlib分布式矩阵93
3.6.1 MLlib分布式矩阵介绍93
3.6.2 行矩阵(RowMatrix)94
3.6.3 行索引矩阵(IndexedRowMatrix)96
3.6.4 坐标矩阵(CoordinateMatrix)97
3.6.5 分块矩阵(BlockMatrix)98

第二部分 SparkMLlib回归算法
第4章 SparkMLlib线性回归算法102
4.1 线性回归算法102
4.1.1 数学模型102
4.1.2 最小二乘法105
4.1.3 梯度下降算法105
4.2 源码分析106
4.2.1 建立线性回归108
4.2.2 模型训练run方法111
4.2.3 权重优化计算114
4.2.4 线性回归模型121
4.3 实例123
4.3.1 训练数据123
4.3.2 实例代码123
第5章 SparkMLlib逻辑回归算法126
5.1 逻辑回归算法126
5.1.1 数学模型126
5.1.2梯度下降算法128
5.1.3 正则化129
5.2 源码分析132
5.2.1 建立逻辑回归134
5.2.2 模型训练run方法137
5.2.3 权重优化计算137
5.2.4 逻辑回归模型144
5.3 实例148
5.3.1 训练数据148
5.3.2 实例代码148
第6章 SparkMLlib保序回归算法151
6.1 保序回归算法151
6.1.1 数学模型151
6.1.2 L2保序回归算法153
6.2 源码分析153
6.2.1 建立保序回归154
6.2.2 模型训练run方法156
6.2.3 并行PAV计算156
6.2.4 PAV计算157
6.2.5 保序回归模型159
6.3 实例164
6.3.1 训练数据164
6.3.2 实例代码164

第三部分 SparkMLlib分类算法
第7章 SparkMLlib贝叶斯分类算法170
7.1 贝叶斯分类算法170
7.1.1 贝叶斯定理170
7.1.2 朴素贝叶斯分类171
7.2 源码分析173
7.2.1 建立贝叶斯分类173
7.2.2 模型训练run方法176
7.2.3 贝叶斯分类模型179
7.3 实例181
7.3.1 训练数据181
7.3.2 实例代码182
第8章 SparkMLlibSVM支持向量机算法184
8.1 SVM支持向量机算法184
8.1.1 数学模型184
8.1.2 拉格朗日186
8.2 源码分析189
8.2.1 建立线性SVM分类191
8.2.2 模型训练run方法194
8.2.3 权重优化计算194
8.2.4 线性SVM分类模型196
8.3 实例199
8.3.1 训练数据199
8.3.2 实例代码199
第9章 SparkMLlib决策树算法202
9.1 决策树算法202
9.1.1 决策树202
9.1.2 特征选择203
9.1.3 决策树生成205
9.1.4 决策树生成实例206
9.1.5 决策树的剪枝208
9.2 源码分析209
9.2.1 建立决策树211
9.2.2 建立随机森林216
9.2.3 建立元数据220
9.2.4 查找特征的分裂及划分223
9.2.5 查找最好的分裂顺序228
9.2.6 决策树模型231
9.3 实例234
9.3.1 训练数据234
9.3.2 实例代码234

第四部分 SparkMLlib聚类算法
第10章 SparkMLlibKMeans聚类算法238
10.1 KMeans聚类算法238
10.1.1 KMeans算法238
10.1.2 演示KMeans算法239
10.1.3 初始化聚类中心点239
10.2 源码分析240
10.2.1 建立KMeans聚类242
10.2.2 模型训练run方法247
10.2.3 聚类中心点计算248
10.2.4 中心点初始化251
10.2.5 快速距离计算254
10.2.6 KMeans聚类模型255
10.3 实例258
10.3.1 训练数据258
10.3.2 实例代码259
第11章 SparkMLlibLDA主题模型算法261
11.1 LDA主题模型算法261
11.1.1 LDA概述261
11.1.2 LDA概率统计基础262
11.1.3 LDA数学模型264
11.2 GraphX基础267
11.3 源码分析270
11.3.1 建立LDA主题模型272
11.3.2 优化计算279
11.3.3 LDA模型283
11.4 实例288
11.4.1 训练数据288
11.4.2 实例代码288

第五部分 SparkMLlib关联规则挖掘算法
第12章 SparkMLlibFPGrowth关联规则算法292
12.1 FPGrowth关联规则算法292
12.1.1 基本概念292
12.1.2 FPGrowth算法293
12.1.3 演示FP树构建294
12.1.4 演示FP树挖掘296
12.2 源码分析298
12.2.1 FPGrowth类298
12.2.2 关联规则挖掘300
12.2.3 FPTree类303
12.2.4 FPGrowthModel类306
12.3 实例306
12.3.1 训练数据306
12.3.2 实例代码306

第六部分 SparkMLlib推荐算法
第13章 SparkMLlibALS交替最小二乘算法310
13.1 ALS交替最小二乘算法310
13.2 源码分析312
13.2.1 建立ALS314
13.2.2 矩阵分解计算322
13.2.3 ALS模型329
13.3 实例334
13.3.1 训练数据334
13.3.2 实例代码334
第14章 SparkMLlib协同过滤推荐算法337
14.1 协同过滤推荐算法337
14.1.1 协同过滤推荐概述337
14.1.2 用户评分338
14.1.3 相似度计算338
14.1.4 推荐计算340
14.2 协同推荐算法实现341
14.2.1 相似度计算344
14.2.2 协同推荐计算348
14.3 实例350
14.3.1 训练数据350
14.3.2 实例代码350

第七部分 SparkMLlib神经网络算法
第15章 SparkMLlib神经网络算法综述354
15.1 人工神经网络算法354
15.1.1 神经元354
15.1.2 神经网络模型355
15.1.3信号前向传播356
15.1.4 误差反向传播357
15.1.5 其他参数360
15.2 神经网络算法实现361
15.2.1 神经网络类363
15.2.2 训练准备370
15.2.3 前向传播375
15.2.4 误差反向传播377
15.2.5 权重更新381
15.2.6 ANN模型382
15.3 实例384
15.3.1 测试数据384
15.3.2 测试函数代码387
15.3.3 实例代码388

前言/序言

  机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科,其中大部分理论来源于18、19世纪,例如贝叶斯定理,是18世纪英国数学家托马斯·贝叶斯(ThomasBayes)提出的重要概率论理论;而21世纪则侧重于如何将机器学习理论运用在工业化中,帮助改进性能及提升其效率。
  机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。在算法设计方面,机器学习理论关注可以实现的、行之有效的学习算法;机器学习研究的不是求解精确的结果,而是研究开发容易处理的近似求解算法。尤其是在21世纪,知识和数据量爆发的时代,机器学习面临大数据的求解难题。
  随着数据量的增加,从传统的单机计算发展到大规模的集群计算,以至发展到今天的一种大规模、快速计算的集群平台—ApacheSpark。Spark是一个开源集群运算框架,最初由加州大学伯克利分校AMP实验室开发。相对于Hadoop的MapReduce会在执行完工作后将中介资料存放到磁盘中,Spark使用了内存内运算技术,能在资料尚未写入硬盘时即在内存内分析运算。Spark在内存上的运算速度比HadoopMapReduce的运算速度快100倍,即便是在磁盘上运行也能快10倍。Spark允许将数据加载至集群内存,并多次对其进行查询,非常适合用于机器学习算法。
  《Spark MLlib机器学习:算法、源码及实战详解》侧重讲解SparkMLlib模块。SparkMLlib是一种高效、快速、可扩展的分布式计算框架,实现了常用的机器学习,如聚类、分类、回归等算法。本文循序渐进,从Spark的基础知识、矩阵向量的基础知识开始,然后再讲解各种算法的理论知识,以及Spark源码实现和实例实战,帮助读者从基础到实践全面掌握SparkMLlib分布式机器学习。
  学习《Spark MLlib机器学习:算法、源码及实战详解》需要的基础知识包括:Spark基础入门、Scala入门、线性代数基础知识。
  《Spark MLlib机器学习:算法、源码及实战详解》面向的读者:Spark开发者、大数据工程师、数据挖掘工程师、机器学习工程师、研究生和高年级本科生等。
  在《Spark MLlib机器学习:算法、源码及实战详解》的编写过程中,何娟、何丹、王蒙、叶月媚参与了《Spark MLlib机器学习:算法、源码及实战详解》的编写、整理及校对工作,刘程辉、李俊、廖宏参与了Spark集群运维和第2章数据操作的实例部分工作,刘晓宏、方佳武、于善龙参与了《Spark MLlib机器学习:算法、源码及实战详解》的实例部分工作。
  《Spark MLlib机器学习:算法、源码及实战详解》在写作的过程中,得到了很多朋友及同事的帮助和支持,在此表示衷心感谢!
  感谢久邦数码大数据团队的同事们。在两年的工作中,笔者得到了很多同事的指导、支持和帮助,尤其感谢杨树清、周小平、梁宁、刘程辉、刘晓宏、方佳武、于善龙、王蒙、叶月媚、廖宏、谭钊承、吴梦玲、邹桂芳、曹越等。
  感谢电子工业出版社的付睿编辑,她不仅积极策划和推动《Spark MLlib机器学习:算法、源码及实战详解》的出版,而且在写作过程中还给出了极为详细的改进意见。感谢电子工业出版社的李云静编辑为《Spark MLlib机器学习:算法、源码及实战详解》做了非常辛苦和专业的编辑工作。
  感谢我的父母和妻子,有了你们的帮助和支持,我才有时间和精力去完成写作。
  谨以此书献给热爱大数据技术的朋友们!


其他推荐