?大數據、物聯網、人工智能已經變成近幾年最熱門的科技流行語。盡管大家用很多名詞去定義這些技術,但是共通的思想是它們都是數據驅動的。人們并不滿足于簡單地擁有數據,因為發現其中的價值才是最本質的。因此數據科學家已經開始關注如何從原始數據中洞悉深層價值。
數據科學已經變成學術界和產業界最流行的話題。但是數據科學是一門非常寬泛的學科,學會掌握數據科學注定很有挑戰性。初學者必須學習如何準備、處理、聚合和可視化數據。而更多高級技能包括機器學習,挖掘各種數據格式(文本、圖像和視頻),以及最重要的—使用數據產生商業價值。數據科學家的角色需要大量的努力,同時,一名成功的數據科學家也需要一個有力的工具來解決日常問題。
在這個領域中,數據科學家使用最廣泛的工具是開源而且免費的R語言。作為一種機器語言,R提供了許多數據處理函數、學習庫和可視化函數,允許用戶快速上手分析數據。R可以幫助用戶快速執行分析,并在不需要懂得復雜數學模型細節的前提下執行機器學習算法。
本書給出了實際方案,教你如何使用R語言將數據科學落地。全書共12章,每一章都分成幾個簡單的教程。通過每一個教程循序漸進的介紹,你可以使用R的程序包,掌握書中所教授的技術。
本書首先介紹如何創建R函數來避免不必要的代碼重復。你會學到如何使用R程序包,在各種數據源上準備數據、處理數據和執行高級ETL操作。數據操作的一個例子是介紹如何使用dplyr和data.table程序包有效地處理大型數據結構。還有一章關注ggplot2,介紹如何創建高級圖形,進行數據展示。你也會學到如何使用ggvis程序包構建交互式報告。
本書也會介紹如何使用數據挖掘技術發現經常一起購買的產品。后面的章節還給出了財務數據的時間序列分析結果。還有一些章節會深入介紹機器學習技術,包括數據分類、回歸、聚類和降維。我可以保證,本書會讓你覺得,數據科學學習原來如此簡單。
主要內容第1章介紹如何創建R函數。該章會介紹R函數的基本構成、環境和參數匹配。我們還會介紹高級技術,例如閉包、函數式編程和如何處理錯誤。
第2章介紹如何使用R讀取結構化和非結構化的數據。該章首先介紹從文本文件中讀取數據。然后,介紹如何把R和數據庫連接起來。最后,你會學到如何編寫網絡爬蟲,爬取網頁和社交網絡上的非結構化數據。
第3章介紹分析前的數據準備工作。在該章中,我們會介紹數據預處理過程,使用基本的R函數,進行例如類型轉換、添加、過濾、舍棄、重塑和缺失值估計。
第4章介紹如何使用高級程序包data.table和dplyr有效而且高效地操作數據。data.table提供了快速加載和聚合大型數據的可能。dplyr程序包提供了以類似SQL的語法操作數據的能力。
第5章介紹使用ggplot2可視化數據。首先介紹ggplot2的基本構成。然后,介紹高級技術,使用ggplot2函數創建復雜的圖形。最后,介紹如何使用ggmap構建地圖。
第6章展示如何使用R創建一份專業的報告。首先,討論如何使用Rmarkdown語法,嵌入R代碼塊。然后,介紹如何使用ggvis添加交互式圖表。最后,介紹如何創建和發布RShiny報告。
第7章關注如何從不同的概率分布上抽樣數據。作為一個具體的例子,我們會介紹如何使用概率函數模擬隨機交易過程。
第8章首先討論點估計和置信區間。然后,介紹參數和非參數檢驗方法。最后,介紹如何使用ANOVA分析工程師的收入是否會隨著頭銜和地區的變化而不同。
第9章介紹用于發現交易數據中關聯項和暗藏的頻率模式的常用方法。在該章中,我們會使用一個實際例子,以便你可以學到如何在實際的數據集中執行規則和模式挖掘。
第10章首先介紹如何從財務數據集中創建和操作時間序列。然后介紹如何使用HoltWinters和ARIMA預測時間序列。該章會通過一個實際例子介紹如何使用ARIMA預測股票價格。
第11章介紹如何構建基于標注訓練數據的預測模型。你會學到如何使用回歸模型理解數值關系,并使用擬合模型進行連續值預測。對于分類任務,你會學到如何擬合數據,生成一個樹形分類器。
第12章介紹未標注數據的隱含結構。首先,介紹如何使用聚類方法對位置臨近的旅館進行分組。然后,介紹如何使用PCA方法選取和抽取經濟自由度數據集中的特征。
機器環境要學習本書中的例子,你需要一臺可以訪問互聯網的計算機,而且可以安裝R環境。你可以通過http://www.cran.rproject.org/下載R安裝文件。具體安裝信息可以在第1章中找到。
本書中的例子是在MicrosoftWindows和R3.2.4的基礎上編寫和測試的。這些例子也可以在MacOSX或者類似于UNIX的操作系統下,使用最新的R版本編譯通過。
讀者人群本書是面向已經熟悉R語言的基礎操作,但是希望學習如何使用R程序包有效而且高效地分析現實世界數據問題的讀者。
行文結構在本書中,你會發現一些標題經常出現(如準備工作、實現步驟、運行原理、更多技能和擴展閱讀)。
為了清楚地介紹如何完成每一個教程的學習,我們使用以下行文結構:
準備工作這個部分會告訴你當前教程需要的東西,并介紹如何安裝軟件和本教程所需的基礎環境。
實現步驟這個部分包括本教程所需的步驟。
運行原理這個部分通常包含對前一個部分的具體解釋。
更多技能這個部分包含本教程的額外信息,以便擴展讀者關于當前教程的知識面。
擴展閱讀這個部分提供了指向其他有用信息的鏈接。
本書約定在本書中,你會發現文本有多種風格,以提供不同的信息。這里給出一些風格的例子,并給出其中的含義。
程序包和函數名風格如下:“你可以安裝加載程序包RCurl”。
代碼塊設置如下:
>install.packages("RCurl")>library(RCurl)屏幕中的詞語,例如菜單或者對話框,文本做如下展示:”在R中,缺失值使用NA(不適用)標記,不可能的值用NaN(不是一個值)標記”。
樣例源碼下載你可以從http://www.packtpub.com通過個人賬號下載你所購買書籍的樣例源碼。如果你是從其他途徑購買的,可以訪問http://www.packtpub.com/support,完成賬號注冊,就可以直接通過郵件方式獲得相關文件。
你也可以訪問華章圖書官網http://www.hzbook.com,通過注冊并登錄個人賬號,下載本書的源代碼。
下載書中彩圖我們還為讀者準備了一個PDF文件,該文件包含了本書所有截圖和樣圖,可以更好地幫助讀者理解輸出的變化。你可以從以下地址下載:http://www.packtpub.com/sites/default/files/downloads/RforDataScienceCookbook_ColorImages.pdf。
推薦序對于互聯網來說,當今是一個數據為王的時代。特別是對于中國互聯網從業者來說,這個時代來得很快、很迅猛。Web2.0的到來讓用戶數據呈現出爆炸式的增長態勢。如今,在搜索引擎、推薦系統、廣告投放、語音識別、圖像識別、自然語言理解、對話系統、交通物流、互聯網金融等領域都可以看到數據科學發揮功效的身影。而AlphaGo的勝利又掀起了人類對機器智能的大討論。數據科學讓人類在這個時代重新看到了0和1所蘊藏的巨大價值,找到了新的技術和戰略高地。
然而機遇總是與挑戰共存。海量數據通常意味著人們要花費巨大的精力才能把數據轉變為價值,無論是數據記錄、數據處理、數據算法,還是數據可視化,每一個環節都會影響最后的產出,而每一個環節都不能輕而易舉地完成。市面上關于數據科學的書籍林林總總,最多的要數Python派和R派。Python派起源于工程人員,不管是理論還是實踐,讀者可選的種類還是很多的。而R語言是由統計學者開發的,其出身和基因也決定了它在工程應用上的暫時落后,相關書籍也較少。對于我國數據科學從業者來說,R也是一門相對陌生的語言。聽說魏博在翻譯這本有關R語言開發應用的書籍,我非常欣慰。人們在R語言的實戰書籍中又多了一種選擇。同時,我也希望本書可以帶動大家使用R進行實際開發的熱情。學科和行業的發展需要百家爭鳴。數據科學的利器越多,挑戰和壁壘就會越容易攻克,人們獲得數據價值的機會也就越大。
本書介紹了R語言在數據科學領域應用的方方面面,包括數據處理、數據操作、數據可視化、概率模擬、序列預測、頻繁項集挖掘、監督式算法和非監督式算法等。本書注重R語言程序包的介紹和使用,這可以讓讀者省去很多無謂的精力,避免“重復造輪子”。特別是對于“唯快不破”的互聯網行業來說,能夠盡快使用成熟的開發包,是一件很幸福的事情。對于一名希望提升自己數據科學戰斗力的讀者來說,這本書也是不二選擇。
魏博畢業于中國科學院數學所,讀博期間就開始主攻用戶需求建模和自動推理,后來負責阿里巴巴優酷大文娛視頻搜索引擎的算法優化工作,目前在歐普拉軟件新聞推薦部門負責用戶畫像算法。他在理解用戶行為和用戶數據挖掘方面有較深的造詣。同時他也是一名資深的R語言用戶和R語言傳播者。這本書的翻譯也是對他自身能力的考驗和體現。英文原版書有400多頁,他能夠在工作之余,犧牲節假日,4個月來靜下心完成翻譯實屬不易。同時,R語言在國內的發展還有很長的路要走,特別是一些面向開發的技術術語的中文譯法還沒有達成廣泛共識,在翻譯過程中經常需要揣度和推敲。希望本書能夠成為廣大R語言數據科學愛好者共同閱讀、共同推廣的資源。
再次感謝魏博能夠把機械工業出版社的優質外文資源翻譯成書。也希望這本書能夠成為大家手邊時常翻閱的經典數據科學資料。
胡睿前微軟資深研發總監現歐普拉軟件技術(北京)有限公司副總裁譯者序“數據科學”也許是近幾年最熱門的科技名詞。從各種各樣的互聯網應用到AlphaGo的勝利,世界正在見證著數據科學帶來的深刻影響。特別是我國在“互聯網+”大潮推動下,海量數據每時每刻都在產生。無論是學術界,還是工業界,大量的科研人員都在這塊數據金礦上揮灑青春和汗水。從數據中發現規律并應用到產品開發或者戰略決策中,逐漸成為各行各業及各個企業公司的標準日常活動。同時,數據科學對于統計學、數據挖掘/機器學習算法,以及數據可視化等的需求也變得日漸迫切。一名掌握數據存儲知識、數據科學算法、數據項目管理和數據可視化技術的人員,通常是多家用人單位的必爭之才。
古語說:工欲善其事,必先利其器。處理海量、紛繁、動態的數據不是一件容易的事情。2013年,我在一篇科研論文上第一次結識了R語言。從那以后,我便開始了R語言道路上的各種探索。從最開始的編寫算法腳本,到后來執著于Rmarkdown的使用,再到后來開發Shiny小程序,以及在服務器上執行計算。對我來說,從來沒有一種語言讓我覺得在數據科學的道路上如此順暢和友好。然而,遍尋各種書籍和網上教程,很少有一份可靠的實踐開發資料可以讓讀者體會到實際項目的“火藥味”。很多書籍都在著重介紹R語言的基礎知識,對于實際開發和各種強大的程序包都鮮有系統的介紹。這與R語言在我國的普及和發展程度不無關系。我想是時候推出一本書,讓大家見識R語言和程序包的超強能力了。
本書便是一本注重R語言程序包實際應用的書籍。本書結構嚴謹,闡述通俗易懂,內容涵蓋了R語言的絕大多數應用場景。同時,對于眾人皆知的基礎知識,本書不再贅述;對于一些高級技術,本書還提供了一些擴展閱讀的資料,供學有余力的讀者鉆研探討。值得提出的是,本書的作者丘祐瑋是中國臺灣地區活躍的數據科學家。他不僅擁有自己的數據科學公司,同時還服務于各大數據科學論壇,與中國大陸的數據科學工作者也有合作,是一位理論與實踐并重的數據科學家。相信每一位讀者都可以通過這本書學習到他的寶貴經驗。
2016年9月,我受機械工業出版社的委托,承擔本書的翻譯工作。整個翻譯過程歷時4個月。這個過程也是自我溫習、自我提高的過程。特別是