data science

r-vs-python

從套件的發展談 R 與 Python

By | Data Science | No Comments

昨天到淡江大學參加大數據分析與 R 論壇,與談的過程中陳景祥老師提出了資料分析工具比較的討論議題。本來是想強調智庫驅動徵才要找怎樣的人,一不小心被引導到 R 與 Python 的比較 (後來想來,根本是陳老師在挖坑…)。網路上其實已經很多人討論過這個題目,譬如這篇《數據科學界華山論劍:R與Python巔峰對決》,整理得非常完整,根本就意圖 closed 這系列的討論。

這邊想補充一個會議上沒來得及說清楚的觀點。從資料分析的功能面上,即便 R 跟 Python 如果做一個比較表,也會發現兩邊不分上下,比不出一個所以然。筆者簡單將資料分析的方法分成四大類:Regression, Classification, Clustering and Dimensionality reduction,在下表中列出幾個代表性的演算法,接著再指出 R 與 Python 的對應資料分析套件。

看完這張表格就會理解 R 與 Python,這兩種語言在資料分析工具發展的思維上是有決定性差異的,筆者認為這個差異將決定使用者解決真實問題的方式。對於 R語言來說,各種演算法散落在各種套件當中,所以 R user 在做資料分析的時候,必須要先思考它所面對的問題需要載入怎樣的套件才能解決,如果這個套件提供的演算法仍不夠完善,R user 會先嘗試對該演算法做校正,而不是去思考要不要換其他套件庫。至於 Python user 在做資料分析時,當他載入 scikit-learn 之後,他有超級豐富的武器庫可以去嘗試,當某個演算法效果不如預期時,Python user 會傾向先換別的演算法再試一次看看。

R_Python_packages

從套件功能比較 R 與 Python

再次強調,在演算法的功能面以及模型優化上 R 與 Python 其實都可以做。就筆者自身經驗 R users 在討論資料分析遇到瓶頸的時候會先討論 outlier, overfitting, regularization。而 Python users 在討論的時候會先盤點用過哪些演算法,哪些演算法可以解決某某問題。筆者認為這是這兩種工具發展目的所造成的差異, R 語言是隨著學術研究而發展、Python 則是基於優化資料分析的應用環境。

從企業招募的觀點來說,主管應該要思考的是做資料分析的目的為何,需要招募怎樣特質的資料分析師。詢問筆者該學習 R 或 Python 的學生,則建議思考一下你的個人特質適合,想要橫向或縱向的分配你的技能點。

特色圖片取自:ActiveState

用資料科學迎擊選戰

By | Data Science | No Comments

隨著年底直轄市長/縣市長選舉的逼近,在我看來利用資料學方法規劃選舉策略是很有潛力的。我以沈富雄先生宣布參選參選台北市長後,TVBS 於6月21日所做的民調數據為基礎,再加上台北市統計資料庫查詢系統,利用Gibbs sampling的概念將民調結果的表2-1至表2-6回推成拿不到的原始民調數據,數據大致如下表所示:

表1:台北市長選情民調數據範例

支持者性別年齡地區學歷省籍政黨傾向
連勝文女性30+中山大同高中閩南中立
柯文哲男性50+士林北投大專客家民進黨
柯文哲男性60+士林北投大專閩南中立
柯文哲女性30+松山信義大專閩南民進黨
沈富雄女性40+中山大同高中外省中立
未決定男性50+內湖南港國中其他中立

參考日前由 OSSF 在中研院舉辦的 Data Science with R Workshop (簡報),在介紹Data mining 方法時提到的分類與迴歸樹 (Classification and Regression Trees, CART) 進行分析,如下圖所示:

台北市長選戰決策樹

台北市長選戰決策樹

自左上而右下觀察這棵決策樹,可以發現影響選民支持度最重要的變數終究是政黨偏好,傾向於國民黨者對於連勝文的支持率為 0.69,傾向民進黨者對柯文哲的支持率則為 0.83。至於自稱中立與傾向其他政黨 (包含台聯、親民黨、新黨、無黨聯盟、綠黨與拒答) 者當中,20-29歲的年輕人有很大的比例的支持柯文哲 (0.66),30歲以上的人則依據祖籍、性別的不同對於連勝文、柯文哲、沈富雄各有所好。有趣的是30歲以上、祖籍為閩南、客家的選民中,柯文哲顯然更受到男性支持 (0.54);同樣在30歲以上、祖籍為外省、其他的族群中,連勝文的支持率為34%。至於選民的教育程度、居住地區等訊息屬於相對次要的影響因子(雖然說是次要因子,但仍影響了一成以上的選票),則能顯示諸如:1. 連、柯的鐵票族群細目;2. 沈富雄從連、柯二人手中轉移的潛在選票族群;以及 3. 未表態選民的特徵等訊息。為了不讓決策樹解釋過於冗長難懂,在此保留那些複雜的細節。

回到我想討論的主軸,資料科學有什麼潛力來幫助選舉策略規劃?根據我日前在政治大學談到資料科學與媒體分析的概述:資料科學係指針對特定問題 (在此指某種選舉方針) 規劃資料的收集、萃取、建模、再提供決策的一門學問。再講深入一點,訓練有素的資料科學家能夠針對問題規劃出:1. 該蒐集那些資料、如何蒐集正確的資料; 2. 從幾百筆、幾萬筆、幾千萬筆資料中進行整理、剖析; 3. 透過統計建模從大量的資料中發現洞見,進而提供決策方針。依此定義,資料科學家自然有助於選戰團隊的策略規劃。譬如偵測出各種游移選民的特徵與偏好、鞏固票倉的策略、競選行程路線最佳化…等等,都能夠讓資料科學家佔有一席之地。

對於資料科學家養成內容感興趣的讀者,請參考中研院資訊科學所陳昇瑋老師的專訪。此外,如果想進一步接觸資料科學養成課程的同好近期 TW.R 社群展開了一系列免費的資料科學上手課程,詳見TW.R 臉書頁面以及活動meetup

以統計人的觀點談 Big Data

By | Big data, Data Science | 5 Comments

六月初偕同御言堂總經理劉嘉凱 (CK) 先生以及 Etu 負責人蔣居裕 (Fred) 代表 Data Science Program (DSP) 到交大統計所演講的時候,跟所長黃冠華教授聊到統計所與資訊學院合作開設巨量資料分析學分學程印證了以下想法。

統計是從複雜數據中萃取出有用訊息的學問,在分析巨量資料 (big data) 的過程中,理當扮演舉足輕重的角色。然而,傳統的統計學系訓練學生的方式著重在統計工具的開發與應用上,這並不足以勝任所謂的巨量資料分析。

隨著巨量資料這個議題逐漸火熱,一個新的科學領域:資料科學 (data science) 也隨之而生,相對於統計學專注於分析方法之上,資料科學強調的是以資料解決問題的整體流程,即

1. 在該領域有深厚的專業知識,能夠將欲解決的問題以科學建模來表達。

2. 具備足夠的電腦知識與程式能力,能夠高效率的蒐集、清理、管理巨量資料。

3. 對統計方法有廣泛的瞭解,能夠快速的選用適當的統計方法,甚至是開發新的統計方法來分析資料。

4. 綜合以上三者,能夠以非技術性的語言 (譬如:資料/指標視覺化) 來闡釋分析結果,達成有效率的溝通。

 

資料科學強調整個流程,統計學則強調分析 (Model) 的部分

 

就筆者的認知,統計學的本質和現在所謂的資料科學並無不同。然而,從幾乎所有統計教材都會引用的鳶尾花資料集 (iris data) 當作範例就可以發現,統計人太習慣於從某些領域的提問者中聽取問題、收取已經整理好的資料集 (data frame, 諸如 .txt、.csv 檔),然後再「開始做統計」。什麼時候開始,統計人自詡只需要紙筆與電腦就可以做研究,卻忘了在統計界備受尊崇的 R. A. Fisher 爵士是在農業試驗所中發展出變異數分析、實驗設計法、最大概似估計…。

或許對於一個專精於統計方法的統計人而言,這種習慣並無不妥。但是在現今巨量資料的浪潮上,到處充斥著結構化、半結構化與非結構化的資料 (詳見 Fred 豢養的雲中象)。這類資料跟以往統計教科書裡面經由篩選與處理後的資料完全不同。以企業內部的結構化資料為例,當企業負責人抱著 SQL Database 或 Data Warehouse 裡面滿滿的資料來請統計專家做問題諮詢時,該怎麼回應? 如果是非結構化的圖檔、影像檔,統計專家又該怎麼回應? 就像林禎舜師兄在MLDM Monday演講中提到的一個概念:就現今以資料解決問題的話語權而言,(相對於資訊科學) 統計學的話語權是逐漸式微的 (因為統計人無法處理第一線的資料)。

我的經驗是統計人要拋開傳統教科書對於 data 就是一個data frame 的認知,瞭解 data 的原貌是真實世界的一種記錄方式,它可以是數字、文字、聲音、影像、氣味、建築物…。真真切切的去貼近真實世界、去貼近第一手資料,用最直覺的方式體會所知的統計方法,就會發現這些方法的精神其實可以應用在各式各樣的資料上。

下一篇,將會具體的談到統計人進入Big data / Data science 的建議。

服貿事件 X 資料科學

By | Data Science | 12 Comments

近期服貿議題越演越烈,自318學生佔領國會,324 學生攻佔行政院與強制驅離事件發生後。我以為身為一個統計人,應該用自己的專長來關心這個議題。有鑑於此,我問自己一個問題:抗議現場的情況與各家媒體報導的真實性為何

事實上,討論真實性這種虛無飄渺的概念並不容易,所以我退而求其次考慮比較能夠量化的問題,即報導之間的關聯性

有了這個想法之後,我蒐集了g0v.today提供的現場文字轉播資料,學生族群常用的PTT服貿版資料,以及幾家新聞的報導資料進行初步分析,3/25號晚上在臉書上發布了以下這張實驗性分析圖,並且徵求夥伴幫忙擷取各家媒體更完整的服貿報導資料。

 

這兩天,感謝很多人熱心的幫忙。無論是資料的提供、文本挖掘技術的交流還是媒體分析經驗的分享等等 (感謝Ronny, Marsan, 文心, Toley and 家齊)。我用更嚴謹的方法得到了以下關聯性分析結果,

服貿事件報導關係圖
先說圖怎麼看,曲線的粗細表示報導來源之間的相關性強度。再說我的主要發現:

  1. 蘋果日報與所有報導來源都有高度的關聯性
  2. 報導來源可以分成左右兩群,右半邊是一般的媒體報導,左半邊則是蘋果日報與民間報導。
  3. 儘管PTT與現場文字轉播的關聯性在所有報導來源中是最高的。但是,PTT與各大新聞媒體的關聯性都偏低。

至於分析方法,簡單來說就是以關鍵字找相似度。我用R當作主要分析工具,參考家齊與嘉葳參與Taiwan R user groupMLDM Monday meetup關於文本挖掘的演講 (1 & 2) 進行文本分析,分析出各家媒體報導的關鍵字詞頻,再利用我做生物統計最熟悉的相似度指標來計算各家報導的關聯性。

最後,我是打算用作研究的態度來玩這個題目。所以必須談談現在遇到的困難之處,希望有人能給點意見。最主要的困難點在於:「現場文字播報忠實的呈現現場結果,但相較一般新聞報導而言,有口語化過度的問題」。口語化的問題必然與媒體使用的文字有所不同,這個效應與媒體選擇性報導的差異混淆在一起。解決的辦法目前想嘗試:

  1. 確實移除口語化關鍵字之後,再計算相似度 (部分完成)
  2. 加入民間媒體進行分析,ex: 台大新聞E論壇 (周末動工)

對於上述分析有問題,或是我的後續研究有所建議者,不吝指教,謝謝。

統計指標與謊言

By | Data Science | 13 Comments

美國著名文豪馬克‧吐溫留下一段經典名句:「謊言有三種:謊言、該死的謊言與統計數字 (There are three kinds of lies: lies, damned lies, and statistics.)。」目的在於諷刺那些使用統計數據支持卻毫無說服力的報告,以及貶低反對立場的統計結論。我想要用一個發生在台灣的真實案例來呼應馬克‧吐溫的哲言。

以下是2012年3月27日自由時報的頭條新聞,主要是說明2010年度最窮的5%家庭平均年所得僅4.6萬元,對比最富的5%家庭平均年所得429.4萬元,差距達到93倍,比去年的75倍差距來得更高。

自由時報-貧富差距飆至93倍 歷史新高 http://www.libertytimes.com.tw/2012/new/mar/27/today-t3.htm

自由時報-貧富差距飆至93倍 歷史新高 http://www.libertytimes.com.tw/2012/new/mar/27/today-t3.htm

再看一則當時經建會主委尹啟銘先生的文章,時間是在上一則新聞過後的兩天 (3/29) 。主要是在闡述國際上常用的是五等分法,即最窮與最富的20%來比較,得貧富差距為6.19倍,相比去年的6.34倍來得低。至於使用最窮與最富的5%來衡量貧富差距(二十等分法)在國際上缺乏理論的根據和無公信力作基礎,因此國際上幾乎無人採用。

尹啟銘-讓國人正確了解當前貧富差距, http://www.ndc.gov.tw/m1.aspx?sNo=0016735

尹啟銘-讓國人正確了解當前貧富差距, http://www.ndc.gov.tw/m1.aspx?sNo=0016735

事實上,這種爭論每年都會登上新聞版面,譬如自由時報2013/06/10的頭版新聞

自由時報-最富5%VS.最窮5% 所得差距逾96倍 http://www.libertytimes.com.tw/2013/new/jun/10/today-t2.htm

自由時報-最富5%VS.最窮5% 所得差距逾96倍 http://www.libertytimes.com.tw/2013/new/jun/10/today-t2.htm

再如TVBS在2014/01/09的影音版新聞

貧富差距擴大? 逾9成民眾:嚴重!http://news.tvbs.com.tw/entry/517145

貧富差距擴大? 逾9成民眾:嚴重!http://news.tvbs.com.tw/entry/517145


平平都是相同來源的每戶年平均所得資料,究竟怎麼一回事?如何從這種裡用統計指標 (statistical index) 各說各話的情勢中明辨是非,是我所關心的問題。
從我整理自上述新聞以及官方公佈的家庭收支調查報告勉強可以看出一點端倪。

年度(萬元)94年95年96年97年98年99年100年
最低5%7.26.97.26.95.14.64.8
最低20%29.830.431.230.428.228.929.6
最高20%180183187184179187183
最高5%397402435451383432464

看得出來嗎?除了2009年 (民國98年) 國際金融危機之外,最低20%與最高20%的家庭收入2005年以來大致上並無太大的改變。但是最低5%在2009年之後明顯的下降,最高5%則有明顯的上升趨勢。

最後,我參考美國每戶收入直方圖,再根據二十等分位的統計指標來回推台灣在2005與2011年的每戶年平均收入分布圖。先看下圖的右半部 (富人部分),可以發現藍色 (2011年) 的圖形的右邊拖著一條比紅色 (2005年) 圖形要高的尾巴;再看左半部 (窮人部分),雖然有一點不明顯,不過還是可以發現藍色比紅色圖形更靠左邊。與其追究政府官員還是新聞報導的統計指標孰是孰非,我以為透過這張分布圖來回答更加明確。這邊用統計人的角度murmur一下,有關單位不要只公布統計指標,Data Open吧。

台灣每戶年平均收入猜測

台灣每戶年平均收入猜測

我寫這篇文章的主要目的,不在於討論台灣社會貧富差距 (這類的討論真的很多,光是用幾等分法來衡量貧富差距就吵不完了),而是在於呼應馬克‧吐溫的哲言。要知道,同樣的資料集可以產生各種不同的統計指標,每一種統計指標都有獨特的意義以及適用的時機。統計指標並沒有好壞之分,可惡的是因為立場的不同,而使用特定指標來做為宣傳工作的壞蛋

資料科學之我見

By | Data Science | No Comments

任何時代都有資料科學的問題,最早的資料科學可以追溯到統治者在處理軍役戶政以及農業畜牧的問題上,經典的例子就是人口調查農產品改良試驗。 接著數據分析被應用到工業界中,譬如提高產能與改善良率的統計方法。同時,經濟學、社會學、生命科學…也開始透過統計方法來描述現象、驗證假說。近來計算 機科學發展成熟,資料儲存的成本降低,從大數據中萃取有用資訊的演算技術逐漸受到重視,這種從大數據中尋找挖掘可供決策的規則就是所謂的資料探勘 (Data mining)。事實上,從古到今資料科學的本質並沒有不同,改變的只是因應人類活動型態的轉變,使得數據的收集方式及其分析方法跟著轉變罷了。現在Big Data很熱門,卻也陷入Big的迷思,忘了資料科學的本質其實是在Data上。

談到Data,必須先說明資料如何收集。一般來說可以分成top- down與bottom-up兩種。所謂的top-down係指企業主在資料收集前,有既定的問題想要解答,譬如某樂利杯咖啡的企業想要訂定飲品的優惠行 銷策略,這時候必須透過收集各個分店每種飲品在各種時間與季節的銷售數據,甚至是特殊優惠活動時飲品的銷售記錄等等資料,進行數據分析以回答問題。另一種 bottom-up是從既有資料中尋找規則,譬如從前述飲品的銷售數據中,歸納出那些飲品組合最受到消費者喜愛,讓企業達到飲品事先推薦、飲品銷售預測等 等目的。當然,資料的收集並不侷限是top-down或是bottom-up,而是兩者上上下下的循環,藉由不斷的調整為企業創造最大的利益。以上例子, 可以被應用在一間小店上,也可以用在全台展店數百家的企業上,甚至可以用在全球五大洲擁有數千間連鎖分店的企業之上。對於資料科學而言,無論資料規模的大 小,透過Data來解決問題的本質是始終不變的。差別僅在於時代的進步,資料收集的方式比以往方便也更加多元。當然相對於可以在中小規模的數據上使用的統 計方法,套到大數據時會有運算效率不彰的問題,但我認為這是技術上的問題,並不影響基本的統計思維。

data-science-word-could

data science word cloud, made by Marina Yuan

把問題收斂,如果企業主想要利用Data來 (無論是Big Data, Middle Data 還是 Small Data) 提升企業的營運,該怎麼做?第一步多半是想找一位精通資料科學的專業人才吧。但是當他們想要這麼做時,卻發現找不到這種人才。真的是這樣嗎?

我以為資料科學基本的流程是這樣子的:

  1. 列出企業想要透過Data解決的問題
  2. 記錄所有可能有助於找出答案的Data
  3. 從Data中萃取出規則以回答問題

每段流程都是獨門的學問,能夠同時精通三者的人才真的是少之又少,能夠識別這種人才的企業更是寥寥無幾。何不從上述三段流程各別尋找對應的人才呢? 企業主需要的可能是一位資料科學專家,也可以是一個實力堅強的資料科學團隊。從具有實務經驗的人才庫中尋找第一階段的人選;從具有資料倉儲經驗的人才庫中 尋找第二階段的人選;再從具備資料分析能力的人才庫中尋找第三階段的人選。而我所參與的 Data Science Program (DSP) 課程設計的目標,除了各自培養三個階段的人才之外,同時也注重這三種人才的交流與整合。 其中DSP團訓班課 程設計的目的就是把這三種人才放在一個團隊裡面,透過各種資料科學面向的課程以及team project的實戰方式,整合出一個完整的資料科學團隊。再補充兩個概念。第一,上述三段流程並不完全是由上至下來執行,而是需要團隊成員彼此不斷的交 流與溝通才能成就出良好的分析結果。第二,已經具備上述三種之中任一種職能的人,透過團訓的過程培養第二、第三種職能並不困難。

總之,我想要強調的有兩點:1. 現階段的資料科學正處於Big Data的浪潮上,Big的確是當前資料的主要特徵,但是核心主角仍然落在Data上,透過數據的深度分析,將數據轉化成可供企業決策的資訊與知識,才是 資料科學中心思想。2. 資料科學這門領域既深且廣,能完全精通此道者無疑是萬中選一的逸才。不過,若能透過資料科學團隊的合作方式,也不失為一種降低資料科學門檻的方法。