书籍详情
数据分析之图算法:基于Spark和Neo4j
作者:马克·尼达姆,埃米·E.霍德勒 著,唐富年 译
出版社:人民邮电出版社
出版时间:2020-09-01
ISBN:9787115546678
定价:¥79.00
购买这本书可以去
内容简介
图分析可以揭示复杂系统和大规模网络的运作机制,图算法为构建智能应用程序提供了快速建模的框架,有助于更准确、更快速地做出预测。包括商品推荐和欺诈检测在内的许多人工智能问题能转换为图论问题。本书基于Spark和Neo4j讲解近20种常用的图算法,帮助读者拓展重要图分析类型的相关知识和能力,更快速地发现数据中的模式并找到更优的解决方案。
作者简介
马克·尼达姆(Mark Needham)Neo4j公司开发者关系工程师,Neo4j认证专家,曾深度参与Neo4j因果集群的开发工作。马克致力于帮助客户运用图数据库,善于针对富有挑战性的数据问题构建综合的解决方案。埃米·E. 霍德勒(Amy E. Hodler)Neo4j公司图分析与人工智能项目总监,热爱网络科学,在图分析项目的开发和运营方面有着丰富的经验,曾成功带领团队为EDS、微软、惠普等公司创造新的商机。
目录
序 xi
前言 xiii
第 1章 导论 1
1.1 何谓图 1
1.2 何谓图分析和图算法 3
1.3 图处理、图数据库、图查询和图算法 5
1.4 为何要关心图算法 6
1.5 图分析用例 9
1.6 小结 10
第 2章 图论及其概念 11
2.1 术语 11
2.2 图的类型和结构 12
2.3 图的种类 14
2.3.1 连通图与非连通图 14
2.3.2 无权图与加权图 15
2.3.3 无向图与有向图 16
2.3.4 无环图与有环图 17
2.3.5 稀疏图与稠密图 18
2.3.6 单部图、二部图和k部图 19
2.4 图算法的类型 21
2.4.1 路径查找 21
2.4.2 中心性 21
2.4.3 社团发现 22
2.5 小结 22
第3章 图平台和图处理 23
3.1 图平台和图处理的注意事项 23
3.1.1 平台注意事项 23
3.1.2 处理注意事项 24
3.2 典型平台 25
3.2.1 选择平台 25
3.2.2 Apache Spark 26
3.2.3 Neo4j图平台 28
3.3 小结 30
第4章 路径查找算法和图搜索算法 31
4.1 示例数据:交通图 33
4.1.1 将数据导入Spark 35
4.1.2 将数据导入Neo4j 36
4.2 广度优先搜索 36
4.3 深度优先搜索 38
4.4 最短路径算法 40
4.4.1 何时使用最短路径算法 41
4.4.2 使用Neo4j实现最短路径算法 41
4.4.3 使用Neo4j实现加权最短路径算法 43
4.4.4 使用Spark实现加权最短路径算法 44
4.4.5 最短路径算法的变体:A*算法 46
4.4.6 最短路径算法的变体:Yen的k最短路径算法 48
4.5 所有点对最短路径算法 49
4.5.1 近观所有点对最短路径算法 50
4.5.2 何时使用所有点对最短路径算法 51
4.5.3 使用Spark实现所有点对最短路径算法 51
4.5.4 使用Neo4j实现所有点对最短路径算法 52
4.6 单源最短路径算法 53
4.6.1 何时使用单源最短路径算法 54
4.6.2 使用Spark实现单源最短路径算法 55
4.6.3 使用Neo4j实现单源最短路径算法 57
4.7 最小生成树算法 57
4.7.1 何时使用最小生成树算法 58
4.7.2 使用Neo4j实现最小生成树算法 59
4.8 随机游走算法 61
4.8.1 何时使用随机游走算法 61
4.8.2 使用Neo4j实现随机游走算法 61
4.9 小结 63
第5章 中心性算法 64
5.1 示例数据:社交图 66
5.1.1 将数据导入Spark 67
5.1.2 将数据导入Neo4j 67
5.2 度中心性算法 68
5.2.1 可达性 68
5.2.2 何时使用度中心性算法 69
5.2.3 使用Spark实现度中心性算法 69
5.3 接近中心性算法 70
5.3.1 何时使用接近中心性算法 71
5.3.2 使用Spark实现接近中心性算法 72
5.3.3 使用Neo4j实现接近中心性算法 74
5.3.4 接近中心性算法变体:Wasserman & Faust算法 75
5.3.5 接近中心性算法变体:调和中心性算法 77
5.4 中间中心性算法 78
5.4.1 桥与控制点 78
5.4.2 计算中间中心性得分 79
5.4.3 何时使用中间中心性算法 79
5.4.4 使用Neo4j实现中间中心性算法 80
5.4.5 中间中心性算法变体:RA-Brandes算法 82
5.5 PageRank算法 83
5.5.1 影响力 84
5.5.2 PageRank算法公式 84
5.5.3 迭代、随机冲浪者和等级沉没 85
5.5.4 何时使用PageRank算法 86
5.5.5 使用Spark实现PageRank算法 87
5.5.6 使用Neo4j实现PageRank算法 88
5.5.7 PageRank算法变体:个性化PageRank算法 90
5.6 小结 91
第6章 社团发现算法 92
6.1 示例数据:软件依赖图 94
6.1.1 将数据导入Spark 96
6.1.2 将数据导入Neo4j 97
6.2 三角形计数和聚类系数 97
6.2.1 局部聚类系数 97
6.2.2 全局聚类系数 98
6.2.3 何时使用三角形计数和聚类系数 98
6.2.4 使用Spark实现三角形计数算法 99
6.2.5 使用Neo4j实现三角形计数算法 99
6.2.6 使用Neo4j计算局部聚类系数 100
6.3 强连通分量算法 101
6.3.1 何时使用强连通分量算法 102
6.3.2 使用Spark实现强连通分量算法 102
6.3.3 使用Neo4j实现强连通分量算法 103
6.4 连通分量算法 106
6.4.1 何时使用连通分量算法 106
6.4.2 使用Spark实现连通分量算法 106
6.4.3 使用Neo4j实现连通分量算法 107
6.5 标签传播算法 108
6.5.1 半监督学习和种子标签 110
6.5.2 何时使用标签传播算法 110
6.5.3 使用Spark实现标签传播算法 110
6.5.4 使用Neo4j实现标签传播算法 111
6.6 Louvain模块度算法 113
6.6.1 通过模块度进行基于质量的分组 114
6.6.2 何时使用Louvain模块度算法 117
6.6.3 使用Neo4j实现Louvain模块度算法 118
6.7 验证社团 122
6.8 小结 122
第7章 图算法实战 123
7.1 使用Neo4j分析Yelp数据 123
7.1.1 Yelp社交网络 124
7.1.2 导入数据 124
7.1.3 图模型 125
7.1.4 Yelp数据概览 125
7.1.5 行程规划应用程序 129
7.1.6 旅游商务咨询 134
7.1.7 查找相似类别 138
7.2 使用Spark分析航班数据 142
7.2.1 探索性分析 144
7.2.2 热门机场 144
7.2.3 源自ORD的延误 145
7.2.4 SFO的糟糕一天 147
7.2.5 通过航空公司互连的机场 149
7.3 小结 154
第8章 使用图算法增强机器学习 155
8.1 机器学习和上下文的重要性 155
8.2 关联特征提取与特征选择 157
8.2.1 图特征 158
8.2.2 图算法特征 158
8.3 图与机器学习实践:链接预测 160
8.3.1 工具和数据 161
8.3.2 将数据导入Neo4j 162
8.3.3 合著者关系图 163
8.3.4 创建均衡的训练数据集和测试数据集 164
8.3.5 如何预测缺失链接 169
8.3.6 创建机器学习管道 170
8.3.7 预测链接:基本图特征 171
8.3.8 预测链接:三角形和聚类系数 181
8.3.9 预测链接:社团发现 184
8.4 小结 190
8.5 总结 190
附录 额外信息及资料 191
关于作者 195
关于封面 195
前言 xiii
第 1章 导论 1
1.1 何谓图 1
1.2 何谓图分析和图算法 3
1.3 图处理、图数据库、图查询和图算法 5
1.4 为何要关心图算法 6
1.5 图分析用例 9
1.6 小结 10
第 2章 图论及其概念 11
2.1 术语 11
2.2 图的类型和结构 12
2.3 图的种类 14
2.3.1 连通图与非连通图 14
2.3.2 无权图与加权图 15
2.3.3 无向图与有向图 16
2.3.4 无环图与有环图 17
2.3.5 稀疏图与稠密图 18
2.3.6 单部图、二部图和k部图 19
2.4 图算法的类型 21
2.4.1 路径查找 21
2.4.2 中心性 21
2.4.3 社团发现 22
2.5 小结 22
第3章 图平台和图处理 23
3.1 图平台和图处理的注意事项 23
3.1.1 平台注意事项 23
3.1.2 处理注意事项 24
3.2 典型平台 25
3.2.1 选择平台 25
3.2.2 Apache Spark 26
3.2.3 Neo4j图平台 28
3.3 小结 30
第4章 路径查找算法和图搜索算法 31
4.1 示例数据:交通图 33
4.1.1 将数据导入Spark 35
4.1.2 将数据导入Neo4j 36
4.2 广度优先搜索 36
4.3 深度优先搜索 38
4.4 最短路径算法 40
4.4.1 何时使用最短路径算法 41
4.4.2 使用Neo4j实现最短路径算法 41
4.4.3 使用Neo4j实现加权最短路径算法 43
4.4.4 使用Spark实现加权最短路径算法 44
4.4.5 最短路径算法的变体:A*算法 46
4.4.6 最短路径算法的变体:Yen的k最短路径算法 48
4.5 所有点对最短路径算法 49
4.5.1 近观所有点对最短路径算法 50
4.5.2 何时使用所有点对最短路径算法 51
4.5.3 使用Spark实现所有点对最短路径算法 51
4.5.4 使用Neo4j实现所有点对最短路径算法 52
4.6 单源最短路径算法 53
4.6.1 何时使用单源最短路径算法 54
4.6.2 使用Spark实现单源最短路径算法 55
4.6.3 使用Neo4j实现单源最短路径算法 57
4.7 最小生成树算法 57
4.7.1 何时使用最小生成树算法 58
4.7.2 使用Neo4j实现最小生成树算法 59
4.8 随机游走算法 61
4.8.1 何时使用随机游走算法 61
4.8.2 使用Neo4j实现随机游走算法 61
4.9 小结 63
第5章 中心性算法 64
5.1 示例数据:社交图 66
5.1.1 将数据导入Spark 67
5.1.2 将数据导入Neo4j 67
5.2 度中心性算法 68
5.2.1 可达性 68
5.2.2 何时使用度中心性算法 69
5.2.3 使用Spark实现度中心性算法 69
5.3 接近中心性算法 70
5.3.1 何时使用接近中心性算法 71
5.3.2 使用Spark实现接近中心性算法 72
5.3.3 使用Neo4j实现接近中心性算法 74
5.3.4 接近中心性算法变体:Wasserman & Faust算法 75
5.3.5 接近中心性算法变体:调和中心性算法 77
5.4 中间中心性算法 78
5.4.1 桥与控制点 78
5.4.2 计算中间中心性得分 79
5.4.3 何时使用中间中心性算法 79
5.4.4 使用Neo4j实现中间中心性算法 80
5.4.5 中间中心性算法变体:RA-Brandes算法 82
5.5 PageRank算法 83
5.5.1 影响力 84
5.5.2 PageRank算法公式 84
5.5.3 迭代、随机冲浪者和等级沉没 85
5.5.4 何时使用PageRank算法 86
5.5.5 使用Spark实现PageRank算法 87
5.5.6 使用Neo4j实现PageRank算法 88
5.5.7 PageRank算法变体:个性化PageRank算法 90
5.6 小结 91
第6章 社团发现算法 92
6.1 示例数据:软件依赖图 94
6.1.1 将数据导入Spark 96
6.1.2 将数据导入Neo4j 97
6.2 三角形计数和聚类系数 97
6.2.1 局部聚类系数 97
6.2.2 全局聚类系数 98
6.2.3 何时使用三角形计数和聚类系数 98
6.2.4 使用Spark实现三角形计数算法 99
6.2.5 使用Neo4j实现三角形计数算法 99
6.2.6 使用Neo4j计算局部聚类系数 100
6.3 强连通分量算法 101
6.3.1 何时使用强连通分量算法 102
6.3.2 使用Spark实现强连通分量算法 102
6.3.3 使用Neo4j实现强连通分量算法 103
6.4 连通分量算法 106
6.4.1 何时使用连通分量算法 106
6.4.2 使用Spark实现连通分量算法 106
6.4.3 使用Neo4j实现连通分量算法 107
6.5 标签传播算法 108
6.5.1 半监督学习和种子标签 110
6.5.2 何时使用标签传播算法 110
6.5.3 使用Spark实现标签传播算法 110
6.5.4 使用Neo4j实现标签传播算法 111
6.6 Louvain模块度算法 113
6.6.1 通过模块度进行基于质量的分组 114
6.6.2 何时使用Louvain模块度算法 117
6.6.3 使用Neo4j实现Louvain模块度算法 118
6.7 验证社团 122
6.8 小结 122
第7章 图算法实战 123
7.1 使用Neo4j分析Yelp数据 123
7.1.1 Yelp社交网络 124
7.1.2 导入数据 124
7.1.3 图模型 125
7.1.4 Yelp数据概览 125
7.1.5 行程规划应用程序 129
7.1.6 旅游商务咨询 134
7.1.7 查找相似类别 138
7.2 使用Spark分析航班数据 142
7.2.1 探索性分析 144
7.2.2 热门机场 144
7.2.3 源自ORD的延误 145
7.2.4 SFO的糟糕一天 147
7.2.5 通过航空公司互连的机场 149
7.3 小结 154
第8章 使用图算法增强机器学习 155
8.1 机器学习和上下文的重要性 155
8.2 关联特征提取与特征选择 157
8.2.1 图特征 158
8.2.2 图算法特征 158
8.3 图与机器学习实践:链接预测 160
8.3.1 工具和数据 161
8.3.2 将数据导入Neo4j 162
8.3.3 合著者关系图 163
8.3.4 创建均衡的训练数据集和测试数据集 164
8.3.5 如何预测缺失链接 169
8.3.6 创建机器学习管道 170
8.3.7 预测链接:基本图特征 171
8.3.8 预测链接:三角形和聚类系数 181
8.3.9 预测链接:社团发现 184
8.4 小结 190
8.5 总结 190
附录 额外信息及资料 191
关于作者 195
关于封面 195
猜您喜欢