Decision Tree là gì? Vì sao một chuỗi câu hỏi Yes/No có thể trở thành mô hình Machine Learning?

Chatgpt Image Aug 12, 2026, 01_47_01 Pm

Series: Machine Learning Fundamentals – Bài 19

Hãy tưởng tượng một ngân hàng cần quyết định có nên phê duyệt khoản vay cho khách hàng hay không.

Nhân viên có thể lần lượt đặt các câu hỏi:

Thu nhập có trên 20 triệu đồng/tháng không?

Nếu , tiếp tục:

Khách hàng có lịch sử tín dụng tốt không?

Nếu :

Tỷ lệ nợ trên thu nhập có thấp không?

Sau một chuỗi câu hỏi, ngân hàng đi đến quyết định:

Phê duyệt khoản vay.

Cách suy luận tưởng chừng rất đơn giản này lại chính là ý tưởng cốt lõi của một trong những thuật toán Machine Learning phổ biến nhất:

Decision Tree – Cây quyết định.


Decision Tree là gì?

Decision Tree là thuật toán Machine Learning đưa ra dự đoán bằng cách liên tục chia dữ liệu dựa trên các điều kiện của Feature.

Mỗi điều kiện tạo thành một nhánh của cây.

Ví dụ:

                Thu nhập > 20 triệu?
                   /             \
                 Có              Không
                 /                  \
       Credit Score > 700?        Từ chối
           /          \
         Có           Không
         /              \
     Phê duyệt         Từ chối

Một quan sát mới sẽ đi từ đỉnh cây xuống dưới, lần lượt trả lời các câu hỏi cho đến khi đến kết quả cuối cùng.

Vì vậy, Decision Tree có thể được hiểu như:

Một chuỗi các quy tắc IF–ELSE được Machine Learning tự học từ dữ liệu.


Cấu trúc của Decision Tree

Một Decision Tree thường có ba thành phần chính.

1. Root Node

Root Node là điểm bắt đầu của cây.

Đây thường là Feature và điều kiện được thuật toán lựa chọn để thực hiện lần chia đầu tiên.

Ví dụ:

Age < 30?

2. Internal Node

Các Internal Node là những câu hỏi tiếp theo.

Ví dụ:

Income > 20 triệu?
Credit Score > 700?
Years Employed > 3?

Mỗi câu hỏi tiếp tục chia dữ liệu thành các nhóm nhỏ hơn.


3. Leaf Node

Leaf Node là điểm kết thúc.

Đây chính là dự đoán của mô hình.

Ví dụ:

Approve Loan
Reject Loan

Hoặc trong bài toán dự đoán giá nhà:

Predicted Price = 4,2 tỷ đồng

Decision Tree học các câu hỏi bằng cách nào?

Đây mới là phần thú vị.

Data Scientist không cần ngồi viết thủ công:

IF Age > 30
AND Income > 20 million
AND CreditScore > 700
THEN Approve

Decision Tree sẽ tự tìm các câu hỏi này từ dữ liệu.

Giả sử dữ liệu có các Feature:

  • Age
  • Income
  • Credit Score
  • Debt Ratio
  • Employment Years

Thuật toán sẽ thử nhiều cách chia khác nhau.

Ví dụ:

Age < 30?

Income < 15 triệu?

Credit Score < 650?

Debt Ratio > 40%?

Sau đó nó đánh giá:

Câu hỏi nào giúp tách dữ liệu thành những nhóm “sạch” nhất?

Để trả lời câu hỏi đó, Decision Tree cần một cách đo độ hỗn loạn của dữ liệu.


Gini Impurity

Một trong những chỉ số phổ biến nhất là Gini Impurity.

Hãy tưởng tượng một Node có 100 khách hàng:

  • 50 người được duyệt vay.
  • 50 người bị từ chối.

Node này khá hỗn loạn.

Ngược lại, nếu Node có:

  • 98 người được duyệt.
  • 2 người bị từ chối.

Node đã “sạch” hơn rất nhiều.

Gini Impurity có dạng:

Gini = 1 − Σpᵢ²

Trong đó pᵢ là tỷ lệ của từng class.

Nếu Node chỉ chứa một Class:

Gini = 0

Đây là trạng thái hoàn toàn “pure”.


Entropy

Một cách đo khác là Entropy.

Entropy cũng đo mức độ hỗn loạn của dữ liệu.

Ý tưởng chung:

Dữ liệu trộn lẫn
→ Entropy cao

Dữ liệu được phân tách rõ
→ Entropy thấp

Decision Tree sẽ tìm cách chia dữ liệu sao cho Entropy giảm nhiều nhất.

Mức giảm đó được gọi là:

Information Gain.


Information Gain là gì?

Giả sử trước khi chia:

100 khách hàng

50 Approve
50 Reject

Sau khi hỏi:

Credit Score > 700?

Ta nhận được:

              Credit Score > 700?
                  /          \
                Có           Không

           45 Approve      5 Approve
            5 Reject      45 Reject

Dữ liệu sau khi chia đã rõ ràng hơn rất nhiều.

Điều đó có nghĩa câu hỏi về Credit Score cung cấp nhiều thông tin.

Decision Tree sẽ ưu tiên những phép chia như vậy.

Có thể hiểu đơn giản:

Một Split tốt là Split làm cho các nhóm sau khi chia ít hỗn loạn hơn nhóm ban đầu.


Decision Tree không chỉ hỏi Yes/No

Về mặt trực quan, chúng ta thường biểu diễn Decision Tree bằng câu hỏi Yes/No.

Nhưng thuật toán thực tế có thể xử lý nhiều loại Feature.

Ví dụ với biến số:

Age ≤ 27.5

hoặc:

Income ≤ 18.750.000

Mô hình tự tìm Threshold phù hợp từ dữ liệu.

Vì vậy, chúng ta không cần tự quyết định rằng:

“20 triệu có vẻ là mức thu nhập hợp lý.”

Thuật toán có thể tự tìm ngưỡng mang lại phép chia tốt nhất.


Decision Tree cho Classification

Một ứng dụng phổ biến là Classification.

Ví dụ:

Phát hiện Spam

Email chứa từ khóa quảng cáo?
            ↓
Có nhiều đường link?
            ↓
Người gửi chưa từng liên hệ?
            ↓
Spam / Not Spam

Dự đoán Customer Churn

Thời gian sử dụng < 3 tháng?
            ↓
Số lần khiếu nại > 2?
            ↓
Mức sử dụng giảm?
            ↓
Churn / Not Churn

Kết quả cuối cùng là một Class.


Decision Tree cho Regression

Decision Tree cũng có thể giải quyết bài toán Regression.

Ví dụ:

Dự đoán giá nhà.

Cây có thể học:

                Diện tích < 80m²?
                 /             \
               Có              Không
              /                  \
       Trung tâm < 5km?       Số phòng > 3?
          /      \               /      \
       3,2 tỷ   2,4 tỷ        5,8 tỷ   4,5 tỷ

Thay vì dự đoán Class, mỗi Leaf Node trả về một giá trị số.


Vì sao Decision Tree dễ giải thích?

Một ưu điểm rất lớn của Decision Tree là Interpretability.

Với nhiều mô hình Machine Learning, chúng ta chỉ nhìn thấy:

Input
  ↓
Model
  ↓
Prediction

Nhưng khó biết chính xác tại sao mô hình đưa ra quyết định.

Decision Tree khác.

Chúng ta có thể theo dõi toàn bộ đường đi:

Income > 20 triệu
        ↓ YES

Credit Score > 700
        ↓ YES

Debt Ratio < 30%
        ↓ YES

APPROVE

Điều này giúp Decision Tree đặc biệt hữu ích trong những bài toán cần giải thích quyết định của mô hình.


Nhưng Decision Tree có một vấn đề lớn

Hãy nhớ lại bài về Overfitting.

Decision Tree là một ví dụ rất điển hình.

Nếu không giới hạn cây, thuật toán có thể tiếp tục chia:

Root
 ↓
Branch
 ↓
Branch
 ↓
Branch
 ↓
Branch
 ↓
...

Cho đến khi gần như mỗi Leaf chỉ còn một vài mẫu.

Lúc này mô hình có thể đạt:

Training Accuracy ≈ 100%

Nhưng khi gặp dữ liệu mới, hiệu suất giảm mạnh.

Đây chính là Overfitting.


max_depth quan trọng như thế nào?

Một Hyperparameter rất quan trọng của Decision Tree là:

max_depth

Nó giới hạn độ sâu tối đa của cây.

Ví dụ:

max_depth = 2

        ○
       / \
      ○   ○
     / \ / \
    ●  ● ●  ●

Mô hình khá đơn giản.

Nếu:

max_depth = 20

Cây có thể trở nên cực kỳ phức tạp.

Điều này tạo ra một bài toán cân bằng:

Cây quá nông Cây quá sâu
Underfitting Overfitting
High Bias High Variance
Không học đủ Học quá chi tiết

Mục tiêu là tìm độ phức tạp phù hợp.

Đây chính là một ứng dụng trực tiếp của Hyperparameter Tuning mà chúng ta đã tìm hiểu ở bài trước.


Một số Hyperparameter quan trọng

max_depth

Độ sâu tối đa của cây.

min_samples_split

Số lượng mẫu tối thiểu cần có để một Node được phép tiếp tục chia.

min_samples_leaf

Số mẫu tối thiểu phải tồn tại trong một Leaf Node.

max_features

Số Feature được xem xét khi tìm phép chia.

criterion

Tiêu chí sử dụng để đánh giá chất lượng của Split.

Các Hyperparameter này kiểm soát mức độ phức tạp của cây và ảnh hưởng trực tiếp đến khả năng tổng quát hóa.


Ưu điểm của Decision Tree

Decision Tree có nhiều đặc điểm khiến nó trở thành thuật toán rất phổ biến trong Machine Learning.

Dễ hiểu: Cấu trúc giống quá trình ra quyết định của con người.

Dễ trực quan hóa: Có thể vẽ toàn bộ cây.

Không yêu cầu Feature Scaling trong cách dùng phổ biến: Khác với KNN hay SVM, việc chuẩn hóa đơn vị đo thường không ảnh hưởng đến thứ tự các phép chia của cây.

Xử lý quan hệ phi tuyến: Không yêu cầu mối quan hệ giữa Feature và Target phải tuyến tính.

Dùng cho cả Classification và Regression.


Hạn chế của Decision Tree

Decision Tree cũng có những điểm yếu quan trọng.

Dễ Overfitting

Cây quá sâu có thể ghi nhớ dữ liệu Training.

Không ổn định

Một thay đổi nhỏ trong dữ liệu đôi khi có thể tạo ra một cấu trúc cây rất khác.

Greedy Algorithm

Decision Tree thường chọn phép chia tốt nhất ở thời điểm hiện tại.

Nó không đảm bảo rằng chuỗi quyết định cục bộ đó sẽ tạo ra cây tối ưu toàn cục.

Đây cũng là một trong những lý do người ta phát triển các phương pháp kết hợp nhiều cây.


Từ một Decision Tree đến Random Forest

Nếu một Decision Tree dễ Overfitting và không ổn định, tại sao không sử dụng nhiều cây cùng lúc?

Đây chính là ý tưởng đứng sau:

Random Forest.

Thay vì:

1 Decision Tree
      ↓
 Prediction

Random Forest sử dụng:

Tree 1 ─┐
Tree 2 ─┤
Tree 3 ─┤
Tree 4 ─┼→ Tổng hợp → Prediction
Tree 5 ─┤
...     │
Tree N ─┘

Mỗi cây có thể mắc sai lầm khác nhau.

Khi kết hợp nhiều cây, mô hình thường trở nên ổn định và có khả năng tổng quát hóa tốt hơn một Decision Tree đơn lẻ.


Decision Tree nằm ở đâu trong Machine Learning?

Đến đây, chúng ta có thể nối lại khá nhiều kiến thức trong series:

Data
 ↓
Feature Engineering
 ↓
Feature Selection
 ↓
Decision Tree
 ↓
Hyperparameter Tuning
 ↓
Cross Validation
 ↓
Model Evaluation
 ↓
Kiểm tra Overfitting

Các khái niệm trước đây không tồn tại độc lập.

Chúng kết hợp với nhau thành một Machine Learning Pipeline hoàn chỉnh.


Kết luận

Decision Tree là thuật toán Machine Learning xây dựng dự đoán thông qua một chuỗi các phép chia dữ liệu.

Mỗi Node đặt ra một câu hỏi.

Mỗi Branch đại diện cho một kết quả.

Và mỗi Leaf Node đưa ra dự đoán cuối cùng.

Nhưng điểm quan trọng nhất là:

Data Scientist không viết thủ công chuỗi câu hỏi đó. Decision Tree tự học các câu hỏi và ngưỡng phân chia từ dữ liệu.

Các tiêu chí như Gini Impurity, Entropy và Information Gain giúp thuật toán xác định phép chia nào cung cấp nhiều thông tin nhất.

Decision Tree vì vậy vừa đơn giản về mặt trực quan, vừa là nền tảng để hiểu những thuật toán mạnh hơn như Random Forest và Gradient Boosting.


Bài tiếp theo

Trong bài tiếp theo, MCNA Technology School sẽ cùng bạn tìm hiểu:

Random Forest là gì? Vì sao 100 cây quyết định có thể tốt hơn một cây?

Chúng ta sẽ đi từ một Decision Tree đơn lẻ sang Ensemble Learning, đồng thời tìm hiểu Bootstrap Sampling, Random Feature Selection và cơ chế Voting.


Tài liệu tham khảo

Scikit-learn – Decision Trees
Đọc tài liệu về Decision Tree

Google Machine Learning – Decision Forests
Đọc tài liệu của Google


Khóa học tại MCNA Technology School

Nếu bạn muốn thực hành xây dựng Decision Tree, Random Forest và các mô hình Machine Learning bằng Python, có thể tham khảo:

🤖 Combo 5 khóa AI & Power BI

Xem khóa học AI & Power BI

🐍 Combo Python

Xem khóa học Python


Tác giả: Bùi Đình Tuyển – Data Analyst tại MCNA Technology School

📞 Hotline: 0939.866.825 (Mr. Minh Khang)
🌐 Website: mcna.vn
📍 Hà Nội: 30 Trung Liệt, Đống Đa | Liền kề 44B TT2 Văn Quán, Hà Đông
📍 TP.HCM: 50B Phan Tây Hồ, Cầu Kiệu

Chỉ mục