構建實時機器學習系統 构建实时机器学习系统

彭河森, 汪涵

立即出貨

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

商品描述

本書首先利用Pandas對美股秒級交易數據進行分析,利用Scikit-learn對股票變化方向進行預測,並在架構案例中,打造了一個以RabbitMQ為消息傳導中樞的實時處理系統,利用Elasticsearch對數據進行實時可視化。

作者簡介

彭河森,資深機器學習科學家,曾在Google、Amazon、微軟等公司從事一線機器學習構架和開發工作,參與了Google實時數據警報、Amazon產品廣告自動化優化、微軟必應廣告等多項海量數據、延時要求苛刻的機器學習應用工作。也參與Scikit—learn、Airflow、R等多項開源項目。對機器學習項目的生存期管理、架構設計、軟件開發以及應用關鍵有著豐富的經驗。
汪涵,資深機器學習開發者,曾是Amazon、微軟、Quantlab、晨星等公司一線機器學習開發人員,參與了AmazonAB檢驗服務、微軟必應搜索問答系統等多項關鍵大數據處理和機器學習應用的構架和開發工作。對機器學習、自然語言處理有著深刻的體會。

目錄大綱

前言

第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