Gradient Boosting là gì? Vì sao cây sau lại học từ lỗi của cây trước?

Chatgpt Image Aug 14, 2026, 10_24_01 Am

Series: Machine Learning Fundamentals – Bài 21

Ở bài trước, chúng ta đã tìm hiểu Random Forest.

Ý tưởng của Random Forest khá trực quan:

Xây dựng nhiều Decision Tree khác nhau → để chúng cùng dự đoán → tổng hợp kết quả.

Nhưng có một cách tiếp cận khác.

Thay vì để các cây học tương đối độc lập, điều gì sẽ xảy ra nếu:

Cây thứ hai tập trung sửa những gì cây thứ nhất dự đoán sai?

Sau đó:

Cây thứ ba tiếp tục sửa những sai số còn lại?

Và quá trình này tiếp tục hàng chục hoặc hàng trăm lần.

Đó chính là tư tưởng cốt lõi của Gradient Boosting.


Gradient Boosting là gì?

Gradient Boosting là một phương pháp Ensemble Learning xây dựng nhiều mô hình yếu (Weak Learners) theo trình tự.

Mỗi mô hình mới được thêm vào nhằm cải thiện những sai số mà tập hợp mô hình trước đó chưa xử lý tốt.

Trong thực tế, Weak Learner thường là những Decision Tree nhỏ.

Có thể hình dung:

Model ban đầu
Dự đoán
Tính sai số
Tree 1 học cách sửa sai
Dự đoán mới
Tính sai số còn lại
Tree 2 tiếp tục sửa
Final Model

Khác biệt quan trọng nằm ở chữ:

Sequential – Tuần tự.

Các cây không được xây dựng độc lập.

Cây sau phụ thuộc vào kết quả của các cây trước.


Một ví dụ đơn giản

Giả sử chúng ta muốn dự đoán giá của một căn nhà:

Giá thực tế: 5 tỷ đồng

Mô hình ban đầu dự đoán:

3,5 tỷ

Sai số:

5 − 3,5 = 1,5 tỷ

Tree tiếp theo được xây dựng để học phần sai số này.

Nó điều chỉnh thêm:

+1 tỷ

Dự đoán mới:

4,5 tỷ

Sai số còn:

0,5 tỷ

Tree tiếp theo tiếp tục học:

+0,35 tỷ

Dự đoán trở thành:

4,85 tỷ

Quá trình tiếp tục cho đến khi mô hình đạt mức sai số phù hợp.


Residual – phần mô hình chưa học được

Trong Regression, một cách trực quan để hiểu Boosting là thông qua Residual.

Residual có thể viết đơn giản:

Residual = Giá trị thực − Giá trị dự đoán

Ví dụ:

Thực tế Dự đoán Residual
100 80 +20
150 160 -10
200 170 +30
250 240 +10

Thay vì tiếp tục dự đoán trực tiếp Target ban đầu, cây tiếp theo cố gắng học:

+20
-10
+30
+10

Tức là học:

Mô hình trước đang sai ở đâu và sai bao nhiêu?


Từ một cây yếu đến mô hình mạnh

Gradient Boosting thường sử dụng các Decision Tree khá nhỏ.

Một cây riêng lẻ có thể không dự đoán tốt.

Ví dụ:

Tree 1 → Weak Learner
Tree 2 → Weak Learner
Tree 3 → Weak Learner
Tree 100 → Weak Learner

Nhưng khi kết hợp tuần tự:

Weak Learner
+
Weak Learner
+
Weak Learner
+
Strong Model

Đây chính là tư tưởng của Boosting:

Kết hợp nhiều mô hình yếu để tạo ra một mô hình mạnh.


Gradient nằm ở đâu trong Gradient Boosting?

Đây là điểm khiến Gradient Boosting khác với cách giải thích đơn giản “cây sau sửa lỗi cây trước”.

Mục tiêu thực sự của Machine Learning là tối thiểu hóa một Loss Function.

Ví dụ trong Regression:

Mean Squared Error (MSE)

MSE = (1/n) Σ(y – ŷ)²

Gradient cho biết:

Nếu thay đổi Prediction theo một hướng nhất định, Loss sẽ tăng hay giảm?

Gradient Boosting xây dựng mô hình mới nhằm đi theo hướng giúp giảm Loss.

