The practical guide to Random Forests – Decision Tree Model Part I
(Using Kaggle’s Titanic Data with R code)



Previously in this series:
 
在上一篇Post的結尾, 我們建立了一個如下的預測模型邏輯:
test$Survived <- 0
test$Survived[test$Sex == 'female'] <- 1
test$Survived[test$Sex == 'female' & test$Pclass == 3 & test$Fare >= 20] <- 0

我們可以將此程式碼的邏輯結構, 整理成一段IF-then/ELSE的分析流程:

     IF 性別為女性 THEN
           IF Pclass 3 THEN
                IF 船票費用 高於 $20 THEN
                     預測:生還
     ELSE
           預測:未生還

     這樣以一系列IF/ELSE邏輯判斷所組合而成的模型架構, 即是Decision Tree模型的基本概念。


繼續閱讀...

The practical guide to Random Forests – Big Data Exploration Part II
(Using Kaggle’s Titanic Data with R code)


Photo source: http://www.pageresource.com/wallpapers/wallpaper/fantasy-solaris-sea-moon.jpg

Part I的連結在此
上一篇文章介紹了R data.table Query功能,這篇將繼續完成data.table的介紹,最後會利用data.table進行分析和建立預測模型。

Summarizing Data Within Groups


data.table的優勢在於data aggregation能力, 並且可以和R的繪圖package – ggplot2整合, 圖像化數據結果。結合data.tableggplot2兩個package, 讓我們擁有一個全新的強大數據探勘分析工具。

 

繼續閱讀...

The practical guide to Random Forests – Big Data Exploration Part I
(Using Kaggle’s Titanic Data with R code)


根據全球最大的Data Science競賽平台 Kaggle的數據統計(https://www.import.io/post/how-to-win-a-kaggle-competition/), Random Forests演算法是眾多競賽贏家的終極武器(2015年底後異軍突起的XGboost, 將另外專文介紹)(如果不清楚Kaggle這個網站, 可參考遠見雜誌的這篇報導http://www.gvm.com.tw/Boardcontent_23287.html )。這系列的3Posts, 將透過KaggleTitanic競賽資料(https://www.kaggle.com/c/titanic/data), 詳細介紹Random Forests演算法的原理, 以及建立Random Forests模型的程式撰寫與參數設定。程式範例的內容是參考Kaggle's Titanic Competition 4R tutorials (https://www.kaggle.com/c/titanic/details/new-getting-started-with-r )其中Trevor Stephens的文章整理而成。

首篇Post從所有Data Science競賽或專案的第一步 Data Exploration方法說起。Trevor Stephens原文使用R內建的基礎functionsdata.frame, 進行資料的整理與分析; 我改以R新開發, Big Data的分析運作與效能上大幅提升的package - data.table, 進行數據的探勘, 並透過此篇文章, 讓各位了解data.table的相關操作指令。相信讀完此篇之後, 各位將可以改用data.table進行數據分析工作, 而且隨著數據量的增加, 將越加感受到data.table所帶來的便利與效益。第二篇Post介紹Random Forests的基礎演算法 - CART模型(https://en.wikipedia.org/wiki/Decision_tree_learning ), 最後一篇討論本系列文章的核心技術Random Forests. 所有的內容都輔以R原始碼並附上執行結果畫面, 各位可以開啟R console介面一併操作驗證。




繼續閱讀...

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, 並做了統計檢定

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


繼續閱讀...

Web Scraping in Python (Crawl data from YAHOO! Stock)



在大數據專案中, 通常會面對兩種資料來源: 一個是公司內部系統的數據,一個是公司外部的資料, 能有效地整合分析內外兩類資訊源, 就能夠開發出高價值的Big data產品或系統, 此系統挖掘公司內隱的核心數據競爭力, 並以此反饋當前市場的熱門需求, 甚或建置潛在趨勢的進攻策略。當前最大最豐富的外部資源, 無庸置疑就是Internet, Web scraping就是挖取這個大金礦的軟體技術。

如果你搜尋“Web scraping”這個領域, 會發現其他像是 web crawling”, “Data Scraping”, “scraper”, “web crawler”, 甚至是”bot”等技術字眼, 這些字彙轉換為中文大略都用網路爬蟲軟體一以蓋之; 簡言之, “Web scraping”這領域是在鑽研如何從網際網路上, 收集擷取資料的軟體技術, 而目前Internet上資訊價值含金量最高的主要就是web網站, 因此我們要資料當然就是針對web下手。

學習Web scraping對於個人來說也是極具有效益的。當擁有Web scraping技術, 所有能透過瀏覽器看到的資料, 都可以回自己的電腦做進一步的分析, 這方面應用在一般投資人的世界早已行之多年; 遵從基本分析的投資人, 運用Excel等工具或其他的程式語言, 定期從公開觀測站抓取每月營收或財務報表數據, 因此一般投資大眾, 即使沒有如機構法人分析師擁有公司內部的資料庫完整財務資訊, 仍能進行專業的股票分析。



繼續閱讀...

The Summary of Statistical Distribution (with R code)


在研讀許多Data science相關資訊文章時, 常會看到各種distribution做為模型設計的資料假設或基礎, 由於自己之前在研究時, 常常要google或四處翻閱統計書籍, 確認distribution相關特性, 十分的費工, 因此這篇文章將整理一些常用的distribution, 以及對應的參數和R function, 這樣以後需要distribution資訊, 只要回到這篇Post就能一目了然, 無需再到處查詢google了。這篇文章只總結各項關鍵資訊, 以供快速理解和取得distribution特性, 若想深入了解相關統計知識, 請再自行翻閱其他統計學課本。

R function and Naming convention

R提供大約20個內建的density/distribution function:




R針對各distribution均提供對應的function for各種統計需求, 其命名的規則為:
n   dDist, {dnorm(1)}:回傳the height of the probability density function(PDF); 也就是the height of the probability distributionData point(數據點x=1)
n   pDist, {pnorm(1)}: 回傳the cumulative density/distribution function(CDF); 回傳低於(below, 左方)給定值”x=1”的區域面積(area); 設定參數lower.tail=F (pnorm(1,lower.tail=F)), 可取得右方面積(可以視之為p-value, 不需要再查表了!)
n   qDist, {qnorm(0.75)}:the quantile function; 範例為回傳75th quantilesx數值(one-tailed and upper side)
n   rDist, {rnorm(10)}:產生(10)符合該distribution的隨機數字

(文章未完, 編輯撰寫中...)



by J.D.  

繼續閱讀...

Regression Model – The first predictive modeling technique to learn
(with R codes)


翻開所有預測分析或機器學習的書籍, 或是數據分析的課程, 第一個遇到的就是回歸分析。簡單的線性回歸淺顯易懂, 是切入分析預測領域非常好的入門磚;隨著學習的模型技術越來越多,且越來越Fancy, 我們可以發現他們不過是線性回歸的延伸或通用化(extensions or generalizations of linear regression)

What is Regression Analysis?
回歸分析(Regression Analysis)是一種相當實用且被廣泛運用的統計分析技術, 用以檢視我們想要預測的標的(dependent variable - Y), 與我們所擁有的數據(independent variable (s)- X(s) )之間, 是否具有某種關係(relationship)

Why do we use Regression Analysis?
一般說來, 我們可以利用回歸分析, 檢視/回答下列數據預測的項目。以廣告效果是否影響產品銷量為例:
        1.[增加廣告預算][銷量增加]是否存在關係(relationship)?
        2.若有關係(relationship), 其強度(Strong)有多高?
        3.廣告預算花費在何種媒體通路上, 貢獻最多的[銷量增加]?
        4. 廣告預算花費與業績的預測分析,其準確率有多高?

What are the types of Regressions?
l   Linear Regression
l   Logistic Regression
l   Polynomial Regression
l   Stepwise Regression
l   Ridge Regression
l   Lasso Regression
l   ElasticNet Regression
Regression Model這一系列的文章將會一一介紹上列各項模型方法與Rimplement codes. 首先, 我們將從Linear Regression談起。 

(文章未完, 編輯撰寫中...)


by J.D. 

繼續閱讀...