前 言
第1部分 實時機器學習方法論
第1章 實時機器學習綜述 2
1.1 什麼是機器學習 2
1.2 機器學習發展的前世今生 3
1.2.1 曆史上機器學習無法調和的難題 3
1.2.2 現代機器學習的新融閤 4
1.3 機器學習領域分類 5
1.4 實時是個“萬靈丹” 6
1.5 實時機器學習的分類 7
1.5.1 硬實時機器學習 7
1.5.2 軟實時機器學習 7
1.5.3 批實時機器學習 8
1.6 實時應用對機器學習的要求 8
1.7 案例:Netflix在機器學習競賽中學到的經驗 9
1.7.1 Netflix 用戶信息被逆嚮工程 9
1.7.2 Netflix 最終勝齣者模型無法在生産環境中使用 9
1.8 實時機器學習模型的生存期 10
第2章 實時監督式機器學習 12
2.1 什麼是監督式機器學習 12
2.1.1 “江湖門派”對預測模型的
不同看法 13
2.1.2 工業界的學術門派 14
2.1.3 實時機器學習實戰的思路 15
2.2 怎樣衡量監督式機器學習模型 16
2.2.1 統計量的優秀 16
2.2.2 應用業績的優秀 20
2.3 實時綫性分類器介紹 20
2.3.1 廣義綫性模型的定義 20
2.3.2 訓練綫性模型 21
2.3.3 冷啓動問題 22
第3章 數據分析工具 Pandas 23
3.1 顛覆 R 的 Pandas 23
3.2 Pandas 的安裝 24
3.3 利用 Pandas 分析實時股票報價數據 24
3.3.1 外部數據導入 25
3.3.2 數據分析基本操作 25
3.3.3 可視化操作 26
3.3.4 秒級收盤價變化率初探 28
3.4 數據分析的三個要點 30
3.4.1 不斷驗證假設 30
3.4.2 全麵可視化,全麵監控化 30
第4章 機器學習工具 Scikit-learn 31
4.1 如何站在風口上?嚮Scikit-learn 學習 31
4.1.1 傳統的綫下統計軟件 R 31
4.1.2 底層軟件黑盒子 Weka 32
4.1.3 跨界産品 Scikit-learn 33
4.1.4 Scikit-learn的優勢 33
4.2 Scikit-learn 的安裝 34
4.3 Scikit-learn 的主要模塊 35
4.3.1 監督式、非監督式機器學習 35
4.3.2 建模函數fit和predict 36
4.3.3 數據預處理 38
4.3.4 自動化建模預測 Pipeline 39
4.4 利用 Scikit-learn 進行股票價格波動預測 40
4.4.1 數據導入和預處理 41
4.4.2 編寫專有時間序列數據預處理模塊 41
4.4.3 利用 Pipeline 進行建模 43
4.4.4 評價建模效果 43
4.4.5 引入成交量和高維交叉項進行建模 44
4.4.6 本書沒有告訴你的 45
第2部分 實時機器學習架構
第5章 實時機器學習架構設計 48
5.1 設計實時機器學習架構的
四個要點 48
5.2 Lambda 架構和主要成員 49
5.2.1 實時響應層 49
5.2.2 快速處理層 50
5.2.3 批處理層 50
5.3 常用的實時機器學習架構 50
5.3.1 瀑布流架構 50
5.3.2 並行響應架構 51
5.3.3 實時更新模型混閤架構 52
5.4 小結 53
第6章 集群部署工具 Docker 55
6.1 Docker 的前世今生 55
6.2 容器虛擬機的基本組成部分 56
6.3 Docker 引擎命令行工具 57
6.3.1 Docker 引擎的安裝 57
6.3.2 Docker 引擎命令行的基本操作 58
6.4 通過 Dockerfile 配置容器虛擬機 61
6.4.1 利用 Dockerfile 配置基本容器虛擬機 62
6.4.2 利用 Dockerfile 進行虛擬機和宿主機之間的文件傳輸 62
6.5 服務器集群配置工具Docker Compose 64
6.5.1 Docker Compose 的安裝 64
6.5.2 Docker Compose 的基本操作 64
6.5.3 利用 Docker Compose 創建網頁計數器集群 65
6.6 遠端服務器配置工具Docker Machine 68
6.6.1 Docker Machine 的安裝 68
6.6.2 安裝 Oracle VirtualBox 69
6.6.3 創建和管理 VirtualBox中的虛擬機 69
6.6.4 在 Docker Machine 和 VirtualBox的環境中運行集群 70
6.6.5 利用 Docker Machine 在 Digital Ocean 上配置運行集群 71
6.7 其他有潛力的 Docker 工具 73
第7章 實時消息隊列和RabbitMQ 74
7.1 實時消息隊列 74
7.2 AMQP 和 RabbitMQ 簡介 76
7.3 RabbitMQ的主要構成部分 76
7.4 常用交換中心模式 78
7.4.1 直連結構 78
7.4.2 扇形結構 78
7.4.3 話題結構 79
7.4.4 報頭結構 79
7.5 消息傳導設計模式 79
7.5.1 任務隊列 80
7.5.2 Pub/Sub 發布/監聽 80
7.5.3 遠程命令 81
7.6 利用 Docker 快速部署RabbitMQ 82
7.7 利用 RabbitMQ 開發隊列服務 85
7.7.1 準備案例材料 86
7.7.2 實時報價存儲服務 86
7.7.3 實時走勢預測服務 89
7.7.4 整閤運行實驗 93
7.7.5 總結和改進 95
第8章 實戰數據庫綜述 98
8.1 SQL 與 NoSQL,主流數據庫分類 98
8.1.1 關係型數據庫 99
8.1.2 非關係型數據庫 NoSQL 99
8.2 數據庫的性能 100
8.2.1 耐分割 100
8.2.2 一緻性 101
8.2.3 可用性 101
8.2.4 CAP 定理 101
8.3 SQL和NoSQL對比 102
8.3.1 數據存儲、讀取方式 102
8.3.2 數據庫的擴展方式 103
8.3.3 性能比較 103
8.4 數據庫的發展趨勢 103
8.4.1 不同數據庫之間自動化同步更為方便 103
8.4.2 雲數據庫的興起 104
8.4.3 底層和應用層多層化 104
8.5 MySQL 簡介 105
8.6 Cassandra簡介 105
8.6.1 Cassandra交互方式簡介 105
8.6.2 利用Docker安裝Cassandra 106
8.6.3 使用Cassandra存儲數據 106
第9章 實時數據監控 ELK 集群 107
9.1 Elasticsearch、LogStash和Kibana 的前世今生 107
9.1.1 Elasticsearch 的平凡起傢 108
9.1.2 LogStash 卑微的起源 108
9.1.3 Kibana 驚艷登場 109
9.1.4 ELK 協同作戰 109
9.2 Elasticsearch 基本架構 109
9.2.1 文檔 110
9.2.2 索引和文檔類型 111
9.2.3 分片和冗餘 112
9.2.4 Elasticsearch 和數據庫進行比較 113
9.3 Elasticsearch 快速入門 113
9.3.1 用 Docker 運行 Elasticsearch 容器虛擬機 113
9.3.2 創建存儲文檔、文檔類型和索引 114
9.3.3 搜索文檔 117
9.3.4 對偶搜索 120
9.4 Kibana 快速入門 124
9.4.1 利用 Docker 搭建ELK 集群 125
9.4.2 配置索引格式 127
9.4.3 交互式搜索 128
9.4.4 可視化操作 129
9.4.5 實時檢測麵闆 132
第10章 機器學習係統設計模式 134
10.1 設計模式的前世今生 134
10.1.1 單機設計模式逐漸式微 134
10.1.2 微服務取代設計模式的示例 135
10.1.3 微服務設計模式的興起 137
10.2 讀:高速鍵值模式 137
10.2.1 問題場景 137
10.2.2 解決方案 138
10.2.3 其他使用場景 139
10.3 讀:緩存高速查詢模式 139
10.3.1 問題場景 139
10.3.2 解決方案 139
10.3.3 適用場景 141
10.4 更新:異步數據庫更新模式 141
10.4.1 問題場景 141
10.4.2 解決方案 141
10.4.3 使用場景案例 142
10.5 更新:請求重定嚮模式 144
10.5.1 問題場景 144
10.5.2 解決方案 144
10.5.3 更新流程 145
10.5.4 使用場景案例 146
10.6 處理:硬實時並行模式 146
10.6.1 問題場景 146
10.6.2 解決方案 147
10.6.3 使用場景案例 147
10.7 處理:分布式任務隊列模式 148
10.7.1 問題場景 148
10.7.2 解決方案 149
10.7.3 Storm 作為分布式任務隊列 150
10.7.4 適用場景 151
10.7.5 結構的演進 152
10.8 處理:批實時處理模式 152
10.8.1 問題場景 152
10.8.2 解決方案 152
10.8.3 適用場景 153
第3部分 未來展望
第11章 Serverless 架構 156
11.1 Serverless 架構的前世今生 156
11.2 Serverless 架構對實時
機器學習的影響 157
第12章 深度學習的風口 159
12.1 深度學習的前世今生 159
12.2 深度學習的難點 161
12.3 如何選擇深度學習工具 161
12.3.1 與現有編程平颱、技能整閤的難易程度 162
12.3.2 此平颱除做深度學習之外,還能做什麼 163
12.3.3 深度學習平颱的成熟程度 164
12.4 未來發展方嚮 165
· · · · · · (
收起)