本書從實(shí)用的角度較為全面地展現(xiàn)了數(shù)據(jù)科學(xué)的主要內(nèi)容,并結(jié)合大量的實(shí)際項(xiàng)目案例,利用R語(yǔ)言詳細(xì)地講解了數(shù)據(jù)項(xiàng)目的開(kāi)發(fā)過(guò)程和關(guān)鍵技術(shù)。本書包括三個(gè)部分共11章的內(nèi)容,主要介紹了數(shù)據(jù)科學(xué)項(xiàng)目的處理過(guò)程、選擇合適的建模方法,也討論了bagging算法、隨機(jī)森林、廣義加性模型、核和支持向量機(jī)等高級(jí)建模方法。此外,還討論了文檔編制和結(jié)果部署,以及如何向組織內(nèi)不同的受眾展現(xiàn)項(xiàng)目結(jié)果。本書適合作為高等院校高年級(jí)本科生和研究生及從事數(shù)據(jù)管理與分析工程技術(shù)人員的主要參考書。
前 言
本書正是我們?cè)谧詫W(xué)數(shù)據(jù)科學(xué)時(shí)所希望得到的那本書,我們可從中了解哪些主題和技能的集合構(gòu)成了數(shù)據(jù)科學(xué)。它也是我們希望發(fā)給客戶和同行的書。本書的目的是講解統(tǒng)計(jì)學(xué)、計(jì)算機(jī)科學(xué)和機(jī)器學(xué)習(xí)等學(xué)科中對(duì)于數(shù)據(jù)科學(xué)極為重要的內(nèi)容。
數(shù)據(jù)科學(xué)利用了來(lái)自實(shí)驗(yàn)科學(xué)、統(tǒng)計(jì)學(xué)、報(bào)表技術(shù)、分析技術(shù)、可視化技術(shù)、商務(wù)智能、專家系統(tǒng)、機(jī)器學(xué)習(xí)、數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)挖掘和大數(shù)據(jù)技術(shù)等各個(gè)領(lǐng)域的工具,正是因?yàn)槲覀冃枰绱硕嗟墓ぞ撸虼诵枰粋(gè)能夠涵蓋全部?jī)?nèi)容的學(xué)科。數(shù)據(jù)科學(xué)本身與這些工具和技術(shù)的區(qū)別,在于數(shù)據(jù)科學(xué)的核心目標(biāo)是將有效的決策支持模型部署到實(shí)際生產(chǎn)環(huán)境中。
我們的目標(biāo)是從實(shí)用的、面向?qū)嵺`的角度來(lái)展現(xiàn)數(shù)據(jù)科學(xué),通過(guò)在真實(shí)數(shù)據(jù)上的可運(yùn)行的練習(xí)題,我們?cè)O(shè)法達(dá)到這一目標(biāo),全書給出了10個(gè)重要的數(shù)據(jù)集。我們認(rèn)為這種方式能舉例說(shuō)明我們到底想要講授什么,還能演示說(shuō)明在真實(shí)世界項(xiàng)目中所必需的全部預(yù)備步驟。
貫穿全書,我們討論實(shí)用的統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)概念,給出具體的代碼示例,探索如何與非專業(yè)人士開(kāi)展合作以及如何向他們講解。我們期待,即使你不能在這些主題中發(fā)現(xiàn)新意,這本書也能夠在你還未想到的其他一兩個(gè)主題上閃出一道靈光。
關(guān)于本書本書討論數(shù)據(jù)科學(xué)的概念和方法:數(shù)據(jù)科學(xué)領(lǐng)域主要使用統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)和計(jì)算機(jī)科學(xué)的成果來(lái)建立預(yù)測(cè)模型。由于數(shù)據(jù)科學(xué)具有寬泛性,所以有必要對(duì)其展開(kāi)一些討論并對(duì)本書所涉及的方法加以界定。
什么是數(shù)據(jù)科學(xué)統(tǒng)計(jì)學(xué)家William S. Cleveland將數(shù)據(jù)科學(xué)定義為一個(gè)比統(tǒng)計(jì)學(xué)自身大得多的跨學(xué)科領(lǐng)域。而我們定義數(shù)據(jù)科學(xué)為一種管理過(guò)程,該過(guò)程能夠?qū)⒓僭O(shè)和數(shù)據(jù)轉(zhuǎn)換成可應(yīng)用的預(yù)測(cè)。典型的預(yù)測(cè)分析目標(biāo)例子有:預(yù)測(cè)誰(shuí)將在選舉中獲勝、什么樣的商品放在一起銷售更好、哪些貸款將被拖欠或者什么網(wǎng)上廣告將被點(diǎn)擊等。數(shù)據(jù)科學(xué)家負(fù)責(zé)獲取數(shù)據(jù)、管理數(shù)據(jù)、選擇建模技術(shù)、編寫代碼以及驗(yàn)證結(jié)果。
由于數(shù)據(jù)科學(xué)領(lǐng)域涉及眾多的學(xué)科,所以它通常進(jìn)行“二次調(diào)用”。我們遇到的許多優(yōu)秀數(shù)據(jù)科學(xué)家原本是程序設(shè)計(jì)者、統(tǒng)計(jì)學(xué)家、業(yè)務(wù)分析師或科技工作者,他們?cè)谠兄R(shí)儲(chǔ)備的基礎(chǔ)上再多學(xué)一些技術(shù),就成為了優(yōu)秀的數(shù)據(jù)科學(xué)家。這一觀察促成了本書的寫法:通過(guò)具體地介紹在真實(shí)數(shù)據(jù)上執(zhí)行的各個(gè)通用的項(xiàng)目開(kāi)發(fā)步驟,來(lái)介紹數(shù)據(jù)科學(xué)家所需的實(shí)用技能。對(duì)于這些開(kāi)發(fā)步驟,有的你將比我們懂得更多,有的你會(huì)更快地掌握,有的還需要你進(jìn)一步深入研究。
數(shù)據(jù)科學(xué)的大多數(shù)理論基礎(chǔ)來(lái)源于統(tǒng)計(jì)學(xué),但正如我們所知,數(shù)據(jù)科學(xué)強(qiáng)烈地受到技術(shù)學(xué)和軟件工程方法學(xué)的影響,并且在計(jì)算機(jī)科學(xué)和信息技術(shù)所驅(qū)動(dòng)的各個(gè)子領(lǐng)域中得到了極大的發(fā)展。下面通過(guò)列舉一些著名的案例來(lái)體會(huì)數(shù)據(jù)科學(xué)的若干工程風(fēng)格:
Amazon的商品推薦系統(tǒng)Google的廣告評(píng)估系統(tǒng)LinkedIn的人脈推薦系統(tǒng)Twitter的趨勢(shì)話題Walmart的消費(fèi)者需求預(yù)測(cè)系統(tǒng)上述系統(tǒng)有許多共同特點(diǎn):
所有系統(tǒng)均建立在大規(guī)模數(shù)據(jù)集基礎(chǔ)之上。它們并非一定屬于大數(shù)據(jù)領(lǐng)域,不過(guò)如果僅使用小數(shù)據(jù)集的話,這些系統(tǒng)將無(wú)法成功。為了管理數(shù)據(jù),這些系統(tǒng)需要源自計(jì)算機(jī)科學(xué)的概念:數(shù)據(jù)庫(kù)理論、并行程序設(shè)計(jì)理論、流數(shù)據(jù)技術(shù)以及數(shù)據(jù)倉(cāng)庫(kù)。
這些系統(tǒng)大多是在線或?qū)崟r(shí)運(yùn)行的。當(dāng)數(shù)據(jù)科學(xué)團(tuán)隊(duì)部署一個(gè)決策程序或打分程序時(shí),目的是要用于直接做出決策或直接向許多終端用戶展示結(jié)果,而非只是產(chǎn)生單一的報(bào)表或分析結(jié)果。生產(chǎn)部署階段是校正結(jié)果的最后機(jī)會(huì),因?yàn)閿?shù)據(jù)科學(xué)家不會(huì)長(zhǎng)期留在現(xiàn)場(chǎng)來(lái)解決存在的缺陷。
所有系統(tǒng)均允許出錯(cuò),但出錯(cuò)率的上限是不容討價(jià)還價(jià)的。
這些系統(tǒng)不需考慮因果關(guān)系,如果它們能發(fā)現(xiàn)有用的相關(guān)性,就算作是成功的。它們不必非要從結(jié)果中正確地找出導(dǎo)致該結(jié)果的原因。
本書講授構(gòu)建這樣的系統(tǒng)時(shí)所需要的原理和工具,包括:通用的任務(wù)、開(kāi)發(fā)步驟和成功地交付這樣的項(xiàng)目所使用的工具。我們強(qiáng)調(diào)整個(gè)工作過(guò)程—如何進(jìn)行項(xiàng)目管理,如何與其他人合作,以及如何對(duì)非專業(yè)人士展現(xiàn)結(jié)果。
導(dǎo)讀路線圖本書涵蓋如下內(nèi)容:
如何對(duì)數(shù)據(jù)科學(xué)處理過(guò)程本身進(jìn)行管理。數(shù)據(jù)科學(xué)家必須有能力來(lái)衡量和跟蹤他們自己的項(xiàng)目。
如何應(yīng)用在數(shù)據(jù)科學(xué)項(xiàng)目中常用的最強(qiáng)的統(tǒng)計(jì)和機(jī)器學(xué)習(xí)技術(shù)。可將本書看作一系列有明確工作目標(biāo)的練習(xí),需使用程序設(shè)計(jì)語(yǔ)言R去實(shí)現(xiàn)真實(shí)的數(shù)據(jù)科學(xué)工作。
如何向各種利益相關(guān)者進(jìn)行結(jié)果展現(xiàn),包括管理人員、用戶、部署團(tuán)隊(duì)等。必須用具體的術(shù)語(yǔ)向混合類型的受眾解釋你的工作,并且使用他們所熟悉的語(yǔ)言來(lái)表達(dá),而不要堅(jiān)持使用專門領(lǐng)域的技術(shù)術(shù)語(yǔ)。對(duì)于數(shù)據(jù)科學(xué)項(xiàng)目的結(jié)果展現(xiàn),你無(wú)法繞開(kāi)這一障礙。
我們使用循序漸進(jìn)的方式來(lái)安排本書的內(nèi)容,其詳細(xì)內(nèi)容組織如下:
第一部分描述數(shù)據(jù)科學(xué)處理過(guò)程的主要目標(biāo)和技術(shù),強(qiáng)調(diào)協(xié)作和數(shù)據(jù)。
第1章討論作為一名數(shù)據(jù)科學(xué)家如何開(kāi)展工作,第2章介紹如何將數(shù)據(jù)裝載到R系統(tǒng),并演示如何啟動(dòng)R系統(tǒng)開(kāi)始工作。
第3章講授首先要在數(shù)據(jù)中尋找什么,以及用于刻畫數(shù)據(jù)特征和理解數(shù)據(jù)的重要步驟。在做數(shù)據(jù)分析之前,必須準(zhǔn)備好數(shù)據(jù),另外必須修正數(shù)據(jù)中存在的問(wèn)題,第4章介紹如何處理這些問(wèn)題。
第二部分從刻畫數(shù)據(jù)特征轉(zhuǎn)到如何構(gòu)建有效的預(yù)測(cè)模型上來(lái)。第5章提供將業(yè)務(wù)需求映射到技術(shù)評(píng)價(jià)和建模技術(shù)的初始詞典。
第6章講授如何通過(guò)記憶化訓(xùn)練數(shù)據(jù)構(gòu)建模型。這種記憶化模型雖然概念上簡(jiǎn)單卻非常有效。第7章進(jìn)展到具有顯式加性結(jié)構(gòu)的模型問(wèn)題,這種功能結(jié)構(gòu)增加了進(jìn)行有益的內(nèi)插值和外插值,以及辨識(shí)重要變量和效果的能力。
第8章描述當(dāng)項(xiàng)目中沒(méi)有可用的帶標(biāo)簽的訓(xùn)練數(shù)據(jù)時(shí),還能夠做什么。第9章介紹用于改進(jìn)模型預(yù)測(cè)性能和修正具體建模問(wèn)題的高級(jí)建模方法。
第三部分從建模問(wèn)題再回到處理過(guò)程上來(lái),展示如何交付建模結(jié)果。第10章演示如何管理、文檔編制和部署模型。第11章介紹如何針對(duì)不同的受眾給出有效的展現(xiàn)方法。
附錄部分包括關(guān)于R系統(tǒng)、統(tǒng)計(jì)學(xué)和其他可用工具的補(bǔ)充技術(shù)細(xì)節(jié)。附錄A介紹如何安裝R系統(tǒng)、如何啟動(dòng)工作以及如何運(yùn)用其他工具(如SQL)。附錄B是關(guān)于一些重要統(tǒng)計(jì)學(xué)思想的最新資料。附錄C討論附加的工具和研究思路。參考文獻(xiàn)提供參考文獻(xiàn)資料并介紹今后的研究機(jī)遇。
書中的學(xué)習(xí)材料是根據(jù)目標(biāo)和任務(wù)來(lái)組織的,相關(guān)的工具在需要時(shí)才被引入。每一章的主題均以一個(gè)帶有相關(guān)數(shù)據(jù)集的代表性項(xiàng)目為背景展開(kāi)討論。在學(xué)習(xí)全書的過(guò)程中,你將接觸10個(gè)實(shí)質(zhì)性項(xiàng)目。本書提供的所有數(shù)據(jù)集均保存在本書的GitHub資料庫(kù)中(https://github.com/WinVector/zmPDSwR),你可以下載整個(gè)資料庫(kù)(這是一個(gè)zip壓縮文件,GitHub服務(wù)之一),然后將該庫(kù)復(fù)制到你的機(jī)器上,也可以根據(jù)需要只復(fù)制單個(gè)文件。
致讀者為學(xué)習(xí)和運(yùn)行本書的例子,你需要熟悉一些R語(yǔ)言、統(tǒng)計(jì)學(xué)以及SQL數(shù)據(jù)庫(kù)(某些例子涉及)的知識(shí),建議你手頭準(zhǔn)備一些好的入門教材。在學(xué)習(xí)這本書之前,你不必是一位R語(yǔ)言、統(tǒng)計(jì)學(xué)和SQL方面的專家,但應(yīng)該能夠很輕松地自學(xué)本書提及卻不能完整講解的內(nèi)容。
對(duì)于R語(yǔ)言,我們推薦參考Robert Kabacoff的《R in Action,2nd Edition》(www.manning.com/kabacoff2/)以及與本書相關(guān)的網(wǎng)站Quick-R(www.statmethods.net)。對(duì)于統(tǒng)計(jì)學(xué),我們推薦參考David Freedman、Robert Pisani和Roger Purves的《Statistics,4th Edition》。對(duì)于SQL,我們推薦參考Joe Celko的《SQL for Smarties,4th Edition》。
總體上,我們所期望的理想讀者應(yīng)該是這樣的:
對(duì)工作示例感興趣。通過(guò)學(xué)習(xí)這些示例,你將至少學(xué)會(huì)一種方法,能夠完成一個(gè)項(xiàng)目的所有步驟。你必須樂(lè)于嘗試簡(jiǎn)單的腳本編寫和程序設(shè)計(jì)以充分利用這本書。對(duì)于我們給出的每個(gè)示例,你應(yīng)該嘗試改變它,并且預(yù)料到會(huì)有某些失敗(你的改變不奏效)和某些成功(你的改變優(yōu)于示例)。
對(duì)R語(yǔ)言的統(tǒng)計(jì)系統(tǒng)有所了解并且樂(lè)于用R語(yǔ)言編寫短的腳本和程序。除Kabacoff的書(《R in Action》)外,我們?cè)趨⒖嘉墨I(xiàn)中還推薦了幾本好書。我們用R語(yǔ)言解決具體的問(wèn)題。為了理解正在進(jìn)行什么處理,你需要運(yùn)行那些示例,并且閱讀額外的文檔以理解那些在本書中沒(méi)有展示的變種命令。
對(duì)概率、均值、標(biāo)準(zhǔn)差和顯著性等基本的統(tǒng)計(jì)學(xué)概念有一些經(jīng)驗(yàn)。我們?cè)谛枰獣r(shí)會(huì)引入這些概念,對(duì)于工作示例,你可能還需要閱讀一些額外的參考文獻(xiàn)。我們給出某些術(shù)語(yǔ)的定義,并提供某些主題的參考文獻(xiàn)和合適的博客,但我們認(rèn)為在某些主題上你需要自己在互聯(lián)網(wǎng)上進(jìn)行搜索。
一臺(tái)安裝有R系統(tǒng)和其他工具的計(jì)算機(jī)(OS X、Linux或Windows),以及用于下載有關(guān)工具和數(shù)據(jù)集的互聯(lián)網(wǎng)。我們強(qiáng)烈地建議你進(jìn)行示例學(xué)習(xí),用R系統(tǒng)help()命令學(xué)習(xí)各種方法,并且跟蹤學(xué)習(xí)某些補(bǔ)充的參考文獻(xiàn)。
書中沒(méi)有什么本書不是一本R語(yǔ)言的使用手冊(cè)。我們使用R語(yǔ)言具體地展示數(shù)據(jù)科學(xué)項(xiàng)目的重要步驟,通過(guò)示例講授足夠的R語(yǔ)言知識(shí),但不熟悉R語(yǔ)言的讀者需要查閱附錄A以及許多優(yōu)秀的R語(yǔ)言書籍和使用指南。
本書不是一系列案例研究集合。我們更強(qiáng)調(diào)方法和技術(shù),在本書中給出案例數(shù)據(jù)和代碼僅僅是為了確保我們給出的建議是具體的、可用的。
本書不是一本大數(shù)據(jù)方面的書。我們認(rèn)為大多數(shù)有意義的數(shù)據(jù)科學(xué)問(wèn)題出現(xiàn)在數(shù)據(jù)庫(kù)級(jí)別或文件級(jí)別等可管理的大小規(guī)模上(通常比內(nèi)存更大,但還未大到難以管理的程度)。有價(jià)值的數(shù)據(jù)是能夠?qū)y(cè)量到的條件映射到依賴于它們的結(jié)果上,但產(chǎn)生這些數(shù)據(jù)往往是代價(jià)高昂的,因而在實(shí)際應(yīng)用中通常會(huì)限制這些數(shù)據(jù)的規(guī)模。而對(duì)于某些報(bào)表生成、數(shù)據(jù)挖掘和自然語(yǔ)言處理任務(wù),才需要進(jìn)入大數(shù)據(jù)領(lǐng)域。
本書不是一本理論方面的書。對(duì)于任何一種技術(shù),我們不會(huì)強(qiáng)調(diào)其絕對(duì)嚴(yán)格的理論。數(shù)據(jù)科學(xué)的目標(biāo)應(yīng)該是支持靈活性,提供很多可用的好技術(shù)。并且,當(dāng)某個(gè)技術(shù)能夠用于解決手頭問(wèn)題時(shí),深入地研究該技術(shù)。此外,由于要直接使用R語(yǔ)言代碼,所以在本書正文中使用R代碼符號(hào),而沒(méi)用美觀的編輯公式。
本書也不是給機(jī)器學(xué)習(xí)多面手使用的。我們只強(qiáng)調(diào)那些已經(jīng)用R語(yǔ)言實(shí)現(xiàn)了的方法。對(duì)于每種方法,我們介紹其操作的理論并表明該方法有何優(yōu)點(diǎn)。我們一般不討論如何實(shí)現(xiàn)這些方法(即便這種實(shí)現(xiàn)是容易的),因?yàn)檫@些信息是隨處可得的。
編碼約定及下載本書是以示例驅(qū)動(dòng)方式敘述的,我們?cè)贕itHub資料庫(kù)(https://github.com/WinVector/zmPDSwR)中提供了準(zhǔn)備好的示例數(shù)據(jù),它們用R語(yǔ)言進(jìn)行編碼并且鏈接到初始源,你可以在線查詢?cè)搸?kù)或者將其復(fù)制到你自己的機(jī)器上。由于從zip壓縮文件中復(fù)制代碼比從本書的電子版中復(fù)制和粘貼更容易,我們也提供了產(chǎn)生所有結(jié)果的程序代碼以及在書中出現(xiàn)的幾乎所有的圖表(作為一個(gè)zip文件)(https://github.com/WinVector/zmPDSwR/raw/master/CodeExamples.zip)。你也可以從Manning出版社的網(wǎng)站(www.manning.com/PracticalDataSciencewithR)下載這些代碼。
我們鼓勵(lì)你在閱讀本書時(shí)盡力實(shí)現(xiàn)這些R代碼示例,即便在討論數(shù)據(jù)科學(xué)中相當(dāng)抽象的概念時(shí),我們也會(huì)用具體的數(shù)據(jù)和代碼來(lái)展示示例,在每章均給出了指向該章內(nèi)容所參考的具體數(shù)據(jù)集的鏈接。
在本書中,代碼均采用特殊字體書寫,以將它們與正常文字區(qū)別開(kāi)來(lái),具體的變量和值采用類似的格式,抽象的數(shù)學(xué)符號(hào)則采用斜體。R是一種數(shù)學(xué)語(yǔ)言,許多短語(yǔ)都用到了上述兩種字體。在我們的示例中,任何提示符(如“>”和“$”)都可以忽略掉。內(nèi)嵌結(jié)果用R的注釋符“#”作為前綴來(lái)標(biāo)識(shí)。
軟硬件要求為學(xué)習(xí)示例,需要安裝有Linux、OS X或Windows操作系統(tǒng)的計(jì)算機(jī),并且安裝了相關(guān)的軟件(安裝方法在附錄A給出),我們推薦的所有軟件都是完全跨平臺(tái)的、免費(fèi)使用的、開(kāi)源的。
建議至少安裝如下軟件:
R系統(tǒng):http://cran.r-project.org。
各種來(lái)自CRAN的程序包(由R自身使用install.packages()命令安裝并使用library()命令激活)。
版本控制工具Git:http://git-scm.com。
RStudio:一個(gè)集成了編輯器、執(zhí)行和繪圖的開(kāi)發(fā)環(huán)境—http://www.rstudio.com。
支持系統(tǒng)命令的bash shell,它嵌入在Linux和OS X系統(tǒng)中,能夠通過(guò)安裝Cygwin (http://www.cygwin.com)添加到Windows系統(tǒng)。我們不寫任何腳本,所以對(duì)于一個(gè)經(jīng)驗(yàn)豐富的Windows shell用戶,如果能將我們的bash命令轉(zhuǎn)換成對(duì)應(yīng)的Windows命令,也可以不安裝Cygwin。
關(guān)于封面插圖本書英文版的封面圖片題為“1703年的中國(guó)女子服飾”。該插圖是從Thomas Jefferys于1757年至1772年在倫敦出版的《各國(guó)古今服飾大全(共4卷)》中得到的,其扉頁(yè)上說(shuō)明這些都是手工著色的銅版畫,用阿拉伯樹膠加固。Thomas Jefferys(1719~1771)被稱作“國(guó)王喬治三世時(shí)代的地理學(xué)家”。他是一名英國(guó)繪圖師,是當(dāng)時(shí)頂級(jí)的地圖供應(yīng)商。他為政府和其他公務(wù)團(tuán)體制作和印刷地圖,生產(chǎn)了世界各地、特別是北美地區(qū)的商業(yè)地圖和地圖集。作為一名繪圖師,他對(duì)其曾勘查和繪圖地區(qū)的服飾習(xí)俗也感興趣,這些服飾均出色地展示在這部4卷本的服飾大全中。
在18世紀(jì),著迷于遙遠(yuǎn)的世界并為了愉悅而去旅行還是件新事物,類似這樣的服飾大全很受歡迎,因?yàn)樗鼈兡軌驅(qū)⑵渌麌?guó)家的風(fēng)土人情介紹給遠(yuǎn)行的實(shí)際旅行者和足不出戶的空想旅行家。Jefferys卷中各種各樣的繪圖生動(dòng)地展示了幾百年前世界各國(guó)的獨(dú)特性。現(xiàn)在,著裝標(biāo)準(zhǔn)發(fā)生了變化,在那個(gè)時(shí)代不同國(guó)家和地區(qū)之間存在的豐富多彩的差異性已經(jīng)變得模糊不清,常常難以將一個(gè)地區(qū)與另一個(gè)地區(qū)的居民通過(guò)服飾區(qū)分開(kāi)來(lái)。或許,從樂(lè)觀角度來(lái)看這個(gè)問(wèn)題,我們已經(jīng)將文化和視覺(jué)的多樣性轉(zhuǎn)換為形形色色的個(gè)體生活—或者是一種更多形式的、有趣的知識(shí)技術(shù)型生活。
在這個(gè)很難將兩本不同計(jì)算機(jī)書籍區(qū)分開(kāi)來(lái)的時(shí)代,Manning出版社根據(jù)Jefferys在3個(gè)世紀(jì)前的圖畫所重現(xiàn)的國(guó)家習(xí)俗的豐富多樣性,設(shè)計(jì)了計(jì)算機(jī)系列叢書的封面,以贊美計(jì)算機(jī)行業(yè)的創(chuàng)造性和主動(dòng)性。
致謝感謝所有閱讀過(guò)本書草稿并提出意見(jiàn)的評(píng)論者及同行等,尤其是Aaron Colcord、Aaron Schumacher、Ambikesh Jayal、Bryce Darling、Dwight Barry、Fred Rahmanian、 Hans Donner、Jeelani Basha、Justin Fister、Kostas Passadis博士、Leo Polovets、Marius Butuc、 Nathanael Adams、Nezih Yigitbasi、Pablo Vaselli、Peter Rabinovitch、Ravishankar Rajagopalan、Rodrigo Abreu、Romit Singhai、Sampath Chaparala和Zekai Otles。他們的意見(jiàn)、質(zhì)詢和修改大大地改善了這本書的質(zhì)量。特別感謝George Gaines,他在這本書出版之前對(duì)原稿進(jìn)行了全面的技術(shù)審核。
特別感謝開(kāi)發(fā)編輯Cynthia Kane,感謝她在照料我們寫作過(guò)程中給予的有益建議和表現(xiàn)出的無(wú)比耐心。同樣的感謝送給Benjamin Berg、Katie Tennant、Kevin Sullivan以及Manning出版公司的其他編輯們,他們竭盡全力,消去了書中的粗糙痕跡,剔除了書中的技術(shù)瑕疵。
此外,還要感謝我們的同行David Steier、UC Berkeley 信息科學(xué)學(xué)院的Anno Saxenian教授、Doug Tygar以及所有其他有意使用本書作為教材的教師。
還要感謝Jim Porzak,他邀請(qǐng)作者之一John Mount到Bay Area R Users Group做演講。他作為本書的熱情支持者,還為本書撰寫了序言。在我們疲勞、沮喪甚至懷疑我們?yōu)槭裁匆袚?dān)這一艱苦任務(wù)的日子里,他的關(guān)注不斷地提醒我們:人們需要我們正在做的這件事,也需要我們做這件事的方法。沒(méi)有他的鼓勵(lì),這本書將難以完成。
譯者序
序言
前言
第一部分 數(shù)據(jù)科學(xué)引論
第1章 數(shù)據(jù)科學(xué)處理過(guò)程2
1.1 數(shù)據(jù)科學(xué)項(xiàng)目中的角色2
1.2 數(shù)據(jù)科學(xué)項(xiàng)目的階段4
1.2.1 制定目標(biāo)5
1.2.2 收集和管理數(shù)據(jù)5
1.2.3 建立模型7
1.2.4 模型評(píng)價(jià)和批判8
1.2.5 展現(xiàn)和編制文檔9
1.2.6 模型部署和維護(hù)10
1.3 設(shè)定預(yù)期11
1.4 小結(jié)12
第2章 向R加載數(shù)據(jù)14
2.1 運(yùn)用文件中的數(shù)據(jù)14
2.1.1 在源自文件或URL的良結(jié)構(gòu)數(shù)據(jù)上使用R15
2.1.2 在欠結(jié)構(gòu)數(shù)據(jù)上使用R17
2.2 在關(guān)系數(shù)據(jù)庫(kù)上使用R19
2.2.1 一個(gè)生產(chǎn)規(guī)模的示例20
2.2.2 從數(shù)據(jù)庫(kù)向R系統(tǒng)加載數(shù)據(jù)23
2.2.3 處理PUMS數(shù)據(jù)25
2.3 小結(jié)28
第3章 探索數(shù)據(jù)29
3.1 使用概要統(tǒng)計(jì)方法發(fā)現(xiàn)問(wèn)題30
3.2 用圖形和可視化方法發(fā)現(xiàn)問(wèn)題34
3.2.1 可視化檢測(cè)單變量的分布35
3.2.2 可視化檢測(cè)兩個(gè)變量間的關(guān)系42
3.3 小結(jié)51
第4章 管理數(shù)據(jù)52
4.1 清洗數(shù)據(jù)52
4.1.1 處理缺失值52
4.1.2 數(shù)據(jù)轉(zhuǎn)換56
4.2 為建模和驗(yàn)證采樣61
4.2.1 測(cè)試集和訓(xùn)練集的劃分61
4.2.2 創(chuàng)建一個(gè)樣本組列62
4.2.3 記錄分組63
4.2.4 數(shù)據(jù)溯源63
4.3 小結(jié)63
第二部分 建模方法
第5章 選擇和評(píng)價(jià)模型66
5.1 將業(yè)務(wù)問(wèn)題映射到機(jī)器學(xué)習(xí)任務(wù)67
5.1.1 解決分類問(wèn)題67
5.1.2 解決打分問(wèn)題68
5.1.3 目標(biāo)未知情況下的處理69
5.1.4 問(wèn)題到方法的映射71
5.2 模型評(píng)價(jià)71
5.2.1 分類模型的評(píng)價(jià)72
5.2.2 打分模型的評(píng)價(jià)76
5.2.3 概率模型的評(píng)價(jià)78
5.2.4 排名模型的評(píng)價(jià)82
5.2.5 聚類模型的評(píng)價(jià)82
5.3 模型驗(yàn)證84
5.3.1 常見(jiàn)的模型問(wèn)題的識(shí)別 84
5.3.2 模型可靠性的量化85
5.3.3 模型質(zhì)量的保證86
5.4 小結(jié)88
第6章 記憶化方法89
6.1 KDD和KDD Cup 200989
6.2 構(gòu)建單變量模型91
6.2.1 使用類別型特征92
6.2.2 使用數(shù)值型特征94
6.2.3 使用交叉驗(yàn)證估計(jì)過(guò)擬合的影響96
6.3 構(gòu)建多變量模型97
6.3.1 變量選擇97
6.3.2 使用決策樹99
6.3.3 使用最近鄰方法102
6.3.4 使用樸素貝葉斯105
6.4 小結(jié)108
第7章 線性回歸與邏輯斯諦回歸110
7.1 使用線性回歸110
7.1.1 理解線性回歸110
7.1.2 構(gòu)建線性回歸模型113
7.1.3 預(yù)測(cè)114
7.1.4 發(fā)現(xiàn)關(guān)系并抽取建議117
7.1.5 解讀模型概要并刻畫系數(shù)質(zhì)量118
7.1.6 線性回歸要點(diǎn)122
7.2 使用邏輯斯諦回歸123
7.2.1 理解邏輯斯諦回歸123
7.2.2 構(gòu)建邏輯斯諦回歸模型124
7.2.3 預(yù)測(cè)125
7.2.4 從邏輯斯諦回歸模型中發(fā)現(xiàn)關(guān)系并抽取建議129
7.2.5 解讀模型概要并刻畫系數(shù)130
7.2.6 邏輯斯諦回歸要點(diǎn)136
7.3 小結(jié)137
第8章 無(wú)監(jiān)督方法138
8.1 聚類分析138
8.1.1 距離139
8.1.2 準(zhǔn)備數(shù)據(jù) 140
8.1.3 使用hclust()進(jìn)行層次聚類142
8.1.4 k-均值算法150
8.1.5 分派新的點(diǎn)到簇154
8.1.6 聚類要點(diǎn)156
8.2 關(guān)聯(lián)規(guī)則156
8.2.1 關(guān)聯(lián)規(guī)則概述156
8.2.2 問(wèn)題舉例157
8.2.3 使用arules程序包挖掘關(guān)聯(lián)規(guī)則158
8.2.4 關(guān)聯(lián)規(guī)則要點(diǎn)165
8.3 小結(jié)165
第9章 高級(jí)方法探索166
9.1 使用bagging和隨機(jī)森林方法減少訓(xùn)練方差167
9.1.1 使用bagging方法改進(jìn)預(yù)測(cè)167
9.1.2 使用隨機(jī)森林方法進(jìn)一步改進(jìn)預(yù)測(cè)170
9.1.3 bagging和隨機(jī)森林方法要點(diǎn)173
9.2 使用廣義加性模型學(xué)習(xí)非單調(diào)關(guān)系173
9.2.1 理解GAM174
9.2.2 一維回歸示例174
9.2.3 提取非線性關(guān)系178
9.2.4 在真實(shí)數(shù)據(jù)上使用GAM179
9.2.5 使用GAM實(shí)現(xiàn)邏輯斯諦回歸182
9.2.6 GAM要點(diǎn)183
9.3 使用核方法提高數(shù)據(jù)可分性183
9.3.1 理解核函數(shù)184
9.3.2 在問(wèn)題中使用顯式核函數(shù)187
9.3.3 核方法要點(diǎn)190
9.4 使用SVM對(duì)復(fù)雜的決策邊界建模190
9.4.1 理解支持向量機(jī)190
9.4.2 在人工示例數(shù)據(jù)中使用SVM192
9.4.3 在真實(shí)數(shù)據(jù)中使用SVM195
9.4.4 支持向量機(jī)要點(diǎn)197
9.5 小結(jié)197
第三部分 結(jié)果交付
第10章 文檔編制和部署200
10.1 buzz數(shù)據(jù)集200
10.2 使用knitr產(chǎn)生里程碑文檔202
10.2.1 knitr是什么202
10.2.2 knitr 技術(shù)詳解204
10.2.3 使用knitr編寫buzz數(shù)據(jù)文檔205
10.3 在運(yùn)行時(shí)文檔編制中使用注釋和版本控制208
10.3.1 編寫有效注釋208
10.3.2 使用版本控制記錄歷史209
10.3.3 使用版本控制探索項(xiàng)目213
10.3.4 使用版本控制分享工作217
10.4 模型部署220
10.4.1 將模型部署為R HTTP服務(wù)220
10.4.2 按照輸出部署模型222
10.4.3 要點(diǎn)223
10.5 小結(jié)224
第11章 有效的結(jié)果展現(xiàn)226
11.1 將結(jié)果展現(xiàn)給項(xiàng)目出資方227
11.1.1 概述項(xiàng)目目標(biāo)228
11.1.2 陳述項(xiàng)目結(jié)果229
11.1.3 補(bǔ)充細(xì)節(jié)230
11.1.4 提出建議并討論未來(lái)工作231
11.1.5 向項(xiàng)目出資方展現(xiàn)的要點(diǎn)232
11.2 向最終用戶展現(xiàn)模型232
11.2.1 概述項(xiàng)目目標(biāo)232
11.2.2 展現(xiàn)模型如何融入用戶的工作流程233
11.2.3 展現(xiàn)如何使用模型235
11.2.4 向最終用戶展現(xiàn)的要點(diǎn)236
11.3 向其他數(shù)據(jù)科學(xué)家展現(xiàn)你的工作236
11.3.1 介紹問(wèn)題236
11.3.2 討論相關(guān)工作237
11.3.3 討論你的方法238
11.3.4 討論結(jié)果和未來(lái)工作239
11.3.5 向其他數(shù)據(jù)科學(xué)家展現(xiàn)的要點(diǎn)240
11.4 小結(jié)240
附錄A 使用R和其他工具241
附錄B 重要的統(tǒng)計(jì)學(xué)概念263
附錄C 更多的工具和值得探索的思路292
參考文獻(xiàn)297
索引299