第一部分 Hadoop中的数据科学概览 2
第1章 数据科学概述 2
1.1 数据科学究竟是什么 2
1.2 示例:搜索广告 3
1.3 数据科学史一瞥 4
1.3.1 统计学与机器学习 4
1.3.2 互联网巨头的创新 5
1.3.3 现代企业中的数据科学 6
1.4 数据科学家的成长之路 6
1.4.1 数据工程师 7
1.4.2 应用科学家 7
1.4.3 过渡到数据科学家角色 8
1.4.4 数据科学家的软技能 9
1.5 数据科学团队的组建 10
1.6 数据科学项目的生命周期 11
1.6.1 问正确的问题 11
1.6.2 数据摄取 12
1.6.3 数据清洗:注重数据质量 12
1.6.4 探索数据和设计模型特征 13
1.6.5 构建和调整模型 13
1.6.6 部署到生产环境 14
1.7 数据科学项目的管理 14
1.8 小结 15
第2章 数据科学用例 16
2.1 大数据——变革的驱动力 16
2.1.1 容量:更多可用数据 17
2.1.2 多样性:更多数据类型 17
2.1.3 速度:快速数据摄取 18
2.2 商业用例 18
2.2.1 产品推荐 18
2.2.2 客户流失分析 19
2.2.3 客户细分 19
2.2.4 销售线索的优先级 20
2.2.5 情感分析 20
2.2.6 欺诈检测 21
2.2.7 预测维护 22
2.2.8 购物篮分析 22
2.2.9 预测医学诊断 23
2.2.10 预测患者再入院 23
2.2.11 检测异常访问 24
2.2.12 保险风险分析 24
2.2.13 预测油气井生产水平 24
2.3 小结 25
第3章 Hadoop与数据科学 26
3.1 Hadoop究竟为何物 26
3.1.1 分布式文件系统 27
3.1.2 资源管理器和调度程序 28
3.1.3 分布式数据处理框架 29
3.2 Hadoop的演进历史 31
3.3 数据科学的Hadoop工具 32
3.3.1 Apache Sqoop 33
3.3.2 Apache Flume 33
3.3.3 Apache Hive 34
3.3.4 Apache Pig 35
3.3.5 Apache Spark 36
3.3.6 R 37
3.3.7 Python 38
3.3.8 Java机器学习软件包 39
3.4 Hadoop为何对数据科学家有用 39
3.4.1 成本有效的存储 39
3.4.2 读取模式 40
3.4.3 非结构化和半结构化数据 40
3.4.4 多语言工具 41
3.4.5 强大的调度和资源管理功能 41
3.4.6 分布式系统抽象分层 42
3.4.7 可扩展的模型创建 42
3.4.8 模型的可扩展应用 43
3.5 小结 43
第二部分 用Hadoop准备和可视化数据 46
第4章 将数据导入Hadoop 46
4.1 Hadoop数据湖 46
4.2 Hadoop分布式文件系统 47
4.3 直接传输文件到HDFS 48
4.4 将数据从文件导入Hive表 49
4.5 使用Spark将数据导入Hive表 52
4.5.1 使用Spark将CSV文件导入Hive 52
4.5.2 使用Spark将JSON文件导入Hive 54
4.6 使用Apache Sqoop获取关系数据 55
4.6.1 使用Sqoop导入和导出数据 55
4.6.2 Apache Sqoop版本更改 56
4.6.3 使用Sqoop版本2:基本示例 57
4.7 使用Apache Flume获取数据流 63
4.8 使用Apache Oozie管理Hadoop工作和数据流 67
4.9 Apache Falcon 68
4.10 数据摄取的下一步是什么 69
4.11 小结 70
第5章 使用Hadoop进行数据再加工 71
5.1 为什么选择Hadoop做数据再加工 72
5.2 数据质量 72
5.2.1 什么是数据质量 72
5.2.2 处理数据质量问题 73
5.2.3 使用Hadoop进行数据质量控制 76
5.3 特征矩阵 78
5.3.1 选择“正确”的特征 78
5.3.2 抽样:选择实例 79
5.3.3 生成特征 80
5.3.4 文本特征 81
5.3.5 时间序列特征 84
5.3.6 来自复杂数据类型的特征 84
5.3.7 特征操作 85
5.3.8 降维 86
5.4 小结 88
第6章 探索和可视化数据 89
6.1 为什么要可视化数据 89
6.1.1 示例:可视化网络吞吐量 89
6.1.2 想象未曾发生的突破 92
6.2 创建可视化 93
6.2.1 对比图 94
6.2.2 组成图 96
6.2.3 分布图 98
6.2.4 关系图 99
6.3 针对数据科学使用可视化 101
6.4 流行的可视化工具 101
6.4.1 R 101
6.4.2 Python:Matplotlib、Seaborn和其他 102
6.4.3 SAS 102
6.4.4 Matlab 103
6.4.5 Julia 103
6.4.6 其他可视化工具 103
6.5 使用Hadoop可视化大数据 103
6.6 小结 104
第三部分 使用Hadoop进行数据建模 106
第7章 Hadoop与机器学习 106
7.1 机器学习概述 106
7.2 术语 107
7.3 机器学习中的任务类型 107
7.4 大数据和机器学习 108
7.5 机器学习工具 109
7.6 机器学习和人工智能的未来 110
7.7 小结 110
第8章 预测建模 111
8.1 预测建模概述 111
8.2 分类与回归 112
8.3 评估预测模型 113
8.3.1 评估分类器 114
8.3.2 评估回归模型 116
8.3.3 交叉验证 117
8.4 有监督学习算法 117
8.5 构建大数据预测模型的解决方案 118
8.5.1 模型训练 118
8.5.2 批量预测 120
8.5.3 实时预测 120
8.6 示例:情感分析 121
8.6.1 推文数据集 121
8.6.2 数据准备 122
8.6.3 特征生成 122
8.6.4 建立一个分类器 125
8.7 小结 126
第9章 聚类 127
9.1 聚类概述 127
9.2 聚类的使用 128
9.3 设计相似性度量 128
9.3.1 距离函数 129
9.3.2 相似函数 129
9.4 聚类算法 130
9.5 示例:聚类算法 131
9.5.1 k均值聚类 131
9.5.2 LDA 131
9.6 评估聚类和选择集群数量 132
9.7 构建大数据集群解决方案 133
9.8 示例:使用LDA进行主题建模 134
9.8.1 特征生成 135
9.8.2 运行LDA 136
9.9 小结 137
第10章 Hadoop异常检测 139
10.1 概述 139
10.2 异常检测的使用 140
10.3 数据中的异常类型 140
10.4 异常检测的方法 141
10.4.1 基于规则方法 141
10.4.2 有监督学习方法 141
10.4.3 无监督学习方法 142
10.4.4 半监督学习方法 143
10.5 调整异常检测系统 143
10.6 使用Hadoop构建大数据异常检测解决方案 144
10.7 示例:检测网络入侵 145
10.7.1 数据摄取 147
10.7.2 建立一个分类器 148
10.7.3 性能评估 150
10.8 小结 151
第11章 自然语言处理 152
11.1 自然语言处理概述 152
11.1.1 历史方法 153
11.1.2 NLP用例 153
11.1.3 文本分割 153
11.1.4 词性标注 154
11.1.5 命名实体识别 154
11.1.6 情感分析 154
11.1.7 主题建模 155
11.2 Hadoop中用于NLP的工具 155
11.2.1 小模型NLP 155
11.2.2 大模型NLP 156
11.3 文本表示 157
11.3.1 词袋模型 157
11.3.2 Word2vec 158
11.4 情感分析示例 158
11.4.1 Stanford CoreNLP 159
11.4.2 用Spark进行情感分析 159
11.5 小结 162
第12章 数据科学与Hadoop——下一个前沿 163
12.1 自动数据发现 163
12.2 深度学习 164
12.3 小结 167
附录A 本书网站和代码下载 168
附录B HDFS快速入门 169
附录C 数据科学、Apache Hadoop和Spark的补充背景知识 175