Neo4j 圖譜分析實戰 (Hands-On Graph Analytics with Neo4j)

Estelle Scifo 沈旻 譯

  • Neo4j 圖譜分析實戰 (Hands-On Graph Analytics with Neo4j)-preview-1
  • Neo4j 圖譜分析實戰 (Hands-On Graph Analytics with Neo4j)-preview-2
  • Neo4j 圖譜分析實戰 (Hands-On Graph Analytics with Neo4j)-preview-3
Neo4j 圖譜分析實戰 (Hands-On Graph Analytics with Neo4j)-preview-1

買這商品的人也買了...

相關主題

商品描述

《Neo4j圖譜分析實戰 》詳細闡述了與Neo4j圖譜分析相關的基本解決方案,主要包括使用Neo4j進行圖建模、圖算法、基於圖的機器學習、生產環境中的Neo4j等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校電腦及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。

目錄大綱

目    錄

第1篇  使用Neo4j進行圖建模

第1章  圖數據庫 3

1.1  圖的定義和示例 3

1.1.1  圖論 4

1.1.2  圖的示例 7

1.2  從SQL遷移到圖數據庫 12

1.2.1  數據庫模型 12

1.2.2  SQL和連接 13

1.2.3  關系關乎一切 15

1.3  關於Neo4j 15

1.3.1  構建塊 16

1.3.2 從SQL到Neo4j的轉換 18

1.3.3  Neo4j用例 19

1.4  理解圖屬性 19

1.4.1  有向圖與無向圖 19

1.4.2  加權圖與無權圖 20

1.4.3  有環圖與無環圖 21

1.4.4  稀疏圖與稠密圖 21

1.4.5  連通圖與斷開圖 22

1.5  在Neo4j中對圖進行建模的註意事項 23

1.5.1  關系取向 23

1.5.2  節點和屬性的區別 24

1.6  小結 24

1.7  延伸閱讀 25

第2章  Cypher查詢語言 27

2.1  技術要求 27

2.2  創建節點和關系 28

2.2.1  使用Neo4j Desktop管理數據庫 28

2.2.2  創建節點 29

2.2.3  選擇節點 31

2.2.4 創建關系 32

2.2.5 選擇關系 33

2.2.6 MERGE關鍵字 34

2.3 更新和刪除節點和關系 35

2.3.1 更新對象 35

2.3.2 刪除對象 37

2.4  模式匹配和數據檢索 38

2.4.1  模式匹配 39

2.4.2  測試數據 40

2.4.3  圖遍歷 41

2.4.4 可選匹配 43

2.5 使用聚合函數 44

2.5.1 計數、求和和平均值 44

2.5.2 創建對象列表 45

2.5.3 取消嵌套對象 45

2.6 從CSV或JSON導入數據 46

2.6.1 從Cypher導入數據 46

2.6.2 從命令行導入數據 53

2.6.3 APOC導入工具 54

2.6.4  導入方法小結 60

2.7  評估性能並提高查詢速度 60

2.7.1  Cypher查詢計劃器 60

2.7.2  Neo4j索引 62

2.7.3  關於LOAD CSV的再討論 62

2.7.4  “朋友的朋友”示例 64

2.8  小結 66

2.9  思考題 66

2.10  延伸閱讀 67

 

第3章  使用純Cypher 69

3.1  技術要求 69

3.2  知識圖 70

3.2.1  嘗試給知識圖一個定義 70

3.2.2  從結構化數據構建知識圖 71

3.2.3  使用NLP從非結構化數據構建知識圖 72

3.2.4 從Wikidata向知識圖添加上下文 78

3.2.5 通過語義圖增強知識圖 85

3.3 基於圖的搜索 86

3.3.1 搜索方法 87

3.3.2 手動建立Cypher查詢 89

3.3.3 自動實現從英語到Cypher的翻譯 89

3.4  推薦引擎 94

3.4.1  產品相似性推薦 95

3.4.2 社交推薦 98

3.5  小結 100

3.6  思考題 100

3.7  延伸閱讀 100

第2篇  圖  算  法

第4章  Graph Data Science庫和路徑查找 105

4.1  技術要求 105

4.2  關於GDS插件 106

4.2.1  使用自定義函數和過程擴展Neo4j 106

4.2.2 GDS庫內容 108

4.2.3 定義投影圖 109

4.2.4  將結果流式傳輸或寫回到圖 112

4.3  通過應用瞭解最短路徑算法的重要性 114

