适读人群 :机器学习从业者、数据科学家,以及对机器学习、Spark和Spark MLlib感兴趣的读者 本书介绍如何利用Spark平台上的实际文档和示例来构建大型企业级机器学习应用。
在过去10年中,机器学习领域取得了一系列突破性进展。这些突破性进展正在对我们的生活和各行各业产生深远影响。
本书首先对Spark和Spark MLlib做了介绍,除标准Spark MLlib库之外,还介绍了更强大的第三方机器学习算法和库。在本书的最后解释了通过对多个实际用例,以帮助读者了解机器学习知识在实际生活中的应用。
本书内容:
机器学习、Spark和Spark MLlib 2.4.x的相关内容。
使用XGBoost4J-Spark和LightGBM库实现Spark上的快速梯度提升。
利用Spark的孤立森林算法实现异常检测。
使用支持多种语言的Spark NLP和Stanford CoreNLP库。
使用Alluxio内存数据加速器优化Spark上的机器学习工作负载。
使用GraphX和GraphFrames进行图分析。
使用卷积神经网络进行图像识别。
通过Spark使用Keras框架和分布式深度学习库。
本书对Spark框架和Spark机器学习库Spark MLlib做了比较直观的介绍。但是,这不是一本介绍Spark MLlib标准算法的书。本书关注的重点是强大的第三方机器学习算法和标准Spark MLlib库之外的库。本书所涉及的一些高级主题包括XGBoost4J-Spark、Spark上的LightGBM、孤立森林、Spark NLP、Stanford CoreNLP、Alluxio、Keras分布式深度学习、使用Elephas的Spark以及分布式Keras等。
本书假定读者以前没有Spark和Spark MLlib相关经验,但如果想实践本书中的示例,有些机器学习、Scala和Python的相关知识会有所帮助。强烈建议通读这些示例并尝试使用代码清单进行练习,将本书充分利用起来。第1章简单介绍机器学习。第2章介绍Spark和Spark MLlib。如果你想学习更加高级的内容,可以直接阅读你感兴趣的章节。本书适合机器学习相关从业者阅读。我尽可能让本书简单实用,专注于实际操作,而不是专注于理论(尽管本书中也有很多这样的内容)。如果需要更加全面的机器学习介绍,建议阅读一下其他的相关资料,例如Gareth James、Daniela Witten、Trevor Hastie和Robert Tibshirani所著的An Introduction to Statistical Learning(Springer, 2017)以及Trevor Hastie、Robert Tibshirani和Jerome Friedman所著的The Elements of Statistical Learning(Springer, 2016)。有关Spark MLlib的更多信息,请参阅Apache Spark的Machine Learning Library。对于深度学习更加深入的讨论,推荐Ian Goodfellow、Yoshua Bengio和 Aaron Courville所著的Deep Learning (MIT Press, 2016)。
Butch Quinto是Intelvi AI这家人工智能公司的创始人兼首席人工智能官,该公司为国防、工业和交通行业开发尖端解决方案。作为首席人工智能官,Butch负责战略、创新、研究和开发。此前,他曾在一家领先的技术公司担任人工智能主管,在一家人工智能初创公司担任首席数据官。在任职德勤(Deloitte)的分析总监期间,他曾领导多个企业级人工智能和物联网解决方案的开发,以及战略、业务发展和风险投资尽职调查方面的工作。Butch在银行与金融、电信、政府部门、公共事业、交通运输、电子商务、零售业、制造业和生物信息学等多个行业拥有20多年的技术和领导经验。他是Next-Generation Big Data(Apress,2018)的作者,也是人工智能促进协会(AAAI)和美国科学促进会(AAAS)的成员。
关于技术审校人员
Irfan Elahi在数据科学和机器学习领域拥有多年经验。他曾在咨询公司、自己的创业公司和学术研究实验室等多个垂直领域工作过。多年来,他在电信、零售业、网络、公共部门和能源等不同领域参与过很多数据科学和机器学习项目,旨在使企业从其数据资产中获得巨大价值。
目 录
前言
致谢
关于作者
关于技术审校人员
第1章 机器学习介绍 1
1.1 人工智能和机器学习用例 2
1.1.1 零售业 2
1.1.2 交通运输 3
1.1.3 金融服务 3
1.1.4 医疗保健和生物技术 3
1.1.5 制造业 3
1.1.6 政府部门 4
1.2 机器学习与数据 4
1.3 机器学习方法 6
1.3.1 有监督学习 6
1.3.2 无监督学习 6
1.3.3 半监督学习 6
1.3.4 强化学习 6
1.4 深度学习 7
1.5 神经网络 7
1.6 卷积神经网络 7
1.7 特征工程 7
1.7.1 特征选择 8
1.7.2 特征重要性 9
1.7.3 特征提取 9
1.7.4 特征构建 9
1.8 模型评估 10
1.8.1 准确率 10
1.8.2 精度 10
1.8.3 召回率 11
1.8.4 F1度量 11
1.8.5 AUROC 11
1.9 过拟合与欠拟合 12
1.10 模型选择 12
1.11 总结 12
1.12 参考资料 13
第2章 Spark和Spark MLlib
介绍 16
2.1 概述 16
2.2 架构 17
2.3 执行Spark应用程序 19
2.3.1 集群模式 19
2.3.2 客户端模式 19
2.4 spark-shell介绍 19
2.4.1 SparkSession 20
2.4.2 弹性分布式数据集 21
2.5 Spark SQL、DataSet和DataFrame的 API 29
2.6 Spark数据源 31
2.6.1 CSV 31
2.6.2 XML 31
2.6.3 JSON 32
2.6.4 关系数据库和MPP数据库 33
2.6.5 Parquet 36
2.6.6 HBase 36
2.6.7 Amazon S3 41
2.6.8 Solr 42
2.6.9 Microsoft Excel 43
2.6.10 SFTP 44
2.7 Spark MLlib介绍 44
2.8 ML管道 46
2.8.1 管道 47
2.8.2 转换器 47
2.8.3 估计器 47
2.8.4 ParamGridBuilder 47
2.8.5 CrossValidator 47
2.8.6 评估器 47
2.9 特征提取、转换和选择 48
2.9.1 StringIndexer 48
2.9.2 Tokenizer 49
2.9.3 VectorAssembler 50
2.9.4 StandardScaler 51
2.9.5 StopWordsRemover 52
2.9.6 n-gram 52
2.9.7 OneHotEncoderEstimator 53
2.9.8 SQLTransformer 54
2.9.9 词频–逆文档频率 55
2.9.10 主成分分析 57
2.9.11 ChiSqSelector 57
2.9.12 Correlation 58
2.10 评估指标 60
2.10.1 AUROC 60
2.10.2 F1度量 61
2.10.3 均方根误差 61
2.11 模型持久化 62
2.12 Spark MLlib示例 62
2.13 图处理 66
2.14 超越Spark MLlib:第三方机器学习集成 66
2.15 利用Alluxio优化Spark和Spark MLlib 66
2.16 为什么使用Alluxio 68
2.16.1 显著提高大数据处理性能和可扩展性 68
2.16.2 多个框架和应用程序可以以读写内存的速度共享数据 69
2.17 在应用程序终止或失败时提供高可用性和持久性 71
2.18 优化总体内存使用并最小化垃圾收集 74
2.19 降低硬件要求 74
2.20 Apache Spark和Alluxio 75
2.21 总结 75
2.22 参考资料 76
第3章 有监督学习 79
3.1 分类 79
3.1.1 分类类型 79
3.1.2 Spark MLlib分类算法 80
3.1.3 第三方分类和回归算法 85
3.1.4 使用逻辑回归算法的多类别分类 86
3.1.5 使用随机森林算法进行流失预测 95
3.1.6 使用XGBoost4J-Spark的极端梯度提升算法 108
3.1.7 LightGBM:来自微软的快速梯度提升算法 118
3.1.8 使用朴素贝叶斯进行情感分析 127
3.2 回归 133
3.2.1 简单线性回归 134
3.2.2 使用XGBoost4J-Spark进行多元回归分析 137
3.2.3 使用LightGBM进行多元回归分析 143
3.3 总结 148
3.4 参考资料 149
第4章 无监督学习 154
4.1 k-means聚类算法 154
4.2 使用隐含狄利克雷分布进行主题建模 162
4.2.1 Stanford CoreNLP 163
4.2.2 John Snow实验室的Spark NLP 164
4.2.3 示例 170
4.3 使用孤立森林进行异常检测 182
4.3.1 参数 185
4.3.2 示例 186
4.4 使用主成分分析进行降维 188
4.5 总结 197
4.6 参考资料 197
第5章 推荐 200
5.1 推荐引擎的种类 201
5.1.1 使用交替最小二乘法的协同过滤 201
5.1.2 参数 203
5.1.3 示例 203
5.2 使用FP增长进行购物篮分析 209
5.2.1 示例 210
5.2.2 基于内容的过滤 217
5.3 总结 218
5.4 参考资料 218
第6章 图分析 221
6.1 图介绍 221
6.1.1 无向图 221
6.1.2 有向图 222
6.1.3 有向多重图 222
6.1.4 属性图 223
6.2 图分析用例 223
6.2.1 欺诈检测和反洗钱 224
6.2.2 数据治理和法规遵从性 224
6.2.3 风险管理 224
6.2.4 运输 225
6.2.5 社交网络 225
6.2.6 网络基础设施管理 225
6.3 GraphX简介 225
6.3.1 Graph 225
6.3.2 VertexRDD 226
6.3.3 Edge 226
6.3.4 EdgeRDD 226
6.3.5 EdgeTriplet 226
6.3.6 EdgeContext 226
6.3.7 GraphX 示例 226
6.3.8 图算法 229
6.3.9 GraphFrames 232
6.4 总结 235
6.5 参考资料 236
第7章 深度学习 238
7.1 神经网络 239
7.2 神经网络的简短历史 240
7.3 卷积神经网络 242
7.4 深度学习框架 247
7.4.1 TensorFlow 247
7.4.2 Theano 247
7.4.3 PyTorch 247
7.4.4 DeepLearning4J 247
7.4.5 CNTK 248
7.4.6 Keras 248
7.4.7 使用Keras进行深度学习 248
7.5 Spark分布式深度学习 258
7.5.1 模型并行与数据并行 258
7.5.2 Spark分布式深度学习框架 259
7.6 Elephas:使用Keras和Spark进行分布式深度学习 261
7.7 Dist-Keras 270
7.7.1 使用基于Keras和Spark的Dist-Keras来识别MNIST中的手写数字 271
7.7.2 猫和狗的图像分类 276
7.8 总结 283
7.9 参考资料 283