Chính xác hơn, các Weak Learner được dùng để xấp xỉ hướng negative gradient của Loss Function.

Đó là lý do thuật toán có tên:

Gradient + Boosting


Learning Rate

Nếu mỗi cây mới sửa toàn bộ sai số ngay lập tức, mô hình có thể thay đổi quá mạnh.

Vì vậy Gradient Boosting sử dụng một Hyperparameter quan trọng:

Learning Rate

Ví dụ cây mới dự đoán:

Correction = +20

Nếu:

Learning Rate = 0.1

thì mô hình chỉ cập nhật:

+20 × 0.1 = +2

Thay vì:

Prediction mới = Prediction cũ + 20

ta có:

Prediction mới = Prediction cũ + 2

Mô hình học chậm hơn nhưng có thể kiểm soát tốt hơn.


Learning Rate và số lượng cây

Hai Hyperparameter này có quan hệ chặt chẽ:

Learning Rate nhỏ → thường cần nhiều cây hơn.

Ví dụ:

Learning Rate = 0.3
Trees = 100

so với:

Learning Rate = 0.05
Trees = 500

Không thể chỉ nhìn một Hyperparameter riêng lẻ.

Đây chính là lý do Hyperparameter Tuning rất quan trọng đối với các mô hình Boosting.


Gradient Boosting hoạt động như thế nào?

Một phiên bản đơn giản của quy trình:

Bước 1 – Khởi tạo Prediction

Mô hình bắt đầu với một dự đoán đơn giản.

Ví dụ trong Regression có thể dựa trên giá trị trung bình của Target.

Bước 2 – Tính sai số

So sánh:

Actual Value
Prediction
Loss / Residual

Bước 3 – Huấn luyện Decision Tree

Một Tree nhỏ được xây dựng để học hướng điều chỉnh sai số.

Bước 4 – Cập nhật Prediction

New Prediction
=
Old Prediction
+
Learning Rate × Tree Prediction

Bước 5 – Lặp lại

Tiếp tục xây thêm cây để giảm Loss.


Random Forest và Gradient Boosting khác nhau thế nào?

Đây là phần rất quan trọng.

Random Forest

Các cây chủ yếu được xây dựng độc lập.

Tree 1 ─┐
Tree 2 ─┤
Tree 3 ─┼→ Aggregate → Prediction
Tree 4 ─┤
Tree 5 ─┘

Gradient Boosting

Các cây được xây dựng tuần tự.

Tree 1
Error
Tree 2
Error
Tree 3

So sánh:

Random Forest Gradient Boosting
Bagging Boosting
Cây tương đối độc lập Cây phụ thuộc tuần tự
Giảm Variance Tập trung giảm Loss
Có thể Training song song tốt hơn Khó song song hóa toàn bộ quá trình
Thường dễ Tune hơn Nhạy với Hyperparameter hơn
Baseline rất mạnh Có thể đạt Accuracy cao hơn

Gradient Boosting có bị Overfitting không?

Có.

Nếu chúng ta:

  • Xây quá nhiều cây.
  • Để cây quá sâu.
  • Chọn Learning Rate không phù hợp.
  • Tune quá mức trên Validation Data.

mô hình vẫn có thể Overfit.

Một số Hyperparameter quan trọng gồm:

n_estimators

Số lượng cây.

learning_rate

Mức đóng góp của mỗi cây mới.

max_depth

Độ sâu của mỗi Decision Tree.

min_samples_leaf

Số mẫu tối thiểu trong Leaf.

subsample

Tỷ lệ dữ liệu được sử dụng để huấn luyện từng cây trong một số biến thể.

Các giá trị này thường được lựa chọn thông qua Cross Validation.


Vì sao Gradient Boosting mạnh với Tabular Data?

Trong nhiều bài toán dữ liệu dạng bảng, chúng ta có:

Age
Income
City
Transaction Count
Average Order Value
Customer Tenure

Các mô hình dựa trên cây có khả năng học:

  • Quan hệ phi tuyến.
  • Interaction giữa các Feature.
  • Threshold phức tạp.

Boosting sau đó tiếp tục cải thiện những vùng dữ liệu mà các cây trước xử lý chưa tốt.