4.3.1  網絡內的路由 114

4.3.2 其他應用 115

4.4 迪傑斯特拉最短路徑算法 115

4.4.1 理解算法 116

4.4.2 在Neo4j中使用最短路徑算法 124

4.4.3 理解關系方向 130

4.5 使用A*算法查找最短路徑 133

4.5.1 算法原理 133

4.5.2 在Neo4j GDS插件中使用A*算法 134

4.6 在GDS插件中發現其他與路徑相關的算法 135

4.6.1 K條最短路徑算法 135

4.6.2 單源最短路徑算法 136

4.6.3 全對最短路徑算法 138

4.7 使用圖優化流程 139

4.7.1 旅行商問題 140

4.7.2  生成樹 141

4.8  小結 145

4.9  思考題 145

4.10  延伸閱讀 146

第5章  空間數據 147

5.1  技術要求 147

5.2  表示空間屬性 148

5.2.1  理解地理坐標系 148

5.2.2  使用Neo4j內置的空間類型 151

5.3 使用neo4j-spatial在Neo4j中創建幾何層 154

5.3.1 引入neo4j-spatial庫 154

5.3.2 創建點的空間層 156

5.3.3 定義空間數據的類型 157

5.3.4 創建包含多邊形幾何體的層 157

5.4 執行空間查詢 160

5.4.1 尋找兩個空間對象之間的距離 160

5.4.2 查找其他對象中包含的對象 161

5.5 根據距離查找最短路徑 162

5.5.1 導入數據 162

5.5.2 準備數據 164

5.5.3 運行最短路徑算法 166

5.6 使用Neo4j可視化空間數據 171

5.6.1 NeoMap—用於空間數據的Neo4j Desktop應用程序 172

5.6.2 使用JavaScript Neo4j驅動程序可視化最短路徑 174

5.7  小結 178

5.8  思考題 179

5.9  延伸閱讀 179

第6章  節點重要性 181

6.1  技術要求 181

6.2  定義重要性 182

6.2.1  受歡迎程度和信息傳播 182

6.2.2  關鍵或橋接節點 183

6.3  計算度中心性 184

6.3.1  度中心性公式 184

6.3.2  在Neo4j中計算度中心性 186

6.4 理解PageRank算法 190

6.4.1 構建公式 190

6.4.2 在示例圖上運行算法 192

6.4.3 使用Python實現PageRank算法 194

6.4.4 在Neo4j中使用GDS評估PageRank中心性 196

6.4.5 比較度中心性和PageRank結果 196

6.4.6  變體 197

6.5  基於路徑的中心性指標 201

6.5.1  接近度中心性 202

6.5.2 中介中心性 205

6.5.3 比較中心性指標 206

6.6 將中心性算法應用於欺詐檢測 208

6.6.1  使用Neo4j檢測欺詐 208

6.6.2  使用中心性指標評估欺詐 209

6.6.3  中心性算法的其他應用 212

6.7  小結 213

6.8  思考題 213

6.9  延伸閱讀 213

第7章  社區檢測和相似性度量 215

7.1  技術要求 215

7.2  社區檢測及其應用 216

7.2.1  識別節點聚類 216

7.2.2  社區檢測方法的應用 217

7.2.3 社區檢測技術的簡單總結 219

7.3 檢測圖組件並可視化社區 220

7.3.1 弱連接組件 222

7.3.2 強連接組件 223

7.3.3 在圖中寫入GDS結果 224

7.3.4 使用neovis.js可視化圖 226

7.3.5 使用NEuler 228

7.4 運行標簽傳播算法 231

7.4.1 定義標簽傳播 231

7.4.2 在Python中實現標簽傳播 233

7.4.3  使用GDS中的標簽傳播算法 235

7.4.4  將結果寫入圖 237

7.5  瞭解Louvain算法 238

7.5.1  定義模塊度 238

7.5.2 重現Louvain算法的步驟 240

7.5.3 GDS中的Louvain算法 241

7.5.4 中間步驟 243

7.5.5 Zachary的空手道俱樂部圖算法比較示例 244

7.6 Louvain算法的局限性和重疊社區檢測 245

7.6.1 Louvain算法的局限性 245

7.6.2 Louvain算法的替代方案 247

7.6.3 重疊社區檢測 247

7.6.4 動態網絡 248

7.7 測量節點之間的相似性 249

7.7.1 基於集合的相似性 249

7.7.2 基於向量的相似性 253

7.8  小結 255

7.9  思考題 256

