《哈佛商業(yè)評(píng)論》曾宣稱“數(shù)據(jù)科學(xué)家”是二十一世紀(jì)最性感的職業(yè)。所謂性感,既代表著難以名狀的誘惑,又說明了大家對(duì)它又不甚了解。
如何做好數(shù)據(jù)科學(xué)呢?
微軟高級(jí)數(shù)據(jù)科學(xué)家 Brandon Rohrer 概括了做數(shù)據(jù)科學(xué)的七大步驟,手把手教你做數(shù)據(jù)科學(xué)。
1. 獲取更多的數(shù)據(jù)
數(shù)據(jù)科學(xué)的原材料是數(shù)字和名稱的集合,測(cè)量、價(jià)格、日期、時(shí)間、產(chǎn)品、標(biāo)題、行動(dòng)等,數(shù)據(jù)科學(xué)無(wú)所不包。你也可以使用圖像、文字、音頻、視頻等復(fù)雜數(shù)據(jù),只要你能將它們簡(jiǎn)化為數(shù)字和名稱。
獲取數(shù)據(jù)的機(jī)制可能非常復(fù)雜,事實(shí)上,數(shù)據(jù)工程師就像忍者一樣。不過,本篇文章將主要聚焦于數(shù)據(jù)科學(xué)。
2. 問一個(gè)尖銳的問題
數(shù)據(jù)科學(xué)是通過數(shù)字和名稱組成的數(shù)據(jù)集合來(lái)回答問題的過程。你問的問題越精確,越容易找到令你滿意的答案。在選擇問題的時(shí)候,想象你的面前是一個(gè)可以用數(shù)字或字段來(lái)告訴你宇宙中一切奧秘的圣人,他的回答總是模糊不清、令人困惑,而你希望問一個(gè)精準(zhǔn)而無(wú)懈可擊的問題,讓他忍不住告訴你問題的答案。
模糊的問題如“我的數(shù)據(jù)能告訴我什么?”、“我應(yīng)該做什么?”我怎樣提高利潤(rùn)?”會(huì)帶來(lái)無(wú)用的回答,而清晰的問題如“第三季度我能在蒙特利爾賣出多少產(chǎn)品?”、“我車隊(duì)中的哪一輛車會(huì)先壞?”會(huì)帶來(lái)清晰的答案。
在有了問題后,要看你的數(shù)據(jù)是否能夠回答這些問題。如果你的問題是“我的股票下周的價(jià)格是多少?”,那就要確保你的數(shù)據(jù)中有股票的歷史價(jià)格;如果你的問題是“ 88型航空發(fā)動(dòng)機(jī)能夠工作多少小時(shí)?”,那就要確保你有多臺(tái) 88 型發(fā)動(dòng)機(jī)故障次數(shù)的數(shù)據(jù)。這些就是你的 目標(biāo)數(shù)據(jù) (target) ,即你希望在未來(lái)預(yù)測(cè)或布置的量或種類。如果你沒有任何目標(biāo)數(shù)據(jù),需要回到步驟 1 ,獲取更多的數(shù)據(jù),因?yàn)闆]有目標(biāo)數(shù)據(jù)則無(wú)法回答問題。
3. 將數(shù)據(jù)置于表格中
大部分機(jī)器學(xué)習(xí)算法假設(shè)數(shù)據(jù)以表格的形式呈現(xiàn),每行是一個(gè)事件、項(xiàng)目或?qū)嵗苛惺切袛?shù)據(jù)的一個(gè)特征或?qū)傩浴T谝粋€(gè)描述美國(guó)足球比賽的數(shù)據(jù)集中,每行可能代表一場(chǎng)比賽,列可能包括主場(chǎng)隊(duì)、客場(chǎng)隊(duì)、主場(chǎng)得分、客場(chǎng)得分、日期、開始時(shí)間、出場(chǎng)情況等等。表格中的列可以非常細(xì)致,有多少都可以。
選擇所需數(shù)據(jù)行
將數(shù)據(jù)集分割成行有許多方法,但只有一種方法能幫助你回答問題:每行有且只能有一個(gè)目標(biāo)實(shí)例。以零售店數(shù)據(jù)為例,一行可以是一次交易、一天、一個(gè)零售店、一個(gè)顧客等等。如果你的問題是“剛進(jìn)過店的顧客會(huì)回訪嗎?”,那應(yīng)當(dāng)以一個(gè)顧客作為一行,你的目標(biāo)“顧客是否回訪”將呈現(xiàn)在每行,而如果以一個(gè)零售店或者一天作為每行的數(shù)據(jù)則不能回答目標(biāo)問題。
有時(shí)你必須通過累積數(shù)據(jù)來(lái)獲得需要的數(shù)據(jù)。如果你的問題是“我每天賣出多少拿鐵咖啡?”,那你需要的數(shù)據(jù)是以天數(shù)作為行、賣出的拿鐵數(shù)作為列,但是你手頭的數(shù)據(jù)可能是帶有日期和時(shí)間的交易記錄。為了將這些數(shù)據(jù)變?yōu)槊刻斓臄?shù)據(jù),需要對(duì)目前的數(shù)據(jù)進(jìn)行累積,將每一天賣出的拿鐵數(shù)進(jìn)行合計(jì)。在這個(gè)過程中,有些信息會(huì)丟失,例如每杯拿鐵賣出的時(shí)間,但沒有關(guān)系,因?yàn)樗粫?huì)幫助你回答問題。
4. 檢查數(shù)據(jù)質(zhì)量
檢視
下一步是認(rèn)真地排查數(shù)據(jù)。檢查數(shù)據(jù)有兩個(gè)目的:第一,發(fā)現(xiàn)錯(cuò)誤數(shù)據(jù),修復(fù)或去除;第二,充分了解每一行每一列。這一步不能跳過,否則無(wú)法讓數(shù)據(jù)發(fā)揮最大功效。只有你對(duì)你的數(shù)據(jù)表示出愛,它才會(huì)愛你哦 ~
以一列數(shù)據(jù)為例,它的標(biāo)簽是什么?數(shù)值與標(biāo)簽匹配嗎?標(biāo)簽對(duì)你來(lái)說有意義嗎?這一列數(shù)據(jù)有記錄嗎?是怎樣測(cè)量的?誰(shuí)來(lái)測(cè)量的?如果你幸運(yùn)地認(rèn)識(shí)錄入數(shù)據(jù)的人,不妨約他們出來(lái)吃甜甜圈,問問他們是怎樣測(cè)量的,問問他們錄入中有沒有有趣的故事,這一頓點(diǎn)心會(huì)給你帶來(lái)回報(bào)的。
現(xiàn)在,讓我們把用這一列畫一個(gè)柱狀圖。整體分布符合你的預(yù)期嗎?是否有異常數(shù)據(jù)點(diǎn)?異常點(diǎn)是否有意義?例如,如果這一列代表的是農(nóng)業(yè)分布的經(jīng)度,有沒有一個(gè)數(shù)據(jù)點(diǎn)落在太平洋中?如果這一列是關(guān)于考試分?jǐn)?shù),是否有人的分?jǐn)?shù)是 1% 或者10000% ?用你所知的一切對(duì)數(shù)據(jù)做一個(gè)監(jiān)測(cè),如果有的數(shù)據(jù)看起來(lái)有些奇怪,找出為什么。
校正
在排查數(shù)據(jù)中,你可能發(fā)現(xiàn)一些標(biāo)簽和記錄的錯(cuò)誤,記錄并分享你的發(fā)現(xiàn)。
你也可能發(fā)現(xiàn)一些值是錯(cuò)誤的。一些值可能超過了正常范圍,比如一個(gè)人竟然 72 米高,或者有些值是不可能出現(xiàn)的,例如一個(gè)寫成“中心路 7777777777 號(hào)”的地址。這種情況下,你有三個(gè)選擇:如果這個(gè)值很容易更改,那就改為正確的值,例如把高 72 米改成 72 英寸;如果錯(cuò)誤的值不明顯,你可以刪掉這個(gè)值、注明缺失;如果這個(gè)值是關(guān)鍵信息,你可以刪除整行或者整列。這樣可以讓你訓(xùn)練的模型遠(yuǎn)離錯(cuò)誤數(shù)據(jù)。錯(cuò)誤數(shù)據(jù)可比缺失數(shù)據(jù)危害更大。
你可能很想移除看起來(lái)不理想的數(shù)據(jù),例如異常數(shù)據(jù)或者不支持你的理論的數(shù)據(jù)——但千萬(wàn)別這樣做,否則不僅違背學(xué)術(shù)倫理,更可怕的是可能會(huì)導(dǎo)致錯(cuò)誤結(jié)果。
替換缺失值
幾乎每一個(gè)數(shù)據(jù)集都存在缺失值,可能是由于數(shù)值錯(cuò)誤被刪除了,也可能是你在實(shí)驗(yàn)途中去測(cè)量了一個(gè)新的變量,還可能是這些數(shù)據(jù)來(lái)自不同的數(shù)據(jù)源。但不管什么情況,大部分機(jī)器學(xué)習(xí)算法要么要求數(shù)據(jù)無(wú)缺失,要么會(huì)用默認(rèn)值填充。而你可以比機(jī)器做得更好,因?yàn)槟懔私饽愕臄?shù)據(jù)。
替換缺失值有很多方法, 處理缺失值的方法 一文 提供了一個(gè)辦法,而最佳的處理辦法取決于每一列的意義和數(shù)值缺失帶來(lái)的影響,每一個(gè)數(shù)據(jù)集的情況可能都有所不同。
替換完所有的缺失值后,你的數(shù)據(jù)們現(xiàn)在已經(jīng)“連上”了,每一個(gè)數(shù)據(jù)點(diǎn)對(duì)每一個(gè)特征都有意義。現(xiàn)在,這些數(shù)據(jù)是干凈的、可以拿來(lái)用了。
有時(shí)候你可能發(fā)現(xiàn),在數(shù)據(jù)清理后,幾乎沒有剩余的數(shù)據(jù)了……這是件好事情,因?yàn)槟銊倓偙苊饬俗呱嫌缅e(cuò)誤的數(shù)據(jù)建立模型、得到錯(cuò)誤的結(jié)論、被客戶嘲笑、激怒老板的不歸路 …… 如果是這樣,那就回到第一步,從頭獲取更多的數(shù)據(jù)吧!
5. 變換特征
在進(jìn)入機(jī)器學(xué)習(xí)之前還有一步:特征工程 (feature engineering) ,即對(duì)現(xiàn)有特征數(shù)據(jù)進(jìn)行創(chuàng)意組合,以更好地預(yù)測(cè)你的目標(biāo)。舉個(gè) ,如果我們把火車到達(dá)和出發(fā)的時(shí)間相減,可以得到火車的運(yùn)輸時(shí)間,這個(gè)特征對(duì)完成目標(biāo)即預(yù)測(cè)火車的最大速度更加有用。
嚴(yán)格來(lái)講,特征工程并不會(huì)增加任何數(shù)據(jù)信息,只是使用各種方法對(duì)原有數(shù)據(jù)進(jìn)行組合。然而,僅僅對(duì)兩欄的數(shù)據(jù)進(jìn)行組合就有無(wú)限種方式,而大部分組合方式對(duì)解決目標(biāo)并沒有什么幫助。通常情況下,只有在對(duì)數(shù)據(jù)有充分了解的情況下才可能選出一個(gè)好的方式。你需要充分調(diào)用你所有的相關(guān)知識(shí),讓數(shù)據(jù)為你所用。
特征工程是數(shù)據(jù)科學(xué)中最微妙的一步,沒有一成不變的辦法,而是要不斷試錯(cuò)、依靠直覺和經(jīng)驗(yàn)。深度學(xué)習(xí)試圖讓這個(gè)過程自動(dòng)完成,但大多以失敗告終,也許這就是人類智能的特別之處吧。
不過,即使你還不是特征工程的黑帶高手,也有一個(gè)可以使用的小技巧。你可以根據(jù)你的目標(biāo),用不同的顏色標(biāo)識(shí)變量,這可以幫你發(fā)現(xiàn)變量之間的關(guān)系。這可能工作量較大,不過你一定要花些時(shí)間過一遍。每當(dāng)你發(fā)現(xiàn)有兩個(gè)變量與目標(biāo)相關(guān),那可能就是一個(gè)特征工程,意味著這兩個(gè)變量結(jié)合在一起可能比孤立來(lái)看更有幫助。
有時(shí)候,你會(huì)發(fā)現(xiàn)你的數(shù)據(jù)中沒有任何變量或變量的組合能夠幫你預(yù)測(cè)目標(biāo),這可能意味著你需要測(cè)量一些其他變量。那么,重回第一步,獲取更多的數(shù)據(jù)吧 !
6. 回答問題
終于到了數(shù)據(jù)科學(xué)家最愛的部分了 —— 機(jī)器學(xué)習(xí)!簡(jiǎn)單地說,你需要 確定你的問題屬于哪種算法 ,然后 ,使用傳統(tǒng)的機(jī)器學(xué)習(xí)技巧來(lái)分割數(shù)據(jù)進(jìn)行訓(xùn)練、調(diào)整、測(cè)試數(shù)據(jù)集、根據(jù)選擇的模型優(yōu)化參數(shù)。
如果你的模型無(wú)法很好地解決問題,或者你不想用機(jī)器學(xué)習(xí),還有兩種非傳統(tǒng)的方法:
第一種,簡(jiǎn)單地看一下你的數(shù)據(jù)圖像,很多情況下,只要對(duì)數(shù)據(jù)進(jìn)行可視化就能找到答案。例如,如果你的問題是“波士頓明年 7 月 4 號(hào)的最高氣溫是多少?”,那么只要看一下過去 100 年間波士頓每年 7 月 4 日最高氣溫的直方圖就基本可以解決問題了。
第二種方法技術(shù)含量更高一些。如果你是因?yàn)閿?shù)據(jù)集太小而得不到結(jié)果,你可以考慮進(jìn)行優(yōu)化。機(jī)器學(xué)習(xí)基于弱先驗(yàn)假設(shè),也就是說,機(jī)器學(xué)習(xí)對(duì)數(shù)據(jù)結(jié)構(gòu)做一些較弱的假設(shè)。這種方法的優(yōu)點(diǎn)在于使用算法之前不需要對(duì)數(shù)據(jù)有太多了解,它能夠訓(xùn)練出一些大致的模型,而缺點(diǎn)在于需要大量數(shù)據(jù)才能獲得一個(gè)可信的答案。一個(gè)替代方法是根據(jù)你對(duì)數(shù)據(jù)的了解,對(duì)數(shù)據(jù)做更多的假設(shè)。例如,如果你想預(yù)測(cè)一個(gè)物體的飛行軌跡,你可以收集大量物體自由落體的數(shù)據(jù),用它們訓(xùn)練機(jī)器學(xué)習(xí)算法。你其實(shí)還可以用你了解的牛頓力學(xué)知識(shí)來(lái)制作一個(gè)更豐富的模型。這樣,只需要一個(gè)包括位置和速度的數(shù)據(jù)點(diǎn)就可以預(yù)計(jì)這個(gè)物體在未來(lái)任何一點(diǎn)的位置和速度。這種方法的風(fēng)險(xiǎn)在于你的假設(shè)可能不完全正確,但優(yōu)點(diǎn)是你不需要大量的數(shù)據(jù)就能完成任務(wù)。
如果這些辦法對(duì)你都不適用,也許意味著你需要收集更多的數(shù)據(jù),或者重新思考一下你測(cè)量的數(shù)據(jù)。回到第一步,獲取更多數(shù)據(jù)吧 ~
7 .應(yīng)用答案
不管你如何優(yōu)雅地用數(shù)據(jù)回答提出的問題,你的工作直到有用戶使用才算完成。將你的結(jié)果以某種形式呈現(xiàn)給用戶,用戶可以用它做決策、完成任務(wù)或進(jìn)行學(xué)習(xí)。展示的方式有很多:你可以將結(jié)果放在 web 頁(yè)面上,把你發(fā)現(xiàn)的最有用的信息呈現(xiàn)在 PDF上,可以在 GitHub 上分享你的代碼,可以把結(jié)論做成視頻分享給你的商業(yè)客戶,可以制作美觀的數(shù)據(jù)可視化成果發(fā)在 Twitter 上,等等。不管采用哪種方式,要讓其他人使用你的成果。
森林中的一棵樹倒下,即使附近沒有人聽見,仍然會(huì)有響聲,但如果你建造了一個(gè)精良的模型卻沒人用,你肯定不會(huì)得到贊譽(yù)。
那么就從頭開始吧,回到第一步,獲取更多的數(shù)據(jù)!
Loading...Loading...