關于我們
書單推薦
新書推薦
|
基于云計算的數(shù)據(jù)科學 在本書中,你將學到: ·使用App Engine應用實現(xiàn)自動化定期數(shù)據(jù)攝取。 ·在Google Data Studio中創(chuàng)建并生成數(shù)據(jù)儀表板。 ·構建實時數(shù)據(jù)分析管道,實現(xiàn)流式數(shù)據(jù)分析。 ·使用Google BigQuery實現(xiàn)可交互式數(shù)據(jù)探索。 ·在Cloud Dataproc群集上創(chuàng)建貝葉斯模型。 ·使用Spark構建邏輯回歸機器學習模型。 ·使用Cloud Dataflow數(shù)據(jù)管道計算時間聚合特征。 ·使用TensorFlow構建高性能預測模型。 ·將你的模型部署為微服務,并且從批處理和實時數(shù)據(jù)管道中使用它。
前言 我目前在Google擔任的角色使我可以與很多領域的數(shù)據(jù)科學家和數(shù)據(jù)工程師共同 工作,將數(shù)據(jù)處理和分析流程遷移到公有云上。對于很多工作來說,與在本地部署 上所做的都一樣,方法也相同,區(qū)別只是將環(huán)境換成了租用的計算資源。盡管如此,目光長遠的用戶依然會重新思考他們的系統(tǒng)設計,改變使用數(shù)據(jù)的方式,從而能夠更快地推動創(chuàng)新。 早在 2011 年,《哈佛商業(yè)評論》(Harvard Business Review)的一篇文章就提到, 云計算最大的收益之一,是幫助組織和機構以前所未有的方式共同工作,F(xiàn)在,這 一觀點已得到廣泛認可。麻省理工學院2017年的一項調查發(fā)現(xiàn),通過向公有云轉移, 更多受訪者(45%)表示提高了敏捷性,而不是節(jié)約成本(34%)。 在本書中,我們將用示例向你展示這種全新、具有變革性,且更具協(xié)作性的數(shù)據(jù)科學實踐方法。通過本書,你將學習如何實現(xiàn)端到端的數(shù)據(jù)管道。首先,我們會以無服務器的方式攝取數(shù)據(jù),然后介紹數(shù)據(jù)探索、儀表板、關系型數(shù)據(jù)庫、流數(shù)據(jù),并最終展示如何訓練并運行一個機器學習模型。本書涵蓋了數(shù)據(jù)服務的所有方面,因為對于數(shù)據(jù)工程師來說,他們不僅要參與服務設計、開發(fā)統(tǒng)計和機器學習模型,還要掌握如何在大規(guī)模生產(chǎn)環(huán)境中實時部署和實施。 這本書適合誰 如果你使用計算機處理數(shù)據(jù),那么這本書會適合你。本書針對的讀者可以是數(shù)據(jù)分析師、數(shù)據(jù)庫管理員、數(shù)據(jù)工程師、數(shù)據(jù)科學家,也可以是系統(tǒng)程序員。即使你現(xiàn)在的工作范圍比較有限(也許只進行數(shù)據(jù)分析或構建模型,或者只是DevOps), 但只要你想進一步提升自己,那么就應該了解如何實現(xiàn)數(shù)據(jù)科學建模,以及如何在 生產(chǎn)系統(tǒng)下規(guī)模化實施。 Google 云計算平臺旨在讓你忽略基礎架構的存在。無論是 Google BigQuery、Cloud Dataflow、Cloud Pub/Sub,還是 Cloud ML引擎,所有這些受歡迎的數(shù)據(jù)服務都是 無服務器且支持自動縮放的。你在 BigQuery 上提交的查詢會在成千上萬的節(jié)點上運 行,然后返回處理結果,你也無需啟動群集或安裝任何軟件。同樣,當你在Cloud Dataflow 中提交數(shù)據(jù)管道,或是在 Cloud Machine Learning Engine 中提交機器學習 任務時,你可以對數(shù)據(jù)進行大規(guī)模處理,并實現(xiàn)大規(guī)模模型訓練,且無需擔心集群 管理或故障恢復。Cloud Pub/Sub 是一項全球消息服務,該服務可以在無需人工干預 的情況下自動對訂閱者和發(fā)布者的吞吐量和數(shù)量進行縮放。即使是開源解決方案(如 Apache Spark),Google云計算平臺也可以輕松滿足你的要求。你可以將數(shù)據(jù)保存 在 Google Cloud Storage上,而不是保存在 HDFS中,然后專門針對你的 Spark任 務啟動一個群集即可。當任務執(zhí)行完成,你可以毫無顧慮地刪除該群集。由于這些群集的基礎架構專門針對特定任務,因此你無需擔心硬件會過度配置,也不必擔心 性能不足等問題。另外,在 Google 云計算平臺上,無論是存儲中還是傳輸中的數(shù)據(jù) 都會被加密,以確保數(shù)據(jù)安全。這種能夠讓數(shù)據(jù)科學家從基礎設施管理工作中得以解放的工作方式,無疑是令人難以置信的。 在 Google云計算平臺上執(zhí)行數(shù)據(jù)任務時,我們之所以能忘記虛擬機和群集的原因 是云計算平臺上的網(wǎng)絡連接性能。Google云計算平臺數(shù)據(jù)中心內的網(wǎng)絡單向帶寬為 1 PBps,因此可以持續(xù)、高速地讀取 Cloud Storage 中的數(shù)據(jù)。這就意味著你不需要 像傳統(tǒng)的 MapReduce作業(yè)那樣分割數(shù)據(jù)。相應的,Google云計算平臺可以根據(jù)需 要將數(shù)據(jù)移動到新的計算節(jié)點,從而實現(xiàn)對計算任務的自動伸縮。因此,在 Google 云計算平臺上開展數(shù)據(jù)科學工作時,你可以從群集管理中解放出來。 這些自動縮放、全面托管的云服務使大規(guī)模實施數(shù)據(jù)科學模型變得更加容易,這就是數(shù)據(jù)科學家不再需要將模型交給數(shù)據(jù)工程師的原因。相反,他們可以自己編寫數(shù)據(jù)科學任務、提交到云端,然后這些任務就能以自動伸縮的方式自動執(zhí)行。這種方式同時也讓數(shù)據(jù)科學軟件包變得越來越簡單。因此,對于工程師來說,利用唾手可得的數(shù)據(jù),結合預先準備好的模型來實現(xiàn)并運行自己的原始(通常已經(jīng)是非常高質量的)模型已經(jīng)變得非常容易。通過精心設計的軟件包和易于使用的API,你無需 了解數(shù)據(jù)科學算法的深奧細節(jié),所有你需要知道的,只有每種算法的作用以及如何將這些算法連接起來解決實際問題。通過對數(shù)據(jù)科學和數(shù)據(jù)工程進行這種融合,你就可以將自己的翅膀伸展到目前角色之外了。 在閱讀本書時,我強烈建議你嘗試使用示例代碼,而不是簡單地閱讀文字內容。本 書提供了用于構建端到端管道的完整代碼,你可以在 GitHub(https://github.com/ GoogleCloudPlatform/data-science-on-gcp)上獲取。你可以創(chuàng)建一個 Google云計 算平臺項目,在閱讀完每一章之后,嘗試參考示例代碼和每個文件夾下的說明文件 README.md 注 1 來重復我們在書中所做的操作。 本書內容約定 本書使用以下排版約定: 斜體(italic) 表示新術語、網(wǎng)址、電子郵件地址、文件名和文件擴展名等。 等寬字體(constant width) 表示程序代碼以及段落內用于引用的代碼內容,如變量或函數(shù)名、數(shù)據(jù)庫、數(shù) 據(jù)類型、環(huán)境變量、聲明語句和關鍵字等。 等寬粗體(constant width bold) 表示應由用戶逐字輸入的命令或其他文本。 等寬斜體(constant width italic) 表示應由用戶提供的值或根據(jù)上下文確定的值而替換的文本。 使用代碼示例 更多補充資料(包括示例代碼、練習等)可以從這里下載https://github.com/ GoogleCloudPlatform/data-science-on-gcp。 本書的目的是幫助你完成工作任務。通常,對于書中提供的示例代碼,你可以直接在自己的程序和文檔中使用,無需聯(lián)系我們獲取授權,除非你要再次分發(fā)大量示例代碼。舉例來說,如果你在編寫程序時使用了本書提供的一部分代碼,不用擔心授 權問題;但如果你要以CD-ROM等方式銷售或分發(fā)O’Reilly系列圖書中的示例代碼, 則需要獲得我們的授權;在解答問題時如需引用本書提供的代碼,你不需要取得授權;但如果你在自己的產(chǎn)品文檔中使用本書的任意代碼,則必須獲得授權。 我們不強制要求版權聲明,但我們感謝你能夠引用本書。引用格式一般包含書 名、作者、出版商和 ISBN,例如:“Data Science on the Google Cloud Platform by Valliappa Lakshmanan (O’Reilly). Copyright 2018 Google Inc.,978-1-491-97456-8”。 如果你認為在使用示例代碼時超出了合理范圍或上述許可范圍,請隨時與我們聯(lián)系: permissions@oreilly.com。 聯(lián)系我們 任何有關本書的意見或疑問,請按照以下地址聯(lián)系出版社。 美國: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 中國: 北京市西城區(qū)西直門南大街 2 號成銘大廈 C 座 807 室(100035) 奧萊利技術咨詢(北京)有限公司 我們?yōu)楸緯峁┝藢iT的網(wǎng)頁,用于發(fā)布內容勘誤、范例和其他相關信息。你可以 通過這里訪問 http://bit.ly/datasci_GCP。 有關本書的任何評論或技術問題,請發(fā)送電子郵件至 bookquestions@oreilly.com。 了解與本書相關的更多信息、課程、會議和新聞,請訪問我們的網(wǎng)站http://www. oreilly.com。 我們的 Facebook:http://facebook.com/oreilly。 我們的 Twitter:http://twitter.com/oreillymedia。 我們的 YouTube: http://www.youtube.com/oreillymedia。 致謝 大約一年前,我在 Google 工作時,我曾經(jīng)簡單地使用公有云作為租賃基礎設施的一 種方式,配置自己的虛擬機,并在虛擬機上安裝我要用的軟件,然后跟平時的工作 流程一樣運行我的數(shù)據(jù)處理任務。幸好,我意識到Google的大數(shù)據(jù)技術棧與眾不同, 所以我開始學習如何充分利用 Google 云計算平臺提供的數(shù)據(jù)和機器學習工具。 對我來說,最好的學習方法是編寫代碼,我也的確在這么做。在一次 Python小組聚 會上,大家讓我講一講 Google 云計算平臺,當時我用自己的代碼做了展示和介紹。 后來的事實證明,在數(shù)據(jù)科學領域,在對比不同解決方法時,對聽眾來說,使用代碼來展示如何構建端到端系統(tǒng)是頗具教育意義的。后來,我就把那次演講的主要內 容寫成本書的出版計劃,并發(fā)給了 O’Reilly Media。 當然,本書的內容會比 60 分鐘的代碼演示深入許多。想象這樣的場景,有一天在你 上班時收到了一封來自公司新員工發(fā)來的電子郵件,他在你們公司工作的時間還不 到 6 個月,但不知何故,他決定將你負責構建的一套復雜的系統(tǒng)平臺寫成一本書, 并尋求你的幫助。他和你既不在同一個團隊,幫助他也不屬于你的工作職責,你們 甚至不在同一個辦公室工作。你會如何回應?你愿意嗎? Google之所以能成為理想的工作場所,都是因為這里的同事。這也是 Google公司 文化的一個證明,這里的許多人,無論是工程師、技術主管、產(chǎn)品經(jīng)理、解決方案 架構師、數(shù)據(jù)科學家、法律顧問,還是總監(jiān),他們都可以跨越不同團隊,愉快地將自己的專業(yè)知識分享給他們從未見過的人(實際上我也從未見過其中很多人)。這本書也因為他們的貢獻而變得更好,讓本書受益無窮,這些人包括(按字母順序排 列)William Brockman、Mike Dahlin、Tony Diloreto、Bob Evans、Roland Hess、 Brett Hesterberg、Dennis Huo、Chad Jennings、Puneith Kaul、Dinesh Kulkarni、 Manish Kurse、Reuven Lax、Jonathan Liu、James Malone、Dave Oleson、Mosha Pasumansky、Kevin Peterson、Olivia Puerta、Reza Rokni、Karn Seth、Sergei Sokolenko 及 Amy Unruh。同時,我還要特別感謝 Mike Dahlin、Manish Kurse和 Olivia Puerta 對本書每章內容的精心校對。在本書預覽時,我收到了來自 Anthonios Partheniou和 David Schwantner的錯誤報告,這些報告很有價值。不用多說,任何 遺留的錯誤都由我負責。 在寫作本書時,我曾一度陷入困境。有時候,遇到的是技術問題,對此我要感謝 (按字母順序排列)Ahmet Altay、Eli Bixby、Ben Chambers、Slava Chernyak、 Marian Dvorsky、Robbie Haertel、Felipe Hoffa、Amir Hormati、Qi-ming (Bradley) Jiang、Kenneth Knowles、Nikhil Kothari 和 Chris Meyers 為我指引了前進方向。而 在有些時候,我需要搞清楚公司的政策或需要與正確的團隊建立聯(lián)系,獲取所需的文檔或統(tǒng)計數(shù)據(jù)。對此,我感謝那些在關鍵時刻為我提供幫助的同事,如果沒有 他們,本書會遜色很多(也是按字母順序排列):Louise Byrne、Apurva Desai、 Rochana Golani、Fausto Ibarra、Jason Martin、Neal Mueller、Philippe Poutonnet、 Brad Svee、Jordan Tigani、William Vampenebe和Miles Ward。謝謝大家的幫助和鼓勵。 同時,我還要感謝 O’Reilly 團隊的 Marie Beaugureau、Kristen Brown、Ben Lorica、 Tim McGovern、Rachel Roumeliotis 和 Heather Scherer 對我的信任,從而讓本書從 草稿到出版沒有遇到問題。 最后,也是最重要的,我要感謝 Abirami、Sidharth和 Sarada的理解和耐心,當我 專注于寫作和編碼時,他們亦是如此。是你們,讓這一切變得有價值。 Valliappa Lakshmanan是Google云計算平臺專家服務部門的技術主管。他希望將機器學習普及化,讓任何人、從任何地方,在無需深入了解統(tǒng)計學、編程知識,也無需購買大量硬件的情況下使用Google云平臺提供的卓越架構。
目錄 前言 1 第 1 章 用數(shù)據(jù)做出更好的決策 9 許多相似的決策 11 數(shù)據(jù)工程師的角色 12 云計算讓數(shù)據(jù)工程師成為可能 14 云計算使數(shù)據(jù)科學能力得到倍增 18 用案例研究揭示難解的真相 20 基于概率的決策 21 數(shù)據(jù)和工具 27 代碼入門 28 本章總結 30 第 2 章 將數(shù)據(jù)攝取到云端 31 航空公司準點數(shù)據(jù) 31 可知性 33 訓練 – 服務偏差 34 下載程序 35 數(shù)據(jù)集屬性36 為什么不就地存儲數(shù)據(jù)? 38 向上擴展 40 水平擴展 42 使用 Colossus 和 Jupiter 讓數(shù)據(jù)存放在原位 44 攝取數(shù)據(jù) 47 對 Web 表單進行反向工程 48 下載數(shù)據(jù)集51 數(shù)據(jù)探索和清理 53 將數(shù)據(jù)上傳到 Google 云端存儲 55 每月下載計劃 58 使用 Python 攝取數(shù)據(jù) 61 Flask Web App 68 在 App Engine 上運行 69 確保 URL 的安全 70 計劃 Cron 任務 70 本章總結 73 代碼實驗 74 第 3 章 創(chuàng)建引人注目的儀表板 76 使用數(shù)據(jù)儀表板對模型進行解釋 77 為什么要先構建數(shù)據(jù)儀表板? 79 準確、忠實于數(shù)據(jù)且良好的設計 80 將數(shù)據(jù)加載到 Google Cloud SQL 83 創(chuàng)建 Google Cloud SQL 實例 83 與 Google 云計算平臺交互84 控制對 MySQL 的訪問 86 創(chuàng)建表 87 向表中填充數(shù)據(jù) 89 建立第一個模型 90 應急表 91 閾值優(yōu)化 92 機器學習 93 構建數(shù)據(jù)儀表板 94 Data Studio 入門 94 創(chuàng)建圖表 96 為最終用戶添加控件 98 用餅圖顯示所占比例 100 解釋應急表105 本章總結 107 第 4 章 流數(shù)據(jù):發(fā)布和攝取 109 設計事件饋送 109 時間校正 112 Apache Beam/Cloud Dataflow 113 解析機場數(shù)據(jù) 115 添加時區(qū)信息 116 將時間轉換為 UTC 117 修正日期 120 創(chuàng)建事件 121 在云中運行數(shù)據(jù)管道 122 將事件流發(fā)布到 Cloud Pub/Sub 126 獲取要發(fā)布的數(shù)據(jù)記錄 129 對數(shù)據(jù)記錄進行分頁 130 構建事件集合 130 發(fā)布事件集合 131 實時流式處理 132 Java Dataflow 中的流式數(shù)據(jù) 133 執(zhí)行流數(shù)據(jù)處理 138 使用 BigQuery 分析流式數(shù)據(jù) 140 實時數(shù)據(jù)儀表板 141 本章總結 144 第 5 章 交互式數(shù)據(jù)探索 145 探索性數(shù)據(jù)分析 146 將航班數(shù)據(jù)加載到 BigQuery 中 148 無服務器列式數(shù)據(jù)庫的優(yōu)點 148 訪問控制 151 聯(lián)合查詢 156 攝取 CSV 文件 158 Cloud Datalab 中的探索性數(shù)據(jù)分析 164 Jupyter 筆記本 165 Cloud Datalab 166 在 Cloud Datalab 中安裝軟件包 169 適用于 Google 云計算平臺的 Jupyter 魔術命令 170 質量控制 176 反常的數(shù)值176 清除異常數(shù)據(jù):大數(shù)據(jù)是不同的 178 不同出發(fā)延誤條件下的抵達延誤 182 概率決策閾值的應用 184 經(jīng)驗概率分布函數(shù) 185 答案 187 評估模型 188 隨機亂序分組 188 按日期分割189 訓練和測試191 本章總結 196 第 6 章 Cloud Dataproc上的 貝葉斯分類器 197 MapReduce 和 Hadoop 生態(tài)系統(tǒng) 197 MapReduce 的工作原理 198 Apache Hadoop 200 Google Cloud Dataproc200 需要更高級的工具 202 關注任務,而不是集群 204 初始化操作205 使用 Spark SQL 進行量化 206 Cloud Dataproc 上的 Google Cloud Datalab 208 使用 BigQuery 進行獨立檢查 209 Google Cloud Datalab 中的 Spark SQL 211 直方圖均衡化 215 動態(tài)調整群集大小 219 使用 Pig 實現(xiàn)貝葉斯分類 222 在 Cloud Dataproc 上運行 Pig 任務 224 將日期限制在訓練數(shù)據(jù)集中 225 決策標準 226 對貝葉斯模型進行評估 229 本章總結 231 第 7 章 機器學習:Spark上的邏輯回歸 233 邏輯回歸 234 Spark 機器學習庫 237 開始使用 Spark 機器學習 238 Spark 邏輯回歸 239 創(chuàng)建訓練數(shù)據(jù)集 241 處理邊界情況 243 創(chuàng)建訓練示例 245 訓練 246 使用模型進行預測 249 對模型進行評估 250 特征工程 253 實驗框架 254 創(chuàng)建保留數(shù)據(jù)集 257 特性點的選擇 258 特征點的縮放和剪切 261 特征轉換 263 變量分類 267 可擴展、可重復和實時性 269 本章總結 270 第 8 章 時間窗化的聚合特征 272 平均時間的需求 272 Java 中的 Dataflow 274 建立開發(fā)環(huán)境 275 使用 Beam 過濾數(shù)據(jù) 276 數(shù)據(jù)管道的控制選項和文本 I/O 280 在云端運行281 解析為對象283 計算平均時間 286 分組及合并286 并行執(zhí)行和側面輸入 289 調試 291 BigQueryIO 292 對航班對象進行轉換 294 批處理模式下的滑動窗口計算 295 在云端運行297 監(jiān)控、故障排除和性能調整 299 數(shù)據(jù)管道的故障排除 301 側面輸入的限制 302 重新設計數(shù)據(jù)管道 305 刪除重復項307 本章總結 310 第 9 章 使用TensorFlow的 機器學習分類器 312 使用更復雜的模型 313 將數(shù)據(jù)讀入 TensorFlow 317 建立實驗 322 線性分類器323 訓練和評估的輸入函數(shù) 325 服務輸入函數(shù) 326 創(chuàng)建實驗 326 執(zhí)行訓練 327 云中的分布式訓練 329 對 ML 模型進行改進 331 深度神經(jīng)網(wǎng)絡模型 332 嵌入 335 寬深模型 337 超參數(shù)調整341 部署模型 349 使用模型預測 350 對該模型的解釋 351 本章總結 353 第 10章 實時機器學習 355 調用預測服務 356 用于服務請求和響應的 Java 類357 發(fā)送請求并解析響應 359 預測服務的客戶端 360 將預測結果添加到航班信息 361 批量輸入和輸出 361 數(shù)據(jù)處理管道 363 識別無效的服務響應 364 批量處理服務請求 365 流式數(shù)據(jù)管道 367 扁平化 PCollections 368 執(zhí)行流式數(shù)據(jù)管道 369 延遲的和無序的數(shù)據(jù)記錄 371 水印和觸發(fā)器 376 事務,吞吐量和延遲 378 幾種可選的流式接收器 379 Cloud Bigtable 380 設計表 382 設計行鍵 383 流式傳輸至 Cloud Bigtable 384 查詢 Cloud Bigtable 中的數(shù)據(jù) 386 評估模型的性能 387 持續(xù)訓練的必要性 388 評估管道 389 性能評估 391 邊際分布 391 檢查模型的行為 393 識別行為變化 396 本章總結 398 全書總結 398 附錄 有關機器學習數(shù)據(jù)集中敏感數(shù)據(jù)的注意事項 401
你還可能感興趣
我要評論
|