Vì vậy, các phương pháp Gradient Boosted Trees trở thành một nhóm mô hình rất quan trọng đối với Tabular Machine Learning.


Từ Gradient Boosting đến XGBoost

Gradient Boosting rất mạnh.

Nhưng implementation truyền thống có thể gặp những vấn đề như:

  • Training chậm.
  • Tốn tài nguyên.
  • Cần kiểm soát Overfitting.
  • Khó mở rộng khi dataset lớn.

Từ nền tảng Gradient Boosting, nhiều thư viện và thuật toán tối ưu hơn đã xuất hiện.

Một trong những cái tên nổi tiếng nhất là:

XGBoost – Extreme Gradient Boosting

Ngoài ra còn có:

  • LightGBM.
  • CatBoost.

Những công cụ này đã trở thành lựa chọn phổ biến trong nhiều bài toán Machine Learning với dữ liệu dạng bảng.


Gradient Boosting có luôn tốt hơn Random Forest?

Không.

Không có thuật toán nào luôn chiến thắng.

Random Forest có thể phù hợp hơn khi:

  • Muốn một baseline nhanh.
  • Muốn ít Hyperparameter hơn.
  • Muốn mô hình tương đối ổn định.
  • Không muốn dành nhiều thời gian Tuning.

Gradient Boosting đáng thử khi:

  • Predictive performance là ưu tiên lớn.
  • Có đủ tài nguyên để Tune.
  • Dữ liệu dạng bảng.
  • Quan hệ giữa Feature và Target phức tạp.

Cách tốt nhất vẫn là:

Đánh giá bằng Cross Validation trên chính dữ liệu của bài toán.


Một lưu ý quan trọng: cây sau không đơn giản “học những dòng dự đoán sai”

Cách nói:

“Cây sau học từ lỗi của cây trước”

rất hữu ích để hiểu trực quan.

Nhưng về mặt kỹ thuật, nó chưa hoàn toàn đầy đủ.

Gradient Boosting tối ưu một Loss Function bằng cách thêm từng Weak Learner theo hướng giúp giảm Loss.

Tùy bài toán và Loss Function, thứ cây tiếp theo học không nhất thiết chỉ là một danh sách các mẫu “đúng/sai”.

Đây là điểm khác biệt giữa việc hiểu trực giác và hiểu cơ chế toán học của Gradient Boosting.

Bạn có thể xem mô tả kỹ thuật về Gradient Boosting trong Scikit-learn User Guide.


Khi nào nên dùng Gradient Boosting?

Gradient Boosting đáng cân nhắc khi:

  • Làm Classification hoặc Regression.
  • Dữ liệu chủ yếu ở dạng bảng.
  • Decision Tree đơn lẻ chưa đủ tốt.
  • Random Forest đã tạo baseline nhưng muốn cải thiện thêm.
  • Có khả năng thực hiện Hyperparameter Tuning.
  • Cần mô hình học được các quan hệ phi tuyến phức tạp.

Tuy nhiên, mô hình vẫn cần được đánh giá bằng Validation/Cross Validation thay vì chỉ nhìn Training Score.


Kết luận

Gradient Boosting là một phương pháp Ensemble Learning xây dựng nhiều Weak Learner theo trình tự.

Thay vì để các Decision Tree hoạt động độc lập như Random Forest:

Mỗi mô hình mới được thêm vào để cải thiện những gì tập hợp mô hình hiện tại vẫn chưa dự đoán tốt.

Ba ý tưởng quan trọng nhất cần nhớ:

1. Sequential Learning
Các cây được xây dựng lần lượt.

2. Loss Optimization
Mỗi bước cố gắng làm giảm hàm Loss.

3. Learning Rate
Kiểm soát mức đóng góp của mỗi cây mới.

Gradient Boosting cũng mở ra một nhánh cực kỳ quan trọng của Machine Learning hiện đại:

Decision Tree
Random Forest
Gradient Boosting
XGBoost / LightGBM / CatBoost

Và đó cũng chính là nơi series sẽ đi tiếp.


Tài liệu tham khảo

Scikit-learn – Gradient Boosting
Gradient Boosting User Guide

XGBoost Documentation
XGBoost Documentation


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

Nếu bạn muốn thực hành Decision Tree, Random Forest, Gradient Boosting 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 Combo 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 Technology School
📍 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