作為一個自稱資料科學家,最常被問到的問題之一,就是:什麼是資料科學。這篇文章試圖用一些比較淺顯的方式來說明資料科學是什麼。

簡介

最常跟資料科學混在一起講的詞有很多,例如:大數據(Big Data)、資料採礦(Data Mining)、機器學習(Machine Learning)甚至是比較早一點的資料分析(Data Analysis)、商業智慧(Business Intelligence)。這些詞彙或多或少都跟資料科學相關,但不盡相同。從定義上來講,資料科學是通過各種科學的方式,包含:科學的方法、程序、演算法,將有意義的資訊從手上的資料裡提取出來。前面所提到資料採礦、機器學習、甚至是資料視覺化,都是資料科學用來完成目標的其中一種工具。

由於這幾年各種技術的興起,尤其是2016年Alphago擊敗李世乭後,各種人工智慧、深度學習、大數據的直銷、詐騙商業概念紛紛猛虎出閘。同時也有很多批評的聲音隨之而起。其中比較常見的聲音就是:

  • 那不就是統計學嗎?
  • 就是用窮舉法,算出所有的可能性
  • 跟Excel有什麼差別?

用比較簡單的方式來解釋,過去各種學科所提到的資料分析,最主要的目的都是去解釋現有的資料集(Data Set),例如分析過去的銷售報表、計算股價的加權移動平均。但資料科學最重視的部分是如何透過現有的資料集來找到預測未來的可能性。(參考這篇文章Data Science and Prediction)

譬如,傳統的方式可能會告訴你每個季的銷貨量有多少、最熱賣的商品是什麼,資料科學會更著重在:下個季的銷貨量可能會有多少?我推出了新的商品後,我的顧客會不會喜歡他?

我們可以把資料科學(尤其是在商業中的運用)的過程總結成:透過對領域知識(Domain Knowledge)的理解,將遭遇到的商業問題,透過資料探勘的技術分析,並且運用資料工程(Data Engineering)來導入現有/正在開發的系統。

流程

上圖是CRISP-DM所提出的一個分析流程。不過我個人認為,尤其是在軟體業,Deployment這個行為應該會再接回前面的Business Understanding。

這幾個流程分別代表什麼意義呢?在這裡我們用一個假想的雜貨店導入資料科學的流程來舉例

了解業務(Business Understanding)

首先我們要了解雜貨店是怎麼運作的,除了客人來店購買之外,雜貨店阿嬤也同時經營定期送牛奶到鄰居家、阿嬤同時也接受對面早餐店的代訂雞蛋服務。除了產業本身的知識之外,也有許多組織內自己獨有的文化或流程,都是要在這個過程中理解的。

了解資料(Data Understanding)

接下來要了解資料,了解資料可以分成兩個部分。了解現有正在搜集的資料有哪些、了解現有正在搜集的資料有什麼現象。第一個我們知道阿嬤有在記錄哪些鄰居要訂牛奶、早餐店訂雞蛋的頻率、賣出了什麼東西,但他沒有記錄存貨有多少,也不知道什麼時候會缺貨。第二個我們發現鄰居往往在訂了一個月之後就沒有續訂了,但不曉得是因為什麼原因。阿嬤想要鎖定牛奶相關的流程,因為牧場是他兒子開的,想知道怎樣更好賣

資料準備(Data Preparation)


接下來我們開始將阿嬤紀錄的資料轉成採礦需要的部分,阿嬤現在都是用手寫的,ok,我們要把他轉成可用的格式(至少要是電腦可讀的模式,或者用還不存在的文字辨識系統把它變成excel sheet)。接下來阿嬤裡面有寫錯客戶的名字,需要有個工具自動或手動校正。裡面有遺漏的資料,譬如忘記寫價格,我們要補上或者是視為遺漏資料。

建模(Modeling)

我猜這個大概不會在淺談的範圍吧。大致的概念就是找一個適合的模型,讓我們的系統在接受了前面準備的資料之後,可以回答你想提出的問題。

評估(Evaluation)

現在模型建立出來了,我們需要做幾項評估。

  • 是不是只是樣本過適或取樣誤差:我們只搜集了冬天的資料,於是沒有人買冰棒,立馬建議阿嬤把冰棒撤櫃,加碼買進一堆暖暖包
  • 是不是真的有解決想要解決的問題:我們發現客戶每個人都有拿一隻iphone,立馬建議阿嬤轉型成apple維修站。但阿媽一開始只是想知道牛奶怎樣比較好賣
  • 在解決問題的同時,會造成什麼樣的效果:發現因為牛奶很好賣,於是建議進貨進到飽,結果倉儲爆滿、牛奶一天到晚過期。

在這個階段,這些問題都應該要盡可能地被識別出來,以用來評估是否要開始應用

部署(Deployment)

根據前面的流程,我們設計好一套新的系統,首先要跟舊有的部分結合,讓阿嬤在輸入顧客資料的同時就直接導入資料流程。並且在每個月客戶準備要續約的時候發訊息詢問(往往是客戶根本就忘記要續了)。接下來,我們也會因為這一連串的過程中,發現原本沒有注意到的商業問題或機會,接下來在部署後也可以開始下一輪的迭代。

方式

那資料探勘會用哪些方式來解決這些問題呢?我們可以大致歸類成以下的幾個方式(當然不只這幾種,這裡只是舉出比較常見的方式):

分類(Classfication)

預測資料中的單筆資訊是屬於哪一個類別的。例如,阿嬤的顧客可以分成常客、VIP、只經過一次的觀光客。商品可以被分成運動型、休閒型、娛樂型

聚類(Clustering)

將資料中的紀錄群聚成不同的類型,這個看起來跟前一個很像,但這裡強調的是在不需要任何的背景知識,單純以個體的特徵來論。簡單地講,例如我們想要把顧客分成青年老年中年跟少年,你可以先定義好規則,20歲以下是少年、20~35是青年、35~60是中年,60以上是老年,也可以讓電腦自己去分群,最後告訴你22以下的是一群、22~38是一群、39~55是一群,以上又是一群。

迴歸(Regression)

預測個體的某一個變數的值,例如預測7月牛奶的訂購量、新進的一個商品,預測他未來一個月的銷售量

相似性比對(Similarity matching)

給定某個個體,在資料庫中尋找與他相似的類型,例如有了某個顧客的購買記錄,尋找跟他類似的顧客、有了某種類型的商品,尋找與他相似的商品。這個技術在推薦系統中非常的常見

異常檢測(Anomaly Detection)

對於不符合既定模式的行為的偵測,例如手電筒平常都賣不出去,但在前5/5號突然發現有爆量的銷售,結果發現是颱風準備要來了

總結

就像前面提到的,資料科學是一連串的科學方法的應用。可以運用在日常生活、可以運用在商業行為。但是資料科學跟工程不一樣,他是一個很研究導向的過程,很多時候你投入了許多資源,卻未必能夠得到預期的結果。但透過這樣研究的過程的分析,往往會發現企業內許多可能發展的空間跟方向。另外,資料科學最主要的目的還是支援人類的決策,決策者在擁有了這樣的工具後(肯定是比直覺式的決策還要有客觀因素吧),該如何修改方向或是變動策略,最終還是會回到人的身上。不過,在聽了各種不明覺厲地分析後,我們認為,讓數據自己說話,絕對是比幻想出來沒有根據的建議還要有說服力,so, Let data talks!