Customer profile

1 Giới thiệu

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

2 Ứng dụng và thực hành

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