All posts by Johnson

Big data 的三種資料分析類型

By | Big data | No Comments

Big data已經熱一陣子了,市面上許多企業紛紛提出各種Big data solutions,究竟這些solutions到底是在解決什麼樣的問題?筆者將近期對於 Big data的觀察心得做一點整理,分享給大家。就資料分析的觀點,筆者認為現今 Big data 面對的問題可以分成三種類型:

 

Type A. Big data 問題跟 Small data 是一樣的

無論資料量級的大小,資料分析重視如何展現資料的特徵。展示特徵的方法首要是對資料進行適當的疏理 (subsetting / summarise),整理出能夠進行資料建模 (modeling) 資料表、具代表意義的指標,或是資料視覺化圖表。儘管資料的問題本質一樣,但是在Big data上,需要分散式資料庫 (distributed database) 上的資料處理工具諸如Hive, impala, teradata …等才能實現。如果想要在R語言的環境下,執行量級較大 (GB層級) 的資料疏理 (Data ETL),可以參考dplyr, data.table, sparkR等套件。

Type B.  Big data 問題等同一大群 Small data 的問題

對於Big data進行分析的資料模型,可以由若干Small data models所組成的元件來表示。在這種情況下,分散式運算 (distributed computing) 是為必要技術。如果想要在R語言的環境下執行平行運算,可以參考pbdMPI, snow, foreach, Rth等套件。

Type C. Big data 問題需要靠特製系統解決

當資料分析模型無法透過分散式運算有效解決計算效率問題,需要經常性/即時性分析整包Big data的問題屬於此類。這需要根據整體資料分析的流程特製化設計解決方案,譬如說推薦系統。如果想在R環境下嘗試輕量資料可以運行的推薦系統演算法,可以參考recommenderlab套件。

這三種資料分析類型,其要求的 Big data 理論、技術、工具不盡相同。如果您是正在尋求所謂Big data solution的企業,筆者建議先檢驗您的資料量級是不是 Big data,接著再思考您面對的資料分析問題是哪一種類型,進而尋求解決方案。

日前一篇對知名資料科學家工具開發專家Hadley Wickham採訪報導中,提到一個有趣的數字,90%的Big data問題屬於Type A,9%的問題屬於Type B,其餘的部分則屬於Type C。姑且不論這數字的精確性,從Data life cycle的觀點,抑或從企業的資料成熟度來看,不妨依循 A -> B -> C 的流程,一步一步尋求解決方案囉。

台北市長負面競選效益分析

By | Data Science | No Comments

為了響應李慕約發起的 「五十天五十個選舉圖表」,我認領了若干張圖表,我的第一張圖就是關於負面競選。

台灣的選舉過程中負面選舉總是媒體主要追逐的焦點,透過社群媒體發布的候選人負面內容以及民調支持度進行台北市長選戰關聯性分析,發現負面消息對於柯文哲與連勝文兩位候選人的支持度有截然不同的影響。約莫選前60-70天 (9/16 – 9/30) 左右,社群媒體上無論是反對連勝文或是反對柯文哲的內容對於兩位候選人的民調支持度影響不大 (不到1個百分點)。近期 (10/1 – 10/16) 而言,負面競選對支持度就有明顯的影響。反對連勝文的內容在社群媒體散發的越多,連勝文的民調支持度越低,此外柯文哲的支持度也會隨之下降,推測批連會使得未決定支持者的游離選民不願意投票有關。當反對柯文哲的言論散發越多時,連柯兩人的支持度都會隨之上升,推測批柯會使得雙方隱性的支持者願意浮上檯面有關。

本次分析的資料來源分為民意調查資料以及臉書使用者資料兩部分。民調資料取自於維基百科,利用LOESS法預測9/16-10/16每一天候選人的民調支持度。臉書資料則是透過林克傳說收集百萬使用者的公開資料,得到支持/反對候選人內容的社群覆蓋率 (即支持/反對內容出現在一個人的塗鴉牆之平均機率)。

原始資料、分析程式、分析結果都公布在我的github上。

台北市長負面競選效益分析

 

資料科學 in 白色巨塔

By | Data Science, Health Care | No Comments

身為一位統計背景的資料科學愛好者,能夠應用所學來回饋社會是多麼興奮的事。日前到高雄參與 Code for Healthcare ─ 以醫療為主題的跨領域 hackathon,正是貢獻所學的機會。這樣的場合參與成員至少包含:高雄氣爆的受災戶、第一線的救災、醫護人員、醫事、醫務管理人員、資料科學家、系統工程師、設計師。

cfh 簡報似顏繪 made by Cloudie

CfH 簡報似顏繪 made by Cloudie

資料科學是一門實實在在的入世學問,理論與技術專精的資料科學家能夠與第一線的 domain experts 進行團隊合作才能完全發揮該學門的精神。前線人員提出他們面臨的真實問題,透過跨領域團隊合作才能夠提出確實的建議。譬如在這兩天的時間中,我所參與的兩個團隊分別提出:

  1. 高高屏地區緊急醫療能量的初步估計模型;
  2. 利用醫務管理平台的數據提出改善現有流程的建議。

已故劇團國寶李國修先生曾提到:「一輩子做好一件事,就功德圓滿」。透過跨領域的交流,讓不同領域的專家能協力合作,如此一來,成就的豈止一件好事?

 

用資料科學迎擊選戰

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 | 6 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. 資料科學這門領域既深且廣,能完全精通此道者無疑是萬中選一的逸才。不過,若能透過資料科學團隊的合作方式,也不失為一種降低資料科學門檻的方法。