7.10  延伸閱讀 256

第3篇  基於圖的機器學習

第8章  在機器學習中使用基於圖的特徵 259

8.1  技術要求 259

8.2  構建數據科學項目 260

8.2.1  問題定義—提出正確的問題 261

8.2.2 本章引入的問題 263

8.2.3 獲取和清洗數據 263

8.2.4 特徵工程 273

8.2.5 構建模型 274

8.3  基於圖的機器學習步驟 278

8.3.1  建立(知識)圖 279

8.3.2 提取基於圖的特徵 284

8.4 通過Pandas和scikit-learn使用基於圖的特徵 285

8.4.1  創建投影圖 285

8.4.2  運行一種或多種算法 286

8.4.3  刪除投影圖 286

8.4.4  提取數據 286

8.5 使用Neo4j Python驅動程序自動創建基於圖的特徵 287

8.5.1 發現Neo4j Python驅動程序 287

8.5.2 使用Python自動創建基於圖的特徵 290

8.5.3 將數據從Neo4j導出到Pandas 296

8.5.4 訓練scikit-learn模型 298

8.6  小結 301

8.7  思考題 302

8.8  延伸閱讀 302

第9章  預測關系 303

9.1  技術要求 303

9.2  使用鏈接預測的原因 304

9.2.1  動態圖 304

9.2.2  應用領域 305

9.3 使用Neo4j創建鏈接預測指標 309

9.3.1 基於社區的指標 310

9.3.2 與路徑相關的指標 311

9.3.3 使用局部鄰居信息 313

9.3.4 其他指標 315

9.4  使用ROC曲線建立鏈接預測模型 315

9.4.1  將數據導入Neo4j 316

9.4.2  拆分圖並計算每條邊的分數 317

9.4.3  衡量二元分類模型的性能 318

9.4.4  使用scikit-learn建立更復雜的模型 329

9.4.5  將鏈接預測結果保存到Neo4j中 329

9.4.6  預測二分圖中的關系 330

9.5  小結 334

9.6  思考題 334

9.7  延伸閱讀 334

第10章  圖嵌入—從圖到矩陣 337

10.1  技術要求 337

10.2  關於圖嵌入 338

10.2.1  嵌入的意義 338

10.2.2 圖嵌入技術概述 343

10.3 基於鄰接矩陣的嵌入算法 344

10.3.1 鄰接矩陣和圖拉普拉斯算子 345

10.3.2 特徵向量嵌入 345

10.3.3 局部線性嵌入 345

10.3.4 基於相似度的嵌入 346

10.3.5 高階鄰近保留嵌入 346

10.3.6 使用Python計算節點嵌入向量 347

10.4 從人工神經網絡中提取嵌入向量 351

10.4.1 人工神經網絡簡介 351

10.4.2  Skip-Gram模型 354

10.4.3 DeepWalk節點嵌入算法 357

10.5 圖神經網絡 362

10.5.1 擴展CNN和RNN的原理以構建GNN 362

10.5.2 消息傳播和匯總 363

10.5.3 GNN的應用 364

10.5.4 在實踐中使用GNN 366

10.6 圖算法的發展 367

10.7  小結 368

10.8  思考題 369

10.9  延伸閱讀 369

第4篇  生產環境中的Neo4j

第11章  在Web應用程序中使用Neo4j 373

11.1  技術要求 373

11.2  使用Python和圖對象映射器創建全棧Web應用程序 373

11.2.1  關於neomodel 374

11.2.2 使用Flask和neomodel構建Web應用程序 379

11.3 通過示例瞭解GraphQL API 388

11.3.1 端點 389

11.3.2 返回的屬性 390

11.3.3 查詢參數 391

11.3.4 突變 393

11.4 使用GRANDstack開發React應用程序 394

11.4.1 關於GRANDstack 394

11.4.2  創建API 395

11.4.3 關於突變 399

11.4.4 構建用戶界面 402

11.5  小結 410

11.6  思考題 410

11.7  延伸閱讀 411

第12章  Neo4j擴展 413

12.1  技術要求 413

12.2  衡量GDS性能 413

12.2.1  通過估算過程估算內存使用量 414

12.2.2 估計算法的內存使用量 416

12.2.3 使用stats運行模式 417

12.2.4 測量某些算法的時間性能 417

12.3 為大數據配置Neo4j 4.0 418

12.3.1 Neo4j 4.0之前的設置 418

12.3.2 Neo4j 4.0分片技術 419

12.4  小結 423