Decision Tree ra đời từ những năm 1975 từ một tác giả có tên Ross Quinlan. Decision Tree là tiền đề để ra đời những phương pháp dự báo theo dòng Tree-based method như là: Random Forest, Bagging, AdaBoost, Gradient Boosting Machine (GBM) và mới nhất là Extreme Gradient Boosting (XGBoost) - thuật toán đang làm mưa làm gió trong các đấu trường Predictive Modeling Competitive trong khoảng 3 năm trở lại đây.
Một Decision Tree được bao gồm 4 thành phần như sau:
Root Node: Nhánh chia đầu tiên của Decision Tree
Internal Node: Các nhánh chia tiếp theo của Decision Tree
Leaf Node: Các nhánh cuối cùng của một quyết định
Dept: số tầng của cây
Việc phân chia các quyết định của Decision Tree được quyết định dựa trên các hệ số sao cho việc phân chia nhánh là tốt nhất:
Gini Index (đối với biến factor)
Variance (đối với biến numeric)
Để tránh việc overfitting trong xây dựng mô hình, ta phải sử dụng một phương pháp là prune (tỉa cành) để một cây quyết định mang tính khái quát cao hơn
Data được sử dụng là dữ liệu nói về thảm họa Titanic trong lịch sử, ghi nhận về 891 khách hàng có trên tàu bao gồm các biến như sau:
PassengerId: mỗi khách hàng sẽ có 1 ID trải dài từ 1 đến 891
Survived: 1 là sống sót sau thảm họa, 0 là đã chết
Pclass: hạng vé
Name: tên
Sex: giới tính
Age: tuổi
SibSp: số họ hàng có trên tàu
load(file = "./data.Rda")
data %>% head() %>% kable()
PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | 3 | Braund, Mr. Owen Harris | male | 22 | 1 | 0 | A/5 21171 | 7.2500 | S | |
2 | 1 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Thayer) | female | 38 | 1 | 0 | PC 17599 | 71.2833 | C85 | C |
3 | 1 | 3 | Heikkinen, Miss. Laina | female | 26 | 0 | 0 | STON/O2. 3101282 | 7.9250 | S | |
4 | 1 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35 | 1 | 0 | 113803 | 53.1000 | C123 | S |
5 | 0 | 3 | Allen, Mr. William Henry | male | 35 | 0 | 0 | 373450 | 8.0500 | S | |
6 | 0 | 3 | Moran, Mr. James | male | NA | 0 | 0 | 330877 | 8.4583 | Q |
Plot decision tree:
decision_tree = ctree(Survived ~ Pclass + Sex + Age + SibSp,
data = data)
plot(decision_tree)
Ta có thể thấy như sau:
Phụ nữ ở tầng lớp trung lưu (tức Pclass = 1, 2) thì có tỉ lệ sống sót cao
Độ tuổi trẻ thì tỉ lệ sống sót cao hơn
Càng đông người nhà thì tỉ lệ sống sót thấp hơn