The Practical Guide to the Random Forests - Random Forests Model Part II
(Using Kaggle’s Titanic Data with R code)

Photo source: https://datafloq.com

Previously in this series:

Random Forests

在建立Tree-based models的流程中使用Bagging演算法的Bagging trees模型, 導入了隨機元件(random component)的架構, 大幅改善了模型建立的變異,因而提升了預測績效。然而, Bagging trees模型中每一個tree model彼此之間並非是完全獨立的(independent),因為, 每一個tree model在進行每一次split, 所有資料的欄位變數(original predictors)都會被分析考慮。假設今天訓練資料集, 其欄位變數和response之間的關係(relationship)可以用tree model所建立, 則以此資料數據所產生的每一個bootstrap samples產生之tree model結構將會非常類似(尤其位於tree modeltop nodes); 我們稱此特性為”Tree Correlation”


繼續閱讀...

The Practical Guide to the Random Forests - Random Forests Model Part I
(Using Kaggle’s Titanic Data with R code)

這篇Post是此系列的最後一篇, 我們終於能開始進入Random Forest這個強大的Ensemble技術領域。在所參考程式碼的Trevor Stephens文章中,尚有多出一篇討論Feature EngineeringpostRandom Forest模型介紹之前, 由於這系列Posts重點在於模型架構的闡釋, 所以, 雖然Feature EngineeringData Science分析流程中是一個重要的關鍵 - Feature Engineering的好壞對於模型績效有顯著的影響(feature engineering has been described as “the most important factor” in determining the success or failure of the predictive model), 我還是決定將Feature Engineering這一塊用重點條列的型式先行帶過。各位若有興趣, 可以自行參考Trevor Stephensoriginal post (http://trevorstephens.com/post/73461351896/titanic-getting-started-with-r-part-4-feature)
Feature Engineering這個Topic, 將另行撰寫Posts討論。


繼續閱讀...

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





Previously in this series:


讓我們回到Titanic資料集, 使用上一個Part學到的CART model來進行分析預測。這裡的程式範例一樣參照Trevor Stephens的文章(http://trevorstephens.com/post/72923766261/titanic-getting-started-with-r-part-3-decision ), 採用rpart這個package進行模型建置. rpart代表“Recursive Partitioning and Regression Trees”, 實現(implement)上述所闡述CART模型演算法。

library(rpart)
fit <- rpart(Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked, data=train, method="class")

除了上一篇所提到的四個變數 – Pclass, Sex, AgeFare, Trevor Stephens另加入了三個變數進行模型訓練。3個變數的代表意義如下:

sibsp           Number of Siblings/Spouses Aboard
parch           Number of Parents/Children Aboard
embarked        Port of Embarkation


繼續閱讀...

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

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


繼續閱讀...