天天看點

《Python資料科學實踐指南》——第0章 發現、出發 0.1 何謂資料科學

本節書摘來自華章計算機《python資料科學實踐指南》一書中的第0章,第0.1節,作者 紀路,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

最近一年裡,知乎社群有不少朋友邀請我回答關于資料挖掘的問題,其中提問最多的是關于“如何改行做資料挖掘”。我想他們之是以邀請我回答這類問題,不是因為我做資料挖掘做得好,而是好奇我是如何改行做資料挖掘的?說來也巧,我大學是學電子的,研究所學生是學控制的,而我的職業理想是成為一個“先知”,但我并不知道如何才能實作這一職業理想。自公元632年人類最後一位先知默罕默德去世之後,将近1400年沒人做先知了,既沒有人可以指導我,也沒有可以效仿的對象。2011年到2013年發生了一系列事件,包括ibm的沃森在“危險邊緣”節目中擊敗了人類選手、google brain某些成果的展示、美國統計學家nate silver對于總統大選的預測等,這些事件都有一個共同點,那就是讓“資料科學”從學術研究蛻變為實際的應用。這也讓我意識到也許我可以做得更好—通過“資料科學”建造一個“先知”,雖然直到現在我還沒有實作這個目标,不過我願意把這一路積累的經驗拿出來與大家分享,希望這些東西能夠幫助各位讀者實作自己的目标,或者找到自己的目标。現在,就讓我們出發吧!

在家用計算機普及之前,數學、邏輯學、哲學及自然科學研究的目的都是為了追求完美的理論證明,或者是提供某種确定性的規則,用以解釋某種自然現象,或者為某些技術提供理論依據。那個時候人類産生資料的能力和收集資料的能力還很有限,或許公司的經營賬目和計算飛彈發射彈道的演算紙就屬于資料最集中的地方了。在那個年代,這些資料分析和處理的工作大都是由人工完成的,最多也隻會借助某些由機械或電子構成的計算裝置罷了。在網際網路興起之後,人類将現實世界中的很多資訊以資料的形式存儲到網絡空間中,比如生活中發生的一段故事,或者旅行中家人的照片,這些資料記錄了人類的行為和社會的發展,甚至包括了自然環境的變化。當今,大量的、各種各樣的資料快速産生,并存儲在網際網路中,而這些資料自然而然地構成了一個人造的環境,稱為資料界(data nature)。通過對資料界中資料的研究,我們不僅可以了解資料本身的種類、狀态、屬性及變化形式和規律,還能從中洞悉人類的某些行為,了解人類的某些社會屬性。并且這些研究方法還能擴充到其他依賴資料的學科中,比如氣象科學、地震科學、金融學、基因科學,等等。在可以預見的未來,我相信,不僅在網際網路行業中會有資料科學家的身影,在各行各業中,隻要與計算機打交道,我們就不得不為已經産生和将要産生的資料做好充分的準備。是以,我認為在這個數字化的時代,不同的專業領域,都需要從大量的資料中尋找到一系列的理論和實踐,這就是資料科學。

“如何才能成功?”無數成功學方面的書本和布道者都沒法給出一個方程或流程圖來向所有人解釋這一過程。最多隻能根據統計學(或者是臆想)列舉出一些可能的必要條件,比如努力、機遇、貴人或僅僅隻是運氣好。我們能否對人類的行為做一個精确的模組化?太難了,比如,不同的人對于成功的定義不同,有的人認為掙錢是成功,有的人認為出名是成功。再比如就算大家都認為成為企業家可以算作某種意義上的成功,但是企業的種類又各有不同,有的人是在電商領域成功的,有的人是在金融行業成功的,他們的成功經曆也各不相同。

事實上,關于“成功”的變量我可以列舉無數個,但即使窮盡了所有可能的變量,也還會遇到資料缺失的問題—一個人成功之前的資料又該如何準确地記錄?這個世界有60億人,如果每個人出生時就攜帶一個電子記錄儀,那麼就可以記錄這個人生活中發生的所有事情。這有可能麼?可能,不僅是可能的,而且我們現在就在做類似的事情,智能手機正源源不斷地收集人類的資料并且存儲到網絡中,我們購物的資料、興趣的資料、人口統計學的資料等都将用作描述我們每一個人的“數字化身”,這是存在于網絡中的我們。并且随着智能硬體、物聯網、工業4.0的推進,整個現實生活中的人類社會在網絡中都會有一份“副本”。為了處理這些資料,并且從中找到對我們有價值的結果,需要更先進的技術與方法,其中将會涉及資料的收集、轉換、存儲、可視化、分析與解釋等内容,這将會是一項非常有價值的課題。

在過去的幾年中,大資料、人工智能、資料挖掘等詞彙被媒體炒得熱火朝天,一方面我樂于見到我所從事的工作受到人們的關注,另一方面我也發現越來越多的人開始疑惑。就像本書開篇中所提到的那樣,我每天都會收到來自不同工作領域的人(有時候是記者或化工專業的從業者,有時候是程式員或數學系的學生,有時是一些在實際工作中遇到困難的工程師)的提問,有的是希望能澄清一些概念,有的是問如何入門,有的是希望我針對他遇到的麻煩提一些建議。我很樂意幫助他們,順便抱怨一下某些不負責任的媒體,是它們把大資料吹得天花亂墜,把各種神秘的力量都賦予資料科學,好像資料科學家就是新時代的先知一樣,能夠預測未來,改變人類的命運。而且媒體給公衆傳遞的資訊是這樣的:大資料是上個月才出現的,google在上周才提出了深度學習方法,一舉解決了人工智能難題。我擔心在這樣冒進的社會氛圍下,這些被扭曲的報道掩蓋了事實的真相,那些對這個領域感興趣的人會被吓跑,這顆科學史上的新星會隕落(在我收到過的提問裡,甚至有人問:大資料的浪潮是不是過去了,現在學還來得及麼?)。如果要追溯資料科學的起源,可以從1974年在美國和瑞典同時出版的《計算機方法的簡明調查》一書中看到,作者彼得·諾爾對資料科學下過這樣的定義“資料科學是處理資料的科學,一旦資料與其所代表的事物的關系被建立起來,就能為其他領域與科學提供借鑒”。

在“大資料”出現以前,統計學家覺得他們所做的就是資料科學,他們會通過分析一些資料來為公司或政府提供一些決策上的幫助。比如,大型上市公司的财報,或者每一次美國大選之前所做的民意調查就屬于此類範疇。當然,不能認為網際網路時代的資料科學是新瓶裝舊酒,經曆了這麼多年的沉澱和積累,加上廣泛的需求,資料科學發展出了一套與之相适應的理論和方法。我也希望能幫助更多的人了解資料科學,促進資料科學的發展。

現代工業界喜歡談生态和閉環,其實資料科學也要貫穿資料的整個生命周期。下面将資料的生命周期簡單地劃分為如下幾個階段。

《Python資料科學實踐指南》——第0章 發現、出發 0.1 何謂資料科學

資料采集傳統的手段主要來自于經營資料和網絡爬蟲采集的資料。現在還包含一些“資料化”的過程,2013年一篇題為“the rise of big data”(大資料的崛起)的文章中提到了“資料化”的概念,即資料化是一種流程,可以将生活中的方方面面轉化為資料。各種手機上的傳感器,智能穿戴等裝置采集資料的過程都屬于資料化。

資料清洗主要負責處理資料中的噪聲或缺失資料。由于填寫表單時的疏忽,或者是爬蟲程式的故障,再或者是傳感器失靈等原因,總是會産生一些我們意料之外的資料,這些資料可能不符合某些格式的要求,或者會缺失部分資料,需要通過資料清洗來剔除或修正這些資料。如果資料量巨大,這就需要我們有處理海量資料的能力。

資料處理可以使用統計學的方法或機器學習的方法從資料中發現我們想要的價值,通常所說的資料挖掘就是在這一步中進行的。之是以這裡沒有使用“資料挖掘”這個詞,是因為有些時候,在某些項目中僅僅使用簡單的統計方法就可以得出很有價值的結論,并沒有使用資料挖掘的專門技法。而且,與普通人的直覺相反,資料挖掘結果的價值往往是通過與業務的緊密結合才能展現出來的,胡亂套用算法往往得不出任何有價值的東西。比如,通過曆史房産中介的銷售資料(包括房屋的價格、面積、層數、每層住戶數等資訊)來為新的樓盤定價、預測目标客戶群體就是兩個不同任務,前者通常隻需要簡單統計(實際上我們過去一直就在這麼做)即可,而後者可能就要使用分類預測算法了。

資料查詢與資料可視化這兩項是為了将處理過後的資料呈現給需要的人。有的時候是需要索引巨量的資料,比如搜尋引擎。有的時候是規律性的結果需要以圖表的形式呈現,比如一些資訊圖(盡管目前大多數資訊圖都是人工統計的資料),或者在處理之前對大資料集進行探索。

上面列舉的幾個階段,每一個都面臨着巨大的挑戰,雖然工業界有一些解決方案,但離成熟還遠得很。并且在面對不同的公司、不同的開發人員、不同的業務需求時,要将這幾個階段有機地整合起來更是難上加難。在其中起到核心作用的人就稱為“資料科學家”。