Data Science: My Learning Journey




Data scientists, Harvard Business Review 稱之為21世紀最性感的工作(The Sexiest Job of the 21st Century), 無疑是現在最熱門的專業。 在真正踏入此領域前, 其實最先接觸到的, 是大數據 – Big Data. 精確一點來說, 應該是Hadoop. 那是2012年的秋冬。 當時手機APP熱潮剛吹進台灣, 學習iOSobjective-C是那時軟體界的主流, 然而真正吸引我的, 卻是當時剛入手的一本Hadoop書籍。


From Oracle Database to System Trading


一直以來對於數據分析都有著濃厚的興趣。從最早學會Java開始,就試著寫出一套投資分析系統, 將投資書上寫的基本財務分析和技術分析implement到系統上;寫了幾年Java後轉投入Oracle Database領域, 也因為當時相信, 能了解更多的資料庫技術, 就能擁有更強的數據分析能力。多年的工作經歷印證了這個決定的正確性。因為對於資料的掌握度高和對數字的高敏感性, 因此能在開發系統的過程中,累積了厚實的金融業產業know-how, 並且在過程中,享受在學生時期書本上讀到的財務金融理論知識轉化成實際商業應用的充實感。 只是, 這一切的過程, 卻和我最感興趣的數據分析能力, 似乎完全溝不上邊。在Data WarehouseBusiness IntelligenceData Mining這些技術Buzzword盛行的時代, 因為所處公司完全沒有計畫建置這樣系統的情況下, 所以沒有機會/時間去接觸相關知識和軟體(Cognos, SAS, Oracle Data Warehouse)

2010, 程式交易的風潮吹入台灣, 當時study的不是主流的TradeStation, 而是Wealth Lab這套軟體工具, 相關的研究結果, 也在那時寫下了這篇文章: 交易策略最佳化. 在沒有相關知識和經驗的情況下, 當時研究的過程也涵蓋了預測模型建立流程中三個重要的point:
1.      Cross validation: 將資料切分成訓練數據(Train Set)和測試數據(Test Set)
2.      Parameter tuning: 即文章中進行的均線最佳化
3.      Performance Matrix: 績效衡量指標的挑選, 包含了Sharpe Ratio, APR(年化報酬),以及WLScore, 並做了統計檢定

然而程式交易軟體畢竟是個利用技術分析建置金融交易的工具”, 學習這套工具,仍是無法踏入真正的數量分析殿堂

Hadoop Ecosystem & Quantitative analysis
2012, Big Data風潮初起, 抱著Hadoop的書籍, 我一心以為找到了進入數據分析領域的入門磚, 未料, Hadoop還是和我長期以來學習的資訊技術一樣, 是個技術工具. 學習Hadoop或其Ecosystem中的其他技術 – MapReduce, HDFS, Pig, Mahout, Hive等等等等, 都無法讓我一窺數據分析的門徑。



回首當時, 心中對所謂的數據分析”, 到底是一個甚麼樣的領域知識, 要學習甚麼樣的專業, 甚至究竟有沒這種東西的存在, 都不確定。當時對於量化分析專業的了解有二: 保險業界的精算師, 和財務工程的Quant (請參閱這篇文章:), 這兩個量化分析的佼佼者, 已經在業界叱吒風雲許多年, 絕對是含金量極高的職業, 當然他們的進入門檻也極高, 無論是時間或是金錢上的投資。不過這兩者的知識技能和我過往的技術背景可說是毫無相關, 若踏入此領域對當時的我來說, 幾乎可說是完全拋棄過往的累積, 從零開始進入一個新的領域, 加上相關知識的取得也十分的困難; 這樣的方向並不是我想要的, 我相信原本的技術能力價值一定會有一個可以發展的方向施展, Hadoop的出現給了我一絲光亮。Hadoop Ecosystem所提供的, 是一個管理巨量數據的技術, 但是如何在一堆雜亂的數據中, 發現數據分佈的pattern, 或是數據與數據間的關聯性, 或是歸類/彙整既有數據以產生預測的模式等等, 都不是閱讀Hadoop文件書本可以學習了解到的。那時的我直覺感到, 目前看到的Hadoop技術仍只是個開始, 隨著Big Data的盛行, 一定會有個數據分析的專業領域湧現。

沒過多久, Data Science就映入了我的眼簾。


What is Data Science?
擷取幾個定義說明From Wikipedia:
1.      Data Science is an interdisciplinary field about processes and systems to extract knowledge or insights from large volumes of data…
2.      Data science employs techniques and theories drawn from many fields within the broad areas of mathematics, statistics, chemometrics, information science, and computer science…
3.      Data science utilizes data preparation, statistics, predictive modeling and machine learning to investigate problems in various domains…

首先, Data Science的專業技能談起. Drew Conway, CEO and founder of Alluvium, 繪製了下面這個Venn diagram, 相當完整的描述了Data scientists必須具備的三項專業領域。



為何同時具備這三樣專業的人才會是未來最搶手的職業? 讓我們從一個數字加總的例子, 一窺Data Science的世界。

Big Data, Hadoop, and Data Science

Question: 1+2+…+100

要回答上面的這個問題, 有許多的方法。
一般人可以用電腦叫出小算盤/Excel(或是手機叫出計算機), 一個一個按1+2+…把結果算出來。程式設計師會寫個簡單的Loop把結果算出來, 而這樣的方式, 當問題改成…+5,000,000或更大的數字時, 我們都是按一個enter就可以算出結果(而不是按計算機按到手抽筋)
然而隨著數字加總越來越龐大, 例如加總到五千兆, 程式設計師也會碰到計算效能的瓶頸, 之前不到1秒鐘就可以算出結果的程式, 可能跑了1分多鐘都還沒有回應, 這時, 我們需要一個與以往不一樣可以處理更大數字的系統架構, 來幫助程式能更快的運算出結果, , 就類似Hadoop會在Big Data的時代串出頭的原因: 現在我們所面對的資料量是過去的好幾百倍, 我們需要一個不一樣的資訊系統架構來儲存、擷取和運算這些資料。

如果小時候學過所謂的[梯形公式], 那麼我們就可以用一個更簡單且更快的方法, 解決加總的問題:
 [(1st 數字+最後一個數字)*數量]/2

Data Science提供的就如同類似上述的[梯形公式], 讓我們能在龐大的資料數據中, 透過Algorisms, Formulas, Models… ,等知識分析拆解, 而後獲取我們所需的有意義的資訊: 可能是數據之間的關聯性, 數據分佈的Pattern, 數據組成的規則與樣貌等等等。人工智慧其實是人類試圖透過程式邏輯與模型公式等方式, 讓機器能仿造大腦運作的方式進行分析。所謂的機器學習和預測, 其實就如同大腦運用我們過往的經驗、知識, 將當下所取得的資訊進行歸納和分類後, 所得出的反應結果。例如股票投資, 我們知道, 如果某一公司的營收大幅成長, 毛利率,營益率,獲利率均比上季和上年度接大幅躍昇100%以上; 然後根據過往的很多檔飆股的股價技術分析發現, 只要短中長期均線糾結突破後, 之後必有一大段飆漲行情。於是大腦根據這些”Know-how”判定, 我們現在發現一支股票完全符合上列情況, 所以大腦預測這支股票將要大漲, 於是我們就打開了下單APP買了100(假設我們都沒有了恐懼和貪婪的情緒)


Predictive Analytics & Machine Learning
若將上述的條件寫入程式中, 同樣的系統只要找到一樣的條件時, 機器一樣能做出同樣的預測”, 然後給予我們建議買入此檔股票, 而機器和人腦的差別是, 他能處理更為巨量的資料和條件。我們不僅可以用機器在台灣上市櫃幾千檔股票中搜尋,分析找出符合條件的股票, 我們甚至可以全世界上百萬檔股票中搜尋和分析, 而且是每天、無時無刻都不須停止休息, 然後分析的參數可以不僅限於上述的幾個條件, 我們可以加入更多的參數去分析和挑選。現在的機器學習(Machine Learning)應用已經不僅僅停留在分析, 如同上述股票下單的例子, 再進一步, 我們可以寫入程式當機器發現這樣的標的後, 就連結到券商系統進行下單動作。

大腦基礎的預測智慧來自於尋找模式和規則, 然後隨著更多經驗的累積和知識獲得的學習過程, ”預測智慧也隨之強化, 現在, 我們將這項能力賦予了機器, 讓機器來幫助我們在巨量的數據汪洋中, “發現模式和規則, 進而預測出過往人類單純使用大腦而無法預測到的事情。於是在我看來, Data Mining或是Machine Learning的技術過程(稱之為Model Training), 其實是一個發現(Discover)或是彙整(Summarize)的動作, 然後我們使用training結果所發現/彙整的模式和規則, 將未知的事物和已知的事物進行mapping 以進行預測(predict)行為。如上述股票買進的分析過程一樣,根據過往的經驗, 這樣的情況發生下, 股票都會大漲(Model Training), 因此當我們找到類似的條件(mapping), 但是股票尚未起漲的標的時, 我們就會預測(predict)這支股票會上漲因而進行買入的動作。因此, 模型(Models)或是演算法(Algorisms)是支援系統的工具, 而非最後的結果或決策。一個好的模型設計, 是在明確的績效目標下, 對於各項決策選擇提供好與壞之量化評估,並可依此進行最佳化和統計檢驗其產出效力。


再之後的文章中, 將會有大量的預測分析(Predictive Analytics)模型和機器學習演算法的介紹, 以及詳細的模型解說和coding samples, 從基礎的Regression Model, Spline, Tree ModelRandom Forest, Boosting, 以及 Support Vector MachineCluster. 透過Kaggle.com 或是各種Open Data資料集, 分析各種Model的預測能力,和實作方式, 如資料前置處理(data preparation), 參數選擇與調校(Parameter optimization), 與績效指標的選定和衡量(Performance Matrix and Measures).


IoT, ubiquitous computing, and The era of human-machine collaboration

隨著物聯網(IoT)的發展, 我們即將進入一個所有的物品, 從手機、電視、冰箱, 到你下訂單的每一個商品, 未來甚至汽車,身上穿的衣服,腳上穿的鞋子,腳下踩的路面等, 全部都將連上網際網路, 然後留下數據足跡, 我們面對會是一個無所不在的運算(ubiquitous computing)的新世界- 所有的物品都可以產生數據, 所有的物品都擁有運算能力。在這新世界裡, 我們產生無數的資訊不斷的餵食”Internet這巨大的機器, 我們也同時可以透過Internet擷取這些資訊去餵食我們各自開發出來的系統。可以想見的是, 將來各行業勢必都將成為Data-Driven Business, 誰能最有效率的吸收和消化巨量數據, 進而產出有價值的產品或服務, 它就會是最有競爭力的領導企業。而能產生/發展出最強大的競爭模式的, 勢必是能夠找出人類和機器共同合作最佳模式的團隊。人機合作是Big Data時代最佳模式這一觀點,是我從幾篇Ted的演講中得到的啟發和結論。在此分享一篇:   https://youtu.be/ltelQ3iKybU

R and Python (and SAS, Java) – which tool should I learn?
在資訊界, 每當踏入某一領域時, 碰到的第一件事情就是該選擇甚麼技術。從早期作業系統 – Windows v.s. Linux (and Unix…), 到軟體開發程式 – Java v.s. .Net (and PHP…), 資料庫 – Oracle v.s. MS SQL (and DB2, MySQL…), 到近來的手機開發 – iOS v.s. Android. 技術的百家爭鳴一直就是資訊界的常態。因此, 究竟該選擇何種語言, 該學習多少技術, 其實完全看個人的需求和時間而定。Data Science所需的軟體技術與比較, 網路上google一下就有很多文章寫的很詳盡(分享一篇infographic: 
http://i0.wp.com/www.analyticsvidhya.com/wp-content/uploads/2015/05/pyhon-vs-sas-vs-s_00000-copy.jpg ), 這篇文章主要整理個人收集到的資訊和分享學習研究過程所得到的經驗。

2013年初期左右剛進入Data Science領域時, 對於該學習甚麼語言仍是資訊紛雜, 不過到了現在, RPython已經是Data Science的主流, 兩者都提供強大的資料分析FunctionsMachine Learning模組。

by J.D.