Limio— Learn your way
🏆 Đấu trường
Đăng nhậpĐăng ký

Thiết kế và phát triển: @Limio team - Khoa Khoa học và Công nghệ Giáo dục, Đại học Bách Khoa Hà Nội

← Fundamental of Machine Learning

Bạn đang xem thử công khai

Đăng nhập để lưu tiến độ, làm bài tập, thảo luận và nhận phản hồi.

Đăng nhập
Module 2: Core Machine Learning Algorithms

Cây quyết định (Decision Trees)

In / Lưu PDF

Cây quyết định

Cấu trúc

Thành phầnVai trò
Root nodeNút gốc — câu hỏi đầu tiên
Decision nodeNút hỏi điều kiện ở giữa
Leaf nodeNút lá — kết luận cuối cùng

Điểm mạnh lớn nhất: bạn đọc được đường đi dẫn tới mỗi quyết định. Với hồ sơ vay bị từ chối, cây cho biết chính xác điều kiện nào đã loại — thứ mà ngân hàng bắt buộc phải giải thích được cho khách hàng.

Chọn thuộc tính chia nhánh: Gini impurity

Gini = 1 − Σ (pᵢ)²

Gini đo mức "hỗn tạp" của một nhánh:

  • Nhánh có 4 Yes, 0 No → p(Yes) = 1 → Gini = 1 − 1² = 0 (thuần khiết)
  • Nhánh có 3 Yes, 2 No → Gini = 1 − (0.6² + 0.4²) = 0.48
  • Nhánh 50/50 → Gini = 1 − (0.5² + 0.5²) = 0.5 (hỗn tạp nhất)

Thuật toán thử từng thuộc tính, tính Gini có trọng số của các nhánh con, rồi chọn thuộc tính cho Gini nhỏ nhất.

Trong ví dụ duyệt vay ở bài giảng: chia theo age cho Gini = (5/14)(0.48) + (4/14)(0) + (5/14)(0.48) = 0.343.

from sklearn.tree import DecisionTreeClassifier, plot_tree
model = DecisionTreeClassifier(max_depth=4, random_state=100)
model.fit(x_train, y_train)
plot_tree(model, feature_names=x.columns, filled=True)

Điểm yếu chí mạng: rất dễ overfit

Cây không giới hạn độ sâu sẽ chia mãi cho tới khi mỗi lá chỉ còn một mẫu — tức học thuộc lòng. Accuracy trên train đạt 100%, trên test thì tệ.

Cách kiểm soát: max_depth, min_samples_leaf, min_samples_split.

Từ một cây tới cả rừng

Random Forest huấn luyện nhiều cây trên các tập con lấy mẫu có hoàn lại (bootstrapping), rồi lấy biểu quyết đa số. Sai lầm ngẫu nhiên của từng cây triệt tiêu lẫn nhau, nên rừng ổn định hơn hẳn một cây đơn lẻ — đổi lại, mất phần lớn khả năng giải thích.

Lỗi thường gặp nhất

Để cây mọc tự do rồi ngạc nhiên vì accuracy train bằng 100%. Đó không phải mô hình giỏi, đó là bảng tra cứu.