內容簡介
本書從實用的角度較為全麵地展現瞭數據科學的主要內容,並結閤大量的實際項目案例,利用R語言詳細地講解瞭數據項目的開發過程和關鍵技術。本書包括三個部分共11章的內容,主要介紹瞭數據科學項目的處理過程、選擇閤適的建模方法,也討論瞭bagging算法、隨機森林、廣義加性模型、核和支持嚮量機等高級建模方法。此外,還討論瞭文檔編製和結果部署,以及如何嚮組織內不同的受眾展現項目結果。本書適閤作為高等院校高年級本科生和研究生及從事數據管理與分析工程技術人員的主要參考書。
目錄
譯者序
序言
前言
第一部分 數據科學引論
第1章 數據科學處理過程2
1.1 數據科學項目中的角色2
1.2 數據科學項目的階段4
1.2.1 製定目標5
1.2.2 收集和管理數據5
1.2.3 建立模型7
1.2.4 模型評價和批判8
1.2.5 展現和編製文檔9
1.2.6 模型部署和維護10
1.3 設定預期11
1.4 小結12
第2章 嚮R加載數據14
2.1 運用文件中的數據14
2.1.1 在源自文件或URL的良結構數據上使用R15
2.1.2 在欠結構數據上使用R17
2.2 在關係數據庫上使用R19
2.2.1 一個生産規模的示例20
2.2.2 從數據庫嚮R係統加載數據23
2.2.3 處理PUMS數據25
2.3 小結28
第3章 探索數據29
3.1 使用概要統計方法發現問題30
3.2 用圖形和可視化方法發現問題34
3.2.1 可視化檢測單變量的分布35
3.2.2 可視化檢測兩個變量間的關係42
3.3 小結51
第4章 管理數據52
4.1 清洗數據52
4.1.1 處理缺失值52
4.1.2 數據轉換56
4.2 為建模和驗證采樣61
4.2.1 測試集和訓練集的劃分61
4.2.2 創建一個樣本組列62
4.2.3 記錄分組63
4.2.4 數據溯源63
4.3 小結63
第二部分 建模方法
第5章 選擇和評價模型66
5.1 將業務問題映射到機器學習任務67
5.1.1 解決分類問題67
5.1.2 解決打分問題68
5.1.3 目標未知情況下的處理69
5.1.4 問題到方法的映射71
5.2 模型評價71
5.2.1 分類模型的評價72
5.2.2 打分模型的評價76
5.2.3 概率模型的評價78
5.2.4 排名模型的評價82
5.2.5 聚類模型的評價82
5.3 模型驗證84
5.3.1 常見的模型問題的識彆 84
5.3.2 模型可靠性的量化85
5.3.3 模型質量的保證86
5.4 小結88
第6章 記憶化方法89
6.1 KDD和KDD Cup 200989
6.2 構建單變量模型91
6.2.1 使用類彆型特徵92
6.2.2 使用數值型特徵94
6.2.3 使用交叉驗證估計過擬閤的影響96
6.3 構建多變量模型97
6.3.1 變量選擇97
6.3.2 使用決策樹99
6.3.3 使用最近鄰方法102
6.3.4 使用樸素貝葉斯105
6.4 小結108
第7章 綫性迴歸與邏輯斯諦迴歸110
7.1 使用綫性迴歸110
7.1.1 理解綫性迴歸110
7.1.2 構建綫性迴歸模型113
7.1.3 預測114
7.1.4 發現關係並抽取建議117
7.1.5 解讀模型概要並刻畫係數質量118
7.1.6 綫性迴歸要點122
7.2 使用邏輯斯諦迴歸123
7.2.1 理解邏輯斯諦迴歸123
7.2.2 構建邏輯斯諦迴歸模型124
7.2.3 預測125
7.2.4 從邏輯斯諦迴歸模型中發現關係並抽取建議129
7.2.5 解讀模型概要並刻畫係數130
7.2.6 邏輯斯諦迴歸要點136
7.3 小結137
第8章 無監督方法138
8.1 聚類分析138
8.1.1 距離139
8.1.2 準備數據 140
8.1.3 使用hclust()進行層次聚類142
8.1.4 k-均值算法150
8.1.5 分派新的點到簇154
8.1.6 聚類要點156
8.2 關聯規則156
8.2.1 關聯規則概述156
8.2.2 問題舉例157
8.2.3 使用arules程序包挖掘關聯規則158
8.2.4 關聯規則要點165
8.3 小結165
第9章 高級方法探索166
9.1 使用bagging和隨機森林方法減少訓練方差167
9.1.1 使用bagging方法改進預測167
9.1.2 使用隨機森林方法進一步改進預測170
9.1.3 bagging和隨機森林方法要點173
9.2 使用廣義加性模型學習非單調關係173
9.2.1 理解GAM174
9.2.2 一維迴歸示例174
9.2.3 提取非綫性關係178
9.2.4 在真實數據上使用GAM179
9.2.5 使用GAM實現邏輯斯諦迴歸182
9.2.6 GAM要點183
9.3 使用核方法提高數據可分性183
9.3.1 理解核函數184
9.3.2 在問題中使用顯式核函數187
9.3.3 核方法要點190
9.4 使用SVM對復雜的決策邊界建模190
9.4.1 理解支持嚮量機190
9.4.2 在人工示例數據中使用SVM192
9.4.3 在真實數據中使用SVM195
9.4.4 支持嚮量機要點197
9.5 小結197
第三部分 結果交付
第10章 文檔編製和部署200
10.1 buzz數據集200
10.2 使用knitr産生裏程碑文檔202
10.2.1 knitr是什麼202
10.2.2 knitr 技術詳解204
10.2.3 使用knitr編寫buzz數據文檔205
10.3 在運行時文檔編製中使用注釋和版本控製208
10.3.1 編寫有效注釋208
10.3.2 使用版本控製記錄曆史209
10.3.3 使用版本控製探索項目213
10.3.4 使用版本控製分享工作217
10.4 模型部署220
10.4.1 將模型部署為R HTTP服務220
10.4.2 按照輸齣部署模型222
10.4.3 要點223
10.5 小結224
第11章 有效的結果展現226
11.1 將結果展現給項目齣資方227
11.1.1 概述項目目標228
11.1.2 陳述項目結果229
11.1.3 補充細節230
11.1.4 提齣建議並討論未來工作231
11.1.5 嚮項目齣資方展現的要點232
11.2 嚮最終用戶展現模型232
11.2.1 概述項目目標232
11.2.2 展現模型如何融入用戶的工作流程233
11.2.3 展現如何使用模型235
11.2.4 嚮最終用戶展現的要點236
11.3 嚮其他數據科學傢展現你的工作236
11.3.1 介紹問題236
11.3.2 討論相關工作237
11.3.3 討論你的方法238
11.3.4 討論結果和未來工作239
11.3.5 嚮其他數據科學傢展現的要點240
11.4 小結240
附錄A 使用R和其他工具241
附錄B 重要的統計學概念263
附錄C 更多的工具和值得探索的思路292
參考文獻297
索引299
前言/序言
前 言 本書正是我們在自學數據科學時所希望得到的那本書,我們可從中瞭解哪些主題和技能的集閤構成瞭數據科學。它也是我們希望發給客戶和同行的書。本書的目的是講解統計學、計算機科學和機器學習等學科中對於數據科學極為重要的內容。 數據科學利用瞭來自實驗科學、統計學、報錶技術、分析技術、可視化技術、商務智能、專傢係統、機器學習、數據庫、數據倉庫、數據挖掘和大數據技術等各個領域的工具,正是因為我們需要如此多的工具,因此需要一個能夠涵蓋全部內容的學科。數據科學本身與這些工具和技術的區彆,在於數據科學的核心目標是將有效的決策支持模型部署到實際生産環境中。 我們的目標是從實用的、麵嚮實踐的角度來展現數據科學,通過在真實數據上的可運行的練習題,我們設法達到這一目標,全書給齣瞭10個重要的數據集。我們認為這種方式能舉例說明我們到底想要講授什麼,還能演示說明在真實世界項目中所必需的全部預備步驟。 貫穿全書,我們討論實用的統計學和機器學習概念,給齣具體的代碼示例,探索如何與非專業人士開展閤作以及如何嚮他們講解。我們期待,即使你不能在這些主題中發現新意,這本書也能夠在你還未想到的其他一兩個主題上閃齣一道靈光。 關於本書本書討論數據科學的概念和方法:數據科學領域主要使用統計學、機器學習和計算機科學的成果來建立預測模型。由於數據科學具有寬泛性,所以有必要對其展開一些討論並對本書所涉及的方法加以界定。 什麼是數據科學統計學傢William S. Cleveland將數據科學定義為一個比統計學自身大得多的跨學科領域。而我們定義數據科學為一種管理過程,該過程能夠將假設和數據轉換成可應用的預測。典型的預測分析目標例子有:預測誰將在選舉中獲勝、什麼樣的商品放在一起銷售更好、哪些貸款將被拖欠或者什麼網上廣告將被點擊等。數據科學傢負責獲取數據、管理數據、選擇建模技術、編寫代碼以及驗證結果。 由於數據科學領域涉及眾多的學科,所以它通常進行“二次調用”。我們遇到的許多優秀數據科學傢原本是程序設計者、統計學傢、業務分析師或科技工作者,他們在原有知識儲備的基礎上再多學一些技術,就成為瞭優秀的數據科學傢。這一觀察促成瞭本書的寫法:通過具體地介紹在真實數據上執行的各個通用的項目開發步驟,來介紹數據科學傢所需的實用技能。對於這些開發步驟,有的你將比我們懂得更多,有的你會更快地掌握,有的還需要你進一步深入研究。 數據科學的大多數理論基礎來源於統計學,但正如我們所知,數據科學強烈地受到技術學和軟件工程方法學的影響,並且在計算機科學和信息技術所驅動的各個子領域中得到瞭極大的發展。下麵通過列舉一些著名的案例來體會數據科學的若乾工程風格: Amazon的商品推薦係統Google的廣告評估係統LinkedIn的人脈推薦係統Twitter的趨勢話題Walmart的消費者需求預測係統上述係統有許多共同特點: 所有係統均建立在大規模數據集基礎之上。它們並非一定屬於大數據領域,不過如果僅使用小數據集的話,這些係統將無法成功。為瞭管理數據,這些係統需要源自計算機科學的概念:數據庫理論、並行程序設計理論、流數據技術以及數據倉庫。 這些係統大多是在綫或實時運行的。當數據科學團隊部署一個決策程序或打分程序時,目的是要用於直接做齣決策或直接嚮許多終端用戶展示結果,而非隻是産生單一的報錶或分析結果。生産部署階段是校正結果的最後機會,因為數據科學傢不會長期留在現場來解決存在的缺陷。 所有係統均允許齣錯,但齣錯率的上限是不容討價還價的。 這些係統不需考慮因果關係,如果它們能發現有用的相關性,就算作是成功的。它們不必非要從結果中正確地找齣導緻該結果的原因。 本書講授構建這樣的係統時所需要的原理和工具,包括:通用的任務、開發步驟和成功地交付這樣的項目所使用的工具。我們強調整個工作過程—如何進行項目管理,如何與其他人閤作,以及如何對非專業人士展現結果。 導讀路綫圖本書涵蓋如下內容: 如何對數據科學處理過程本身進行管理。數據科學傢必須有能力來衡量和跟蹤他們自己的項目。 如何應用在數據科學項目中常用的最強的統計和機器學習技術。可將本書看作一係列有明確工作目標的練習,需使用程序設計語言R去實現真實的數據科學工作。 如何嚮各種利益相關者進行結果展現,包括管理人員、用戶、部署團隊等。必須用具體的術語嚮混閤類型的受眾解釋你的工作,並且使用他們所熟悉的語言來錶達,而不要堅持使用專門領域的技術術語。對於數據科學項目的結果展現,你無法繞開這一障礙。 我們使用循序漸進的方式來安排本書的內容,其詳細內容組織如下: 第一部分描述數據科學處理過程的主要目標和技術,強調協作和數據。 第1章討論作為一名數據科學傢如何開展工作,第2章介紹如何將數據裝載到R係統,並演示如何啓動R係統開始工作。 第3章講授首先要在數據中尋找什麼,以及用於刻畫數據特徵和理解數據的重要步驟。在做數據分析之前,必須準備好數據,另外必須修正數據中存在的問題,第4章介紹如何處理這些問題。 第二部分從刻畫數據特徵轉到如何構建有效的預測模型上來。第5章提供將業務需求映射到技術評價和建模技術的初始詞典。 第6章講授如何通過記憶化訓練數據構建模型。這種記憶化模型雖然概念上簡單卻非常有效。第7章進展到具有顯式加性結構的模型問題,這種功能結構增加瞭進行有益的內插值和外插值,以及辨識重要變量和效果的能力。 第8章描述當項目中沒有可用的帶標簽的訓練數據時,還能夠做什麼。第9章介紹用於改進模型預測性能和修正具體建模問題的高級建模方法。 第三部分從建模問題再迴到處理過程上來,展示如何交付建模結果。第10章演示如何管理、文檔編製和部署模型。第11章介紹如何針對不同的受眾給齣有效的展現方法。 附錄部分包括關於R係統、統計學和其他可用工具的補充技術細節。附錄A介紹如何安裝R係統、如何啓動工作以及如何運用其他工具(如SQL)。附錄B是關於一些重要統計學思想的最新資料。附錄C討論附加的工具和研究思路。參考文獻提供參考文獻資料並介紹今後的研究機遇。 書中的學習材料是根據目標和任務來組織的,相關的工具在需要時纔被引入。每一章的主題均以一個帶有相關數據集的代錶性項目為背景展開討論。在學習全書的過程中,你將接觸10個實質性項目。本書提供的所有數據集均保存在本書的GitHub資料庫中(https://github.com/WinVector/zmPDSwR),你可以下載整個資料庫(這是一個zip壓縮文件,GitHub服務之一),然後將該庫復製到你的機器上,也可以根據需要隻復製單個文件。 緻讀者為學習和運行本書的例子,你需要熟悉一些R語言、統計學以及SQL數據庫(某些例子涉及)的知識,建議你手頭準備一些好的入門教材。在學習這本書之前,你不必是一位R語言、統計學和SQL方麵的專傢,但應該能夠很輕鬆地自學本書提及卻不能完整講解的內容。 對於R語言,我們推薦參考Robert Kabacoff的《R in Action,2nd Edition》(www.manning.com/kabacoff2/)以及與本書相關的網站Quick-R(www.statmethods.net)。對於統計學,我們推薦參考David Freedman、Robert Pisani和Roger Purves的《Statistics,4th Edition》。對於SQL,我們推薦參考Joe Celko的《SQL for Smarties,4th Edition》。 總體上,我們所期望的理想讀者應該是這樣的: 對工作示例感興趣。通過學習這些示例,你將至少學會一種方法,能夠完成一個項目的所有步驟。你必須樂於嘗試簡單的腳本編寫和程序設計以充分利用這本書。對於我們給齣的每個示例,你應該嘗試改變它,並且預料到會有某些失敗(你的改變不奏效)和某些成功(你的改變優於示例)。 對R語言的統計係統有所瞭解並且樂於用R語言編寫短的腳本和程序。除Kabacoff的書(《R in Action》)外,我們在參考文獻中還推薦瞭幾本好書。我們用R語言解決具體的問題。為瞭理解正在進行什麼處理,你需要運行那些示例,並且閱讀額外的文檔以理解那些在本書中沒有展示的變種命令。 對概率、均值、標準差和顯著性等基本的統計學概念有一些經驗。我們在需要時會引入這些概念,對於工作示例,你可能還需要閱讀一些額外的參考文獻。我們給齣某些術語的定義,並提供某些主題的參考文獻和閤適的博客,但我們認為在某些主題上你需要自己在互聯網上進行搜索。 一颱安裝有R係統和其他工具的計算機(OS X、Linux或Windows),以及用於下載有關工具和數據集的互聯網。我們強烈地建議你進行示例學習,用R係統help()命令學習各種方法,並且跟蹤學習某些補充的參考文獻。 書中沒有什麼本書不是一本R語言的使用手冊。我們使用R語言具體地展示數據科學項目的重要步驟,通過示例講授足夠的R語言知識,但不熟悉R語言的讀者需要查閱附錄A以及許多優秀的R語言書籍和使用指南。 本書不是一係列案例研究集閤。我們更強調方法和技術,在本書中給齣案例數據和代碼僅僅是為瞭確保我們給齣的建議是具體的、可用的。 本書不是一本大數據方麵的書。我們認為大多數有意義的數據科學問題齣現在數據庫級彆或文件級彆等可管理的大小規模上(通常比內存更大,但還未大到難以管理的程度)。有價值的數據是能夠將測量到的條件映射到依賴於它們的結果上,但産生這些數據往往是代價高昂的,因而在實際應用中通常會限製這些數據的規模。而對於某些報錶生成、數據挖掘和自然語言處理任務,纔需要進入大數據領域。 本書不是一本理論方麵的書。對於任何一種技術,我們不會強調其絕對嚴格的理論。數據科學的目標應該是支持靈活性,提供很多可用的好技術。並且,當某個技術能夠用於解決手頭問題時,深入地研究該技術。此外,由於要直接使用R語言代碼,所以在本書正文中使用R代碼符號,而沒用美觀的編輯公式。 本書也不是給機器學習多麵手使用的。我們隻強調那些已經用R語言實現瞭的方法。對於每種方法,我們介紹其操作的理論並錶明該方法有何優點。我們一般不討論如何實現這些方法(即便這種實現是容易的),因為這些信息是隨處可得的。 編碼約定及下載本書是以示例驅動方式敘述的,我們在GitHub資料庫(https://github.com/WinVector/zmPDSwR)中提供瞭準備好的示例數據,它們用R語言進行編碼並且鏈接到初始源,你可以在綫查詢該庫或者將其復製到你自己的機器上。由於從zip壓縮文件中復製代碼比從本書的電子版中復製和粘貼更容易,我們也提供瞭産生所有結果的程序代碼以及在書中齣現的幾乎所有的圖錶(作為一個zip文件)(https://github.com/WinVector/zmPDSwR/raw/master/CodeExamples.zip)。你也可以從Manning齣版社的網站(www.manning.com/PracticalDataSciencewithR)下載這些代碼。 我們鼓勵你在閱讀本書時盡力實現這些R代碼示例,即便在討論數據科學中相當抽象的概念時,我們也會用具體的數據和代碼來展示示例,在每章均給齣瞭指嚮該章內容所參考的具體數據集的鏈接。 在本書中,代碼均采用特殊字體書寫,以將它們與正常文字區彆開來,具體的變量和值采用類似的格式,抽象的數學符號則采用斜體。R是一種數學語言,許多短語都用到瞭上述兩種字體。在我們的示例中,任何提示符(如“>”和“$”)都可以忽略掉。內嵌結果用R的注釋符“#”作為前綴來標識。 軟硬件要求為學習示例,需要安裝有Linux、OS X或Windows操作係統的計算機,並且安裝瞭相關的軟件(安裝方法在附錄A給齣),我們推薦的所有軟件都是完全跨平颱的、免費使用的、開源的。 建議至少安裝如下軟件: R係統:http://cran.r-project.org。 各種來自CRAN的程序包(由R自身使用install.packages()命令安裝並使用library()命令激活)。 版本控製工具Git:http://git-scm.com。 RStudio:一個集成瞭編輯器、執行和繪圖的開發環境—http://www.rstudio.com。 支持係統命令的bash shell,它嵌入在Linux和OS X係統中,能夠通過安裝Cygwin (http://www.cygwin.com)添加到Windows係統。我們不寫任何腳本,所以對於一個經驗豐富的Windows shell
數據科學:理論、方法與R語言實踐 下載 mobi epub pdf txt 電子書 格式