Preface 前 言
自20多年前發源于學術界以來,R語言已經成為統計分析的通用語言,活躍于眾多產業領域。目前,越來越多的商業項目開始使用R,兼之R用戶開發了數以千計易于上手的開發包,都使得R成為數據分析工程師及科學家最常用的工具。
本書將幫助讀者熟悉R語言這一開源生態系統,并介紹一些基本的統計背景知識,以及一小部分相關的數學知識。我們將著重探討使用R語言解決實際的問題。
由于數據科學家在數據的采集、清洗及重構上將耗費大量時間,因此本書首先將通過第一手實例來重點探討從文件、數據庫以及在線資源中導入數據的方法,然后再介紹數據的重構和清洗——不包含實際的數據分析,最后幾章將對一些特殊的數據類型以及經典的統計模型和部分機器學習算法進行說明。
本書主要內容第1章從與所有數據相關項目都有關的關鍵性的第一步——從文本文件和數據庫中導入數據開始。重點探討使用優化的CSV分析器把數據載入R,預篩選數據,并對不同數據庫后臺對R的支持能力進行比較。
第2章介紹如何使用面向Web服務和API通信的包實現數據的導入,包括如何從主頁上整理和抽取數據。還將對處理XML和JSON格式數據進行概括性說明。
第3章繼續介紹基礎的數據處理知識,包括多種數據篩選和聚集,并對data.table和dplyr這兩個常見開發包在性能和使用語法方面進行比較。
第4章介紹更多有關復雜數據類型的轉換方法,相關函數包括處理數據子集、數據合并、長寬表數據格式到適合用戶需要的工作流源數據格式之間的轉換等。
第5章開始介紹真實的統計模型,包括回歸的概念、常用回歸模型等。這一章篇幅不長,還介紹了模型測試的方法以及基于真實數據集如何解釋某個多元線性回歸模型結果。
第6章在前述章節的基礎上,探討了預測變量的非線性關聯,以及諸如邏輯回歸和泊松回歸等廣義線性模型的樣例。
第7章介紹一些新的非結構化數據類型,讀者將通過實踐文本挖掘算法及對結果的可視化處理,了解使用統計模型來處理類似這樣一些非結構化數據的方法。
第8章探討有關原始數據集的另一個常見問題。大多數時候,數據科學家需要處理臟數據,包括去掉錯誤數據、孤立點以及其他不正確的值,同時又要將缺失值帶來的影響降到最低。
第9章介紹如何從大數據中進行特征提取,假設我們已經裝載了一個干凈的數據集,并且完成了格式轉換,當我們開始處理高維變量時,需要采用一些統計方法來進行降維以及其他包括主成分分析、因子分析和多維尺度分析等方法完成連續變量的轉換。
第10章討論使用監督及非監督統計和機器學習方法來處理樣本分組問題。這些方法包括層次聚類、k均值聚類、潛類別模型、判別分析、邏輯回歸和k近鄰算法,以及分類樹和回歸樹。
第11章重點探討一類特殊的數據結構,包括其基本概念以及可視化網絡分析技術,igraph包是該章的重點。
第12章展示如何通過平滑、季節性分解以及ARIMA等方法處理分析時間-日期數據及其相關值,同時還將討論有關預測和孤立點檢測等技術。
第13章探討一類重要的數據維度——空間維,重點會放在通過主題圖、交互圖、等高線和馮洛諾伊圖完成空間數據的可視化。
第14章提供了一個更完整的樣例,該樣例中包含了很多前述章節中提到的方法來幫助讀者復習這本書所學習到的主要內容,以及應對未來工作中可能遇到的問題和困難。
附錄給出了R語言的幫助索引,以及對前述章節中涉及內容的補充閱讀。
閱讀準備本書所展示的代碼都應該在R控制臺內運行,讀者需要事先安裝好R,可以從http://r-project.org下載免費軟件以及為所有主流操作系統準備的安裝指南。
本書并不會探討其他更深入的內容,例如在集成開發環境(Integrated Development Environment IDE)下使用R的方法,盡管IDE為諸如Emacs、Eclipse、vi、NotePad++都提供了非常棒的插件和擴展。當然,我們還是建議讀者能夠使用RStudio,這是一個為R開發的開源免費IDE,訪問地址為https://www.rstudio.com/products/RStudio。
除了基礎的R包,我們還會使用到部分用戶自己提供的R包,它們大多都可以很容易地從R綜合典藏網(Comprehensive R Archive Network,CRAN)處下載安裝。附錄中列出了本書用到的開發包以及多個版本。
如果要從CRAN安裝包,讀者要確保網絡通暢。假如要下載二進制文件,可以在R控制臺調用install.packages命令:
本書中所提到的部分包在CRAN上下載不了,但也許可以從Bitbucket或者GitHub處找到安裝文件,然后再通過調用devtools包的install_bitbucket和install_github函數完成安裝。Windows用戶則需首先從https://cran.r-project.org/bin/windows/Rtools處安裝rtools包。
安裝完畢后,我們應該在使用包之前先將其裝載到R會話中,附錄中列出了所有包的目錄,而每一章的一開始則對相關的源碼和R命令做了介紹:
我們極力建議讀者下載安裝本書的樣例源碼(可以參考前言的“樣例源碼下載”小節),這樣讀者就可以在R控制臺很容易地復制和粘貼相關命令,而不需要再按照書中文字輸入代碼。
如果讀者之前沒用過R語言,最好能夠先從R主頁上閱讀一些免費的介紹性文章和幫助手冊,本書附錄中也列出了一些推薦閱讀材料。
讀者人群如果你是數據科學家或者是R開發人員,希望更多地了解有關R的高級功能及工具,那么這本書就是為你而寫。本書希望讀者已經具備基礎的R語言知識,了解數據庫的邏輯。如果你是數據科學家、工程師或分析師,希望提高自己對R語言的開發能力,那么這本書也適合你。盡管需要掌握一些基本的R知識,本書還是為你提供了相關參考文檔,能夠幫助你快速進入角色并掌握相關技術。
本書約定本書中任何將在R控制臺輸入或輸出的命令行將采用如下格式:
符號“>”有提示的意思,指此處R控制臺正在等待要輸入執行的命令。如果命令長度超過一行,則第一行還是用“>”開頭,但剩下的其余行都要在行首添加符號“+”,代表該行不是一個完整的命令(例如,缺圓括號或引號)。命令的輸出不需要增加任何首字母,字體采用和輸入文本相同的等寬字體。
新出現的術語和重要的文字將用粗體表示。
警告或重要提示將跟在這樣的符號后面。
小竅門或訣竅將跟在這樣的符號后面。
樣例源碼下載你可以從http://www.packtpub.com通過個人賬號下載你所購買書籍的樣例源碼。如果你是從其他途徑購買的,可以訪問http://www.packtpub.com/support,完成賬號注冊,就可以直接通過郵件方式獲得相關文件。
你也可以訪問華章圖書官網:http://www.hzbook.com,通過注冊并登錄個人賬號,下載本書的源代碼。
下載書中彩圖我們還為讀者準備了一個PDF文件,該文件包含了本書所有截圖和樣圖,可以更好地幫助讀者理解輸出的變化。你可以從以下地址下載:
http://www.packtpub.com/sites/default/files/downloads/1234OT_ColorImages.pdf
The Translator’s Words?譯 者 序R語言在數據分析與機器學習領域已經成為一款重要的工具,根據Tiobe、PyPL以及Redmonk等編程語言的人氣排名結果顯示,它所受到的關注程度正在快速提升,并成為統計領域最具人氣的語言選項。了解并掌握R語言的編程開發,也就意味著我們能夠更高效地分析和處理數據。
位于英國伯明翰的Packt公司是世界上發展最快、產品最豐富的技術書籍出版商之一,本書是Packt公司近年推出的又一本技術力作,全書一共分為14章,重點探討了數據預處理的方法,包括數據獲取、篩選、重構、建模、平滑以及降維,本書還介紹了分類和聚類等幾種主要的數據分析方法,以及網絡數據、時序數據、空間數據及社交媒體數據等一些特殊類型數據的分析處理。本書以數據科學家、R開發人員和具備基礎R語言知識的工程師為目標讀者,通過閱讀本書,讀者能夠更多地了解有關R的高級功能及工具,同時提高R語言的開發能力。為了照顧初學者,盡管作者沒有過多地介紹R語言的基本知識,但依然很貼心地提供了相關的參考資料,以幫助讀者快速進入角色并掌握相關技術。
本書作者蓋爾蓋伊?道羅齊(Gergely Daróczi)是一位狂熱的R用戶及開發人員,也是rapporter.net網站的創始人及CTO,現就職于洛杉磯的www.card.com網站,擔任首席R語言開發及研究的數據專家。受作者自身的研究背景影響,本書花了相當多的篇幅分析在數據預處理環節開發人員可能遇到的各類問題,并給出了多種經過實踐證明的解決方案。書中所有源代碼和實驗數據在華章網站(www.hzbook.com)上都可以免費下載,相信閱讀完本書并親自動手實踐完成所有案例方法后,讀者將對在數據科學領域應用R語言有更深入的了解,也將對數據處理及分析有更多的領悟及體會。
本書能夠得以出版,要感謝機械工業出版社的繆杰和何欣陽編輯,他們在翻譯過程中給予了我很多建設性的指導意見。其次,還要感謝吳怡編輯,是她讓我與機械工業出版社結緣。
由于教學科研需要,譯者很早就已經接觸了R語言,之前翻譯《機器學習與R語言實戰》一書,也讓我獲益匪淺,但由于學科發展速度日新月異,在翻譯過程中我仍然遇到了一些問題,盡管在此期間我查閱了大量的文獻及網絡資源,并逐字逐句地對譯稿進行了反復推敲和琢磨,但還是不可避免地存在錯誤和疏漏之處,還望各位讀者不吝指正。
潘怡2016年8月