Decision Tree (Cây Quyết Định) Là Gì? Giải Thích Dễ Hiểu Cho Người Mới

Câu trả lời nhanh
Decision Tree (cây quyết định) là thuật toán machine learning dạng cây, chia dữ liệu qua các câu hỏi yes/no tại mỗi node để phân loại hoặc dự đoán. Mỗi lá trên cây là một kết quả. Decision Tree dễ hiểu, không cần chuẩn hóa dữ liệu, nhưng dễ bị overfitting nếu phát triển quá sâu.

Decision Tree hay cây quyết định là một trong những thuật toán machine learning dễ hiểu nhất. Nó hoạt động giống như cách con người ra quyết định trong đời sống: đặt câu hỏi, nhận câu trả lời, rồi đi tiếp theo một nhánh mới. Nếu bạn từng chơi trò “20 câu hỏi” thì bạn đã hiểu Decision Tree hoạt động thế nào rồi.

Decision Tree Là Gì?

Sơ đồ minh họa thuật toán Decision Tree (cây quyết định) trong machine learning
Sơ đồ minh họa thuật toán Decision Tree (cây quyết định) trong machine learning

Decision Tree là thuật toán học máy dạng cây, dùng để phân loại hoặc dự đoán giá trị. Mỗi node trên cây là một câu hỏi yes/no về dữ liệu, mỗi nhánh là câu trả lời, và mỗi lá (leaf) là kết quả cuối cùng.

Ví dụ: bạn muốn quyết định có nên mua một chiếc điện thoại không. Cây sẽ hỏi: “Giá dưới 10 triệu?” Nếu có, hỏi tiếp: “Pin trên 5000mAh?” Nếu có, hỏi tiếp: “Camera trên 50MP?” Nếu tất cả đều yes, kết quả là “Mua”. Nếu bất kỳ câu nào trả lời no, cây đi theo nhánh khác và có thể kết thúc bằng “Không mua”.

Cấu Trúc Của Decision Tree

Một Decision Tree có 4 thành phần chính:

  • Root node (nút gốc): Điểm bắt đầu, chứa toàn bộ dữ liệu. Đây là câu hỏi quan trọng nhất, chia dữ liệu thành hai hoặc nhiều nhóm.
  • Internal node (nút trong): Các câu hỏi tiếp theo sau khi đã chia lần đầu. Mỗi nút chia dữ liệu nhỏ hơn nữa.
  • Branch (nhánh): Đường đi từ nút này sang nút khác, tương ứng với một câu trả lời.
  • Leaf node (nút lá): Kết quả cuối cùng. Không chia thêm nữa. Đây là nhãn phân loại hoặc giá trị dự đoán.

Cây càng sâu (nhiều tầng) thì càng phức tạp. Cây quá sâu dễ bị overfitting, cây quá nông thì chưa học đủ. Việc chọn độ sâu phù hợp là một trong những quyết định quan trọng nhất khi train Decision Tree.

Thuật Toán Nào Tạo Ra Decision Tree?

Decision Tree không tự sinh ra câu hỏi. Nó dùng các thuật toán để chọn câu hỏi tốt nhất tại mỗi bước chia.

Có ba thuật toán phổ biến:

  • ID3: Dùng Information Gain, dựa trên entropy. Thuật toán này chọn câu hỏi làm giảm độ “loạn” của dữ liệu nhiều nhất. Phù hợp với dữ liệu phân loại (category).
  • C4.5: Nâng cấp của ID3, dùng Gain Ratio để khắc phục thiên vị chọn thuộc tính có nhiều giá trị. Xử lý được cả dữ liệu liên tục và thiếu sót.
  • CART (Classification and Regression Trees): Dùng Gini Impurity. Đây là thuật toán mặc định trong scikit-learn. CART tạo cây nhị phân (mỗi nút chỉ chia 2 nhánh), hỗ trợ cả phân loại và hồi quy.

Gini Impurity Là Gì?

Gini Impurity đo độ “sạch” của một nhóm dữ liệu. Nếu một nhóm chứa 100% một nhãn, Gini = 0 (hoàn toàn sạch). Nếu nhóm chứa 50/50 hai nhãn, Gini = 0.5 (loạn nhất).

Thuật toán CART chọn câu hỏi làm giảm Gini Impurity nhiều nhất sau khi chia. Nói cách khác, nó tìm cách tách dữ liệu sao cho mỗi nhóm con càng đồng nhất càng tốt.

Công thức Gini Impurity: Gini = 1 – tổng(p_i^2), trong đó p_i là tỷ lệ mẫu thuộc nhãn i trong nhóm.

Decision Tree Dùng Cho Phân Loại Và Hồi Quy

Decision Tree xử lý được cả hai tác vụ chính của machine learning:

Classification (phân loại): Dự đoán nhãn rời rạc. Ví dụ: email spam hay không spam, khách hàng rời bỏ hay ở lại, khoản vay được duyệt hay từ chối. Leaf node chứa nhãn lớp đa số.

Regression (hồi quy): Dự đoán giá trị liên tục. Ví dụ: giá nhà, doanh thu dự kiến, nhiệt độ ngày mai. Leaf node chứa trung bình giá trị của các mẫu trong nhóm đó.

Trong scikit-learn, bạn chỉ cần đổi từ DecisionTreeClassifier sang DecisionTreeRegressor là xong.

Ưu Điểm Của Decision Tree

Decision Tree có những lợi ích mà nhiều thuật toán phức tạp hơn không có:

Dễ hiểu: Bạn có thể vẽ cây ra và giải thích cho người không biết kỹ thuật. Điều này quan trọng trong y tế, tài chính, nơi tính minh bạch là bắt buộc.

Không cần chuẩn hóa dữ liệu: Không như KNN hay SVM, Decision Tree không quan tâm đến thang đo. Nó chia theo ngưỡng nên 1 triệu đồng hay 1.000 USD đều xử lý được mà không cần scale.

Xử lý được dữ liệu hỗn hợp: Cùng lúc xử lý biến số (tuổi, lương) và biến phân loại (giới tính, thành phố) mà không cần one-hot encoding.

Phát hiện được tính quan trọng của đặc trưng: Sau khi train, model cho biết thuộc tính nào quan trọng nhất trong việc dự đoán.

Nhược Điểm Của Decision Tree

Không gì hoàn hảo, và Decision Tree cũng có điểm yếu rõ ràng:

Dễ overfitting: Cây có thể phát triển quá sâu, học cả nhiễu trong dữ liệu. Một cây học thuộc training data nhưng dự đoán sai trên dữ liệu mới. Giải pháp: giới hạn độ sâu (max_depth) hoặc dùng pruning.

Nhạy cảm với dữ liệu nhỏ: Một vài mẫu thay đổi có thể tạo ra cây hoàn toàn khác. Tính ổn định kém.

Không bắt được quan hệ tuyến tính: Nếu dữ liệu có quan hệ tuyến tính đơn giản, Decision Tree vẫn phải chia nhiều lần để xấp xỉ, kém hiệu quả hơn hồi quy tuyến tính.

Thiên vị thuộc tính có nhiều giá trị: ID3 có xu hướng chọn thuộc tính có nhiều nhánh hơn. C4.5 khắc phục được vấn đề này.

Cải Thiện Decision Tree Bằng Ensemble

Nhược điểm lớn nhất của Decision Tree là tính нестабиль (một cây đơn độc dễ sai). Giải pháp phổ biến là kết hợp nhiều cây lại với nhau.

Random Forest: Train hàng trăm Decision Tree trên các tập dữ liệu ngẫu nhiên, rồi bỏ phiếu theo đa số. Giảm overfitting đáng kể, tăng độ chính xác.

Gradient Boosting (XGBoost, LightGBM): Train cây liên tiếp, mỗi cây sửa lỗi của cây trước. Hiệu suất thường cao hơn Random Forest, nhưng cần tinh chỉnh cẩn thận hơn.

Thực tế, khi bạn thấy model thắng các cuộc thi Kaggle, phần lớn là XGBoost hoặc LightGBM, gốc rễ đều là Decision Tree.

Khi Nào Nên Dùng Decision Tree?

Mình khuyên dùng Decision Tree khi:

  • Cần giải thích quyết định model cho người không kỹ thuật (y tế, pháp lý, tài chính)
  • Dữ liệu có nhiều loại biến hỗn hợp (số + phân loại)
  • Muốn nhanh chóng có baseline model để so sánh
  • Dữ liệu nhỏ, không đủ để train deep learning

Nếu độ chính xác là ưu tiên số một, Random Forest hoặc XGBoost luôn là lựa chọn tốt hơn một cây đơn độc.

Lời Kết

Decision Tree là nền tảng của rất nhiều thuật toán mạnh mẽ. Hiểu Decision Tree là hiểu một nửa Random Forest, XGBoost, và LightGBM. Thuật toán này đơn giản nhưng tinh tế, dễ giải thích nhưng giới hạn rõ ràng. Nếu bạn mới bắt đầu học machine learning, Decision Tree chính là điểm khởi đầu hoàn hảo.

ThienLv

Mình là Thien, người tạo ra blog này. Ban ngày làm marketing, ban đêm cày tiền online và chơi với AI. Blog này là nơi mình ghi lại những gì mình thử qua — tool nào xịn, chiến thuật nào chạy được, cái gì thất bại. Mình không giỏi nhất, nhưng mình thích chia sẻ thật. Chill với một ly cafe đá là lý tưởng nhất.

Xem tất cả bài viết →

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *