《數據科學實戰》脫胎于哥倫比亞大學“數據科學導論”課程的教學講義,它界定了數據科學的研究范疇,是一本注重人文精神,多角度、全方位、深入介紹數據科學的實用指南,堪稱大數據時代的實戰寶典。本書旨在讓讀者能夠舉一反三地解決重要問題,內容包括:數據科學及工作流程、統計模型與機器學習算法、信息提取與統計變量創建、數據可視化與社交網絡、預測模型與因果分析、數據預處理與工程方法。另外,本書還將帶領讀者展望數據科學未來的發展。
大數據時代,人們越來越意識到數據在工作和生活中的重要性,數據科學家應運而生。面對媒體天花亂墜的炒作,怎么才能撥云見日,真正掌握這門跨學科利用數據的學問呢?這本脫胎于常春藤名校哥倫比亞大學“數據科學導論”課程的實戰手冊能夠給你一個滿意的回答。
本書作者Rachel Schutt曾在谷歌研究院工作多年,現為美國新聞集團數據科學高級副總裁。她在哥倫比亞大學任教期間,廣泛邀請了谷歌、微軟、eBay及一些創業公司的數據科學家為學生授課,打破了所謂大學里教不出數據科學家的神話。這些講座涵蓋了上述公司及業界使用的新算法、方法和模型。本書就是在這些一手資料基礎上匯編而成的,它不僅可供不具備相關領域知識的初學者真正了解數據科學,而且也是熟悉線性代數、概率論、統計學、機器學習等主題的人士開闊視野、提升實戰技能的優秀指南。
RachelSchutt
2012年秋天,我在哥倫比亞大學開設了一門新課:數據科學導論。作為一個新興領域,數據科學在學術界尚未劃分為一個獨立學科。那么數據科學到底是什么呢?我將這門課的講義集結成書,試圖回答這一問題。
為了幫助讀者理解本書及其緣起,我覺得有必要簡單介紹一下我自己,和我設計并講授這門課的初衷。
初衷
簡單地說,我期望在我上大學時就有這樣的課。但那是20世紀90年代,數據爆炸尚未開始,開設這樣一門課也就無從談起。我本科時主修數學專業,主要是做理論和實證研究。雖然很慶幸這些訓練賦予了我嚴謹解決問題的能力,但同時我也略感遺憾,若當時能再學點實際應用的技巧就更好了。
在從大學畢業到獲得統計學博士學位期間,我走了一些彎路,我一直在試圖尋找適合自己的研究領域,喜歡探究隱藏在宇宙中的模式,喜歡解答有趣的謎題,希望可以將自己的這些愛好物盡其用。之所以談起這些,是因為現在很多學生覺得必須先知道自己這輩子到底想要干什么,我做學生時,不可能規劃將來要從事數據科學相關的工作,因為那時根本還沒有數據科學這樣一個領域。因此我建議這些學生,或者其他愿意聽我在這兒嘮叨的人:大可不必這樣。不必現在就規劃好未來,走點彎路也沒什么,誰知道這一路上你會發現什么呢?我拿到統計學博士學位后,在谷歌工作了幾年,在這幾年中,數據科學、數據科學家這些術語才在硅谷流行起來。
這個世界有許多問題尚未解決,對于那些擁有量化思維又樂于開動大腦的人來說,在解決問題的過程中充滿了機遇。我的目標是幫助學生們成為具有批判性思維的人、能用創新思維去解決問題(甚至是人們尚未發現的問題)的人,對世界充滿好奇喜歡問問題的人。若要我去構建一個數學模型,去為治愈癌癥貢獻一份力量,或者揭示出自閉癥的奧秘,或者用來預防恐怖襲擊,我或許永遠做不到。但我的學生有一天會做到,我教給了他們這些知識,就算完成了自己的使命。寫作此書,使我有機會將畢生所學傳播給更多的人,我希望他們能從中得到激勵,或者學到一些有用的工具,來讓這個世界變得更好,而不是更壞。
建模和數據分析的過程并非徹底地中立,會受到研究者個人價值觀的影響。研究的問題是由你來挑選的,研究假設也是你根據模型得出的,度量方法和算法也是由你來設計的。
世界上也并不是所有的問題都需要用數據科學或技術手段來解決,一個好的數據科學家是指他能甄別出哪些問題適合用數據科學解決,構建出對應的數據模型或者編寫代碼去解決它。但是我相信,在多學科的團隊中,如果有一個理解數據、具有量化思維、精通編程的問題解決者(讓我們將這種人稱為“數據科學家”),這個團隊可能會走得更遠。
課程的起源
我在2012年3月份提議開設此課,主要原因有三。其中第一個原因最重要,我將會花最大篇幅去闡述。
原因一:我想告訴我的學生業界的數據科學家是怎么工作的,并且讓他們掌握一些數據科學家所使用的技術。
在為Google+工作時,我所在的數據科學團隊由一群身懷絕技的博士組成,其中有學社會學的、學工程的、學物理的和學計算機的,而我是統計學專業的。我們隸屬于一個更大的團隊,這個團隊有很多天才的數據工程師,他們實現數據管道、基礎架構、分析面板和一些實驗性質的架構(用來做A/B測試)。我們的團隊架構是扁平化的,我們有海量的數據,每個人都是各自領域的專家,我們精誠合作,做出了很多不可思議的事,包括建立預測模型、實現算法原型、揭示出隱藏在數據背后的模式,這些對我們的產品影響深遠。
以數據為基礎,我們為領導層的決策提供真知灼見;分析因果關系,我們發展出了新的方法論。這些全仰仗世界一流的工程師和技術設備。每個人都為團隊引入了專家級的技能,包括編碼、軟件工程、統計學、數學、機器學習、通信、可視化、探索性數據分析(EDA)等,還有對社交網絡和社交空間的數據的敏感直覺和專業知識。
要知道,沒有人是全知全能的,但集合所有人的智慧,我們就做到“無所不能”。我們認識到了每種技能的價值,因此就成功了。我們的共同點是守信,對解決有趣的問題充滿好奇心,對待新的科學發現既保有適度的懷疑又充滿激情。我們喜愛這項工作,對數據背后的模式充滿了好奇。
我居住在紐約,希望把我在谷歌公司的工作經驗傳授給哥倫比亞大學的學生們,我相信他們需要這個,而且,我也喜歡教學。我想把我從工作中學到的東西教給他們。另外,我知道紐約的技術圈里有一個新興的數據科學家社區,我也希望學生們能從他們身上汲取知識。
因此,這門課程常會邀請業界或學術界的數據科學家來做客座演講。每位嘉賓所專長的技能和領域都不盡相同。我希望通過這樣一種多樣性的組合,讓學生們對數據科學有一個更全面的認識。
原因二:數據科學有希望成為一門極具研究價值、意義深遠的學科,它會影響到人們生活的方方面面。為此,哥倫比亞大學和紐約市市長布隆伯格先生在2012年7月宣布成立了一個數據科學與工程研究所。開設這門課是在嘗試發展數據科學的理論,我希望讓數據科學成為一門真正的科學。
原因三:我時常聽到業界的數據科學家說,在脫離實踐的課堂上是無法真正教授數據科學的,我想挑戰一下這種言論。我一直將我的課堂視作數據科學家的孵化器,而我的學生也確實表現出色,他們將會成為數據科學界冉冉升起的新星。事實上,本書其中一章內容就是由我的學生們貢獻的。
本書的起源
如果不是遇到了CathyO‘Neil,我的教學筆記也不會集結成書。她是一位數學家,后來轉型為數據科學家,她的個人博客mathbabe。org很受歡迎,在博客中的“關于自己”部分,她說自己一直在期待下面這個問題能有更好的答案:非理論派的數學家能做些什么以讓這個世界變得更加美好?我向大學提議開設數據科學導論這門課程時,恰好認識了Cathy,那時她正在一個初創公司工作,職位是數據科學家。對于我開課的嘗試,她十分支持。她還提出親自過來聽課,并在博客上同步直播我的授課內容。鑒于我性格比較內向低調,起先我并不喜歡這么做,后來Cathy說服了我。她說這與商業廣告的肆意炒作截然不同,這是一個絕好的機會,借此可以將“數據科學”的概念向大眾普及。
我在哥倫比亞大學上的每一節課,Cathy都會坐在第一排,并不時提出問題。她后來還受邀作為這門課的客座嘉賓給同學們上了一課(見第6章)。除了將我的講義發布到博客上,Cathy還對授課內容貢獻甚巨,比如,她提醒我們數據建模過程中存在一些道德倫理方面的考量。此外,她鼓勵我也同步開設一個博客(http://columbiadatascience。com/blog/),用來和學生們做直接交流。我在上面也會總結自己的教學經驗,這或許會幫到其他教授。Cathy博客中所有關于我授課內容的條目,再加上我博客中的部分內容,構成了本書的原始素材,我們在這一基礎上修改加工,再集合一些其他資料,終成此書。
本書內容
本書既介紹實踐應用,也提出理論規范。一方面,本書介紹了一些業內頂尖數據科學家的日常工作內容,帶大家看看他們在實踐中如何應用數據科學知識,借此管中窺豹,了解這一學科目前的應用現狀。另一方面,我們還將從學術角度去定義數據科學的研究范疇。
這不是一本關于機器學習的教科書。恰恰相反,本書會多角度全方位、深入地介紹數據科學。它是對現有數據學科領域的縱覽,試圖為這一學科勾勒出一幅全景圖。因此,在選擇案例時,我們會更注重廣度而非深度。
希望本書能夠被那些善待它的人充分利用,舉一反三,去解決那些重要的問題。
這門課在哥倫比亞大學講完后,我聽到了這樣的評價:它是一門從人文主義角度、全面講解數據科學的課程。我們不僅關注工具、數學、模型、算法和代碼,同時也很關注上述過程中的人性化考量。關于什么是人文主義者,我很喜歡如下的定義:“他十分關心人類的福祉,尊重個人的價值觀,并且注重維護個體尊嚴!比绾卧跀祿茖W中體現人文主義?你在建模和設計算法時,認識到你作為個人所應起到的作用,想想哪些東西是人所具備而電腦不具備的,比如基于道德的判斷;向世界公布一種新的統計模型前,想想會為他人的生活帶來什么樣的影響。
組織結構
本書的組織結構遵循我在哥倫比亞大學的數據科學導論課程,在第1章,我們將會回答“什么是數據科學”這個核心問題,同時介紹數據科學工作流程,這是全書組織結構的綱領。第2章和第3章對統計模型和機器學習算法做一概覽,它們是后續章節的基礎。第4章到第6章,以及第8章將會針對特定案例深入學習一些模型和算法。第7章講述如何從數據中提取有效信息以及在模型中創建統計變量。第9章和第10章將深入介紹一些傳統學術界很少涉足的內容(當然現在情況有所改善):數據可視化和社交網絡。第11章和第12章將從預測模型轉而介紹因果分析。第13章和第14章介紹數據預處理以及工程方法。第15章是我的學生們講述他們的故事——他們是怎樣學習數據科學的。第16章展望數據科學未來的發展。
閱讀須知
閱讀本書時最好從前往后依序閱讀,這樣更便于理解,因為不少概念都是一環扣一環的。如果你的統計和概率背景不強,或者從前沒有編過程,那么閱讀本書的同時,如能閱讀本章末尾附帶的補充材料以查漏補缺,效果將會更好。全書為大家推薦了很多補充材料,當你閱讀某個章節感到困難時,這或許由于你缺失某些背景知識,或許由于我們的講解不夠清晰,這時你都可以求助于這些補充材料,厘清概念。
Rachel Schutt,美國新聞集團旗下數據科學部門高級副總裁、哥倫比亞大學統計系兼職教授、約翰遜實驗室高級研究科學家,同時也是哥倫比亞大學數據科學及工程研究所教育委員會的發起人之一。她曾在谷歌研究院工作數年,負責設計算法原型并通過建模理解用戶行為。
Cathy O'Neil,約翰遜實驗室高級數據科學家、哈佛大學數學博士、麻省理工學院數學系博士后、巴納德學院教授,曾發表過大量算術代數幾何方面的論文。他曾在全球投資管理公司D.E. Shaw擔任對沖基金金融師,后加入專門評估銀行和對沖基金風險的軟件公司RiskMetrics,個人博客:mathbabe.org。
作者介紹 XII
關于封面圖 XIII
前言 XIV
第1章 簡介:什么是數據科學
1.1 大數據和數據科學的喧囂
1.2 沖出迷霧
1.3 為什么是現在
1.4 數據科學的現狀和歷史
1.5 數據科學的知識結構
1.6 思維實驗:元定義
1.7 什么是數據科學家
1.7.1 學術界對數據科學家的定義
1.7.2 工業界對數據科學家的定義
第2章 統計推斷、探索性數據分析和數據科學工作流程
2.1 大數據時代的統計學思考
2.1.1 統計推斷
2.1.2 總體和樣本
2.1.3 大數據的總體和樣本
2.1.4 大數據意味著大膽的假設
2.1.5 建模
2.2 探索性數據分析
2.2.1 探索性數據分析的哲學
2.2.2 練習:探索性數據分析
2.3 數據科學的工作流程
2.4 思維實驗:如何模擬混沌
2.5 案例學習:RealDirect
2.5.1 RealDirect是如何賺錢的
2.5.2 練一練:RealDirect公司的數據策略
第3章 算法
3.1 機器學習算法
3.2 三大基本算法
3.2.1 線性回歸模型
3.2.2 k 近鄰模型(k-NN)
3.2.3 k 均值算法
3.3 練習:機器學習算法基礎
3.4 總結
3.5 思維實驗:關于統計學家的自動化
第4章 垃圾郵件過濾器、樸素貝葉斯與數據清理
4.1 思維實驗:從實例中學習
4.1.1 線性回歸為何不適用
4.1.2 k 近鄰效果如何
4.2 樸素貝葉斯模型
4.2.1 貝葉斯法則
4.2.2 個別單詞的過濾器
4.2.3 直通樸素貝葉斯
4.3 拉普拉斯平滑法
4.4 對比樸素貝葉斯和k 近鄰
4.5 Bash代碼示例
4.6 網頁抓。篈PI和其他工具
4.7 Jake的練習題:文章分類問題中的樸素貝葉斯模型
第5章 邏輯回歸
5.1 思維實驗
5.2 分類器
5.2.1 運行時間
5.2.2 你自己
5.2.3 模型的可解釋性
5.2.4 可擴展性
5.3 邏輯回歸:一個來自M6D 的真實案例研究
5.3.1 點擊模型
5.3.2 模型背后
5.3.3 α和β 的參數估計
5.3.4 牛頓法
5.3.5 隨機梯度下降法
5.3.6 操練
5.3.7 模型評價
5.4 練習題
第6章 時間戳數據與金融建模
6.1 Kyle Teague與GetGlue公司
6.2 時間戳
6.2.1 探索性數據分析(EDA)
6.2.2 指標和新變量
6.2.3 下一步怎么做
6.3 輪到Cathy O'Neill了
6.4 思維實驗
6.5 金融建模
6.5.1 樣本期內外以及因果關系
6.5.2 金融數據處理
6.5.3 對數收益率
6.5.4 實例:標準普爾指數
6.5.5 如何衡量波動率
6.5.6 指數平滑法
6.5.7 金融模型的反饋
6.5.8 聊聊回歸模型
6.5.9 先驗信息量
6.5.10 一個小例子
6.6 練習:GetGlue提供的時間戳數據
第7章 從數據到結論
7.1 William Cukierski
7.1.1 背景介紹:數據科學競賽
7.1.2 背景介紹:眾包模式
7.2 Kaggle模式
7.2.1 Kaggle的參賽者
7.2.2 Kaggle的客戶
7.3 思維實驗:關于作業自動評分系統
7.4 特征選擇
7.4.1 例子:留住用戶
7.4.2 過濾型
7.4.3 包裝型
7.4.4 決策樹與嵌入型變量選擇
7.4.5 熵
7.4.6 決策樹算法
7.4.7 如何在決策樹模型中處理連續性變量
7.4.8 隨機森林
7.4.9 用戶黏性:模型的預測能力與可解釋性
7.5 David Huffaker:谷歌社會學研究的新方法
7.5.1 從描述性統計到預測模型
7.5.2 谷歌的社交研究
7.5.3 隱私保護
7.5.4 思維實驗:如何消除用戶的顧慮
第8章 構建面向大量用戶的推薦引擎
8.1 一個真實的推薦引擎
8.1.1 最近鄰算法回顧
8.1.2 最近鄰模型的已知問題
8.1.3 超越近鄰模型:基于機器學習的分類模型
8.1.4 高維度問題
8.1.5 奇異值分解(SVD)
8.1.6 關于SVD的重要特性
8.1.7 主成分分析(PCA)
8.1.8 交替最小二乘法
8.1.9 固定矩陣V,更新矩陣U
8.1.10 關于這些算法的一點思考
8.2 思維實驗:如何過濾模型中的泡沫
8.3 練習:搭建自己的推薦系統
第9章 數據可視化與欺詐偵測
9.1 數據可視化的歷史
9.1.1 Gabriel Tarde
9.1.2 Mark 的思維實驗
9.2 到底什么是數據科學
9.2.1 Processing
9.2.2 Franco Moretti
9.3 一個數據可視化的方案實例
9.4 Mark 的數據可視化項目
9.4.1 《紐約時報》大廳里的可視化:Moveable Type
9.4.2 屏幕上的生命:Cascade可視化項目
9.4.3 Cronkite廣場項目
9.4.4 eBay與圖書網購
9.4.5 公共劇場里的"莎士比亞機"
9.4.6 這些展覽的目的是什么
9.5 數據科學和風險
9.5.1 關于Square公司
9.5.2 支付風險
9.5.3 模型效果的評估問題
9.5.4 建模小貼士
9.6 數據可視化在Square
9.7 Ian的思維實驗
9.8 關于數據可視化
第10章 社交網絡與數據新聞學
10.1 Morning Analytics與社交網絡
10.2 社交網絡分析
10.3 關于社交網絡分析的相關術語
10.3.1 如何衡量向心性
10.3.2 使用哪種向心性測度
10.4 思維實驗
10.5 Morningside Analytics
10.6 從統計學的角度看社交網絡分析
10.6.1 網絡的表示方法與特征值向心度
10.6.2 隨機網絡的第一個例子:Erdos-Renyi模型
10.6.3 隨機網絡的第二個例子:指數隨機網絡圖模型
10.7 數據新聞學
10.7.1 關于數據新聞學的歷史回顧
10.7.2 數據新聞報告的寫作:來自專家的建議
第11章 因果關系研究
11.1 相關性并不代表因果關系
11.1.1 對因果關系提問
11.1.2 干擾因子:一個關于在線約會網站的例子
11.2 OK Cupid的發現
11.3 黃金準則:隨機化臨床實驗
11.4 A/B測試
11.5 退一步求其次:關于觀察性研究
11.5.1 辛普森悖論
11.5.2 魯賓因果關系模型
11.5.3 因果關系的可視化
11.5.4 定義:因果關系
11.6 三個小建議
第12章 流行病學
12.1 Madigan的學術背景
12.2 思維實驗
12.3 統計學在現代
12.4 醫學文獻與觀察性研究
12.5 分層法不解決干擾因子的問題
12.6 就沒有更好的辦法嗎
12.7 研究性實驗(OMOP)
12.8 最后的思維實驗
第13章 從競賽中學到的:數據泄漏和模型評價
13.1 Claudia作為數據科學家的知識結構
13.1.1 首席數據科學家的生活
13.1.2 作為一名女數據科學家
13.2 數據挖掘競賽
13.3 如何成為出色的建模者
13.4 數據泄漏
13.4.1 市場預測
13.4.2 亞馬遜案例學習:出手闊綽的顧客
13.4.3 珠寶抽樣問題
13.4.4 IBM 客戶鎖定
13.4.5 乳腺癌檢測
13.4.6 預測肺炎
13.5 如何避免數據泄漏
13.6 模型評價
13.6.1 準確度重要嗎
13.6.2 概率的重要性,不是非0 即1
13.7 如何選擇算法
13.8 最后一個例子
13.9 臨別感言
第14章 數據工程:MapReduce、Pregel、Hadoop
14.1 關于David Crawshaw
14.2 思維實驗
14.3 MapReduce
14.4 單詞頻率問題
14.5 其他MapReduce案例
14.6 Pregel
14.7 關于Josh Wills
14.8 思維實驗
14.9 給數據科學家的話
14.9.1 數據豐富和數據匱乏
14.9.2 設計模型
14.10 算算Hadoop的經濟賬
14.10.1 Hadoop簡介
14.10.2 Cloudera
14.11 Josh 的工作流程
14.12 如何開始使用Hadoop
第15章 聽聽學生們怎么說
15.1 重在過程
15.2 不再簡單
15.3 援助之手
15.4 殊途同歸
15.5 逢山開路,遇水架橋
15.6 作品展示
第16章 下一代數據科學家、自大狂和職業道德
16.1 前面都講了些什么
16.2 什么是數據科學(再問一次)
16.3 誰是下一代的數據科學家
16.3.1 成為解決問題的人
16.3.2 培養軟技能
16.3.3 成為提問者
16.4 做一個有道德感的數據科學家
16.5 對于職業生涯的建議