XGBoost là gì? Vì sao thuật toán này từng thống trị các cuộc thi Machine Learning?

Chatgpt Image Aug 16, 2026, 03_00_34 Pm

Series: Machine Learning Fundamentals – Bài 22

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

Ý tưởng cốt lõi rất mạnh:

Xây dựng các cây theo trình tự, trong đó cây sau cố gắng cải thiện những sai số mà mô hình hiện tại vẫn còn mắc phải.

Nhưng Gradient Boosting truyền thống cũng có những hạn chế.

Khi dữ liệu ngày càng lớn, số lượng Feature tăng và mô hình có hàng trăm hoặc hàng nghìn cây, việc Training có thể trở nên tốn kém.

Đồng thời, một mô hình Boosting quá phức tạp vẫn có thể Overfit.

Năm 2016, Tianqi Chen và Carlos Guestrin công bố bài báo “XGBoost: A Scalable Tree Boosting System”, trình bày một hệ thống Tree Boosting được thiết kế để có khả năng mở rộng và sử dụng tài nguyên hiệu quả. XGBoost: A Scalable Tree Boosting System

Đó chính là:

XGBoost – Extreme Gradient Boosting


XGBoost là gì?

XGBoost là viết tắt của:

Extreme Gradient Boosting

Đây là một thư viện và hệ thống Machine Learning dựa trên Gradient Boosted Decision Trees, được tối ưu mạnh về:

  • Hiệu suất tính toán.
  • Khả năng mở rộng.
  • Kiểm soát độ phức tạp.
  • Xử lý dữ liệu lớn.
  • Khả năng tùy chỉnh.

Có thể hình dung:

Decision Tree
Gradient Boosting
Gradient Boosted Trees
Tối ưu thuật toán + hệ thống
XGBoost

XGBoost không thay đổi hoàn toàn tư tưởng của Gradient Boosting.

phát triển và tối ưu hóa tư tưởng đó để xây dựng một hệ thống mạnh hơn cho thực tế.


Nhắc lại: Gradient Boosting hoạt động thế nào?

Giả sử chúng ta muốn dự đoán giá nhà.

Model đầu tiên dự đoán:

Actual Price = 5 tỷ
Prediction = 4 tỷ

Sai số còn lại:

+1 tỷ

Một cây mới được thêm vào để cải thiện Prediction.

Sau đó:

Model 1
Tree 1
Model 2
Tree 2
Model 3

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

XGBoost vẫn giữ nguyên nguyên lý Boosting này.

Nhưng cách nó quyết định xây cây như thế nàokiểm soát độ phức tạp ra sao được tối ưu kỹ hơn.


Điểm khác biệt đầu tiên: Regularization

Một trong những điểm nổi bật của XGBoost là đưa Regularization trực tiếp vào Objective Function.

Có thể viết ý tưởng tổng quát:

Objective = Loss + Regularization

Trong đó:

Loss đo mức độ dự đoán sai.

Regularization phạt mô hình khi nó trở nên quá phức tạp.

Nói đơn giản:

Mô hình dự đoán tốt
+
Mô hình không quá phức tạp
Mục tiêu

Đây là một cơ chế quan trọng giúp kiểm soát Overfitting.


Vì sao phải phạt cây quá phức tạp?

Hãy nhớ Decision Tree.

Một cây có thể tiếp tục chia:

Root
Node
Node
Node
Node

Nếu tiếp tục đủ lâu, cây có thể học gần như từng chi tiết nhỏ trong Training Data.

Training Error giảm.

Nhưng khả năng dự đoán dữ liệu mới chưa chắc tốt hơn.

XGBoost cân nhắc:

Việc tạo thêm một nhánh có giúp giảm Loss đủ nhiều để đáng với độ phức tạp tăng thêm hay không?

Nếu không, việc Split có thể không đáng thực hiện.


Objective Function của XGBoost

Ở mức khái niệm, XGBoost tối ưu:

Objective
=
Training Loss
+
Model Complexity

Hay:

Obj = L + Ω

Trong đó:

  • L: Loss Function.
  • Ω: Regularization Term.

Đây là một khác biệt quan trọng so với cách hiểu Gradient Boosting đơn giản chỉ là liên tục giảm sai số.

XGBoost không chỉ hỏi:

Làm thế nào để giảm Loss?

Mà còn hỏi:

Có thể giảm Loss mà vẫn giữ mô hình đủ đơn giản hay không?


XGBoost xây Decision Tree như thế nào?

Giả sử có Feature:

Age
Income
Credit Score
Debt Ratio

Thuật toán cần quyết định:

Feature nào nên Split?

và:

Threshold nào nên sử dụng?

Ví dụ:

Credit Score < 680?

XGBoost đánh giá lợi ích của phép chia bằng một đại lượng thường được gọi là Gain.

Nếu Split giúp Objective tốt lên đủ nhiều:

Gain cao
→ Giữ Split

Nếu Split không mang lại đủ lợi ích:

Gain thấp
→ Không cần Split

Nhờ đó, cây không nhất thiết phải tiếp tục phát triển chỉ vì vẫn còn dữ liệu có thể chia.


Tree Pruning

Giả sử một cây đã phát triển:

A
/ \
B C
/ \
D E
/ \
F G

Một số nhánh có thể chỉ mang lại cải thiện rất nhỏ.

XGBoost có thể loại bỏ những phần không đủ hữu ích.

Ý tưởng này được gọi là:

Pruning – cắt tỉa cây.

Mục tiêu:

Giữ những cấu trúc thực sự giúp mô hình và loại bỏ độ phức tạp không cần thiết.


Shrinkage – Learning Rate

Giống Gradient Boosting, XGBoost sử dụng Learning Rate.

Trong XGBoost, Hyperparameter thường gặp là:

eta

Giả sử cây mới đề xuất:

Correction = +100

Nếu:

eta = 0.1

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

+10

Có thể hình dung:

Prediction mới
=
Prediction cũ
+
eta × Tree Prediction

Learning Rate nhỏ giúp mô hình học thận trọng hơn.

Nhưng thường cần nhiều cây hơn.


Column Subsampling

Random Forest có một ý tưởng rất hữu ích:

Không phải cây nào cũng cần nhìn thấy toàn bộ Feature.

XGBoost cũng hỗ trợ lấy mẫu Feature.

Ví dụ dataset có:

20 Features

Một cây có thể chỉ sử dụng:

14 Features

Một cây khác lại sử dụng tập Feature khác.

Các Hyperparameter như colsample_bytree giúp kiểm soát quá trình này.

Điều đó có thể:

  • Tăng tính đa dạng giữa các cây.
  • Giảm chi phí tính toán.
  • Hỗ trợ kiểm soát Overfitting.

Row Subsampling

Không chỉ Feature.

XGBoost còn có thể sử dụng một phần Training Samples cho mỗi vòng Boosting.

Ví dụ:

Training Data
100.000 rows

Nếu:

subsample = 0.8

mỗi vòng có thể sử dụng khoảng:

80% dữ liệu

thay vì toàn bộ dataset.

Đây cũng là một kỹ thuật Regularization hữu ích.


Xử lý Missing Values

Một đặc điểm thực tế đáng chú ý của XGBoost là khả năng xử lý giá trị thiếu trong quá trình xây cây.

Giả sử:

Age Income Credit Score
25 15m 680
34 ? 720
41 30m ?

Khi gặp Missing Value ở một Split, thuật toán có thể học default direction phù hợp từ dữ liệu.

Điều này không có nghĩa chúng ta nên bỏ qua hoàn toàn việc phân tích Missing Data.

Nhưng nó giúp XGBoost linh hoạt hơn trong nhiều dataset thực tế.


XGBoost và tính toán song song

Gradient Boosting có bản chất tuần tự:

Tree 1
Tree 2
Tree 3

Tree 3 cần kết quả từ những bước trước nên không thể đơn giản Training toàn bộ cây cùng lúc như Random Forest.

Tuy nhiên, các công việc bên trong quá trình xây dựng từng cây có thể được tối ưu và song song hóa.

XGBoost được thiết kế để khai thác:

  • Multi-core CPU.
  • Bộ nhớ hiệu quả.
  • Cache.
  • Distributed Computing.
  • GPU trong các cấu hình hỗ trợ.

Đây là một phần lý do XGBoost có chữ:

Extreme

Không chỉ vì thuật toán, mà còn vì engineering của hệ thống.


Vì sao XGBoost từng rất nổi tiếng trên Kaggle?

Trong nhiều cuộc thi Machine Learning với dữ liệu dạng bảng, các đội thi cần xử lý:

  • Hàng trăm nghìn dòng.
  • Nhiều Feature.
  • Missing Values.
  • Quan hệ phi tuyến.
  • Feature Interaction.

Đây chính là môi trường mà Gradient Boosted Trees hoạt động rất tốt.

XGBoost cung cấp thêm:

  • Regularization.
  • Tốc độ tốt.
  • Khả năng Tune sâu.
  • Khả năng mở rộng.
  • Hiệu suất dự đoán mạnh.

Vì vậy, nó trở thành một công cụ cực kỳ phổ biến trong cộng đồng Data Science và các cuộc thi Machine Learning.


XGBoost có phải “thuật toán vô địch Kaggle” không?

Đây là cách nói phổ biến nhưng cần hiểu đúng.

XGBoost từng cực kỳ thành công trong các cuộc thi dữ liệu dạng bảng.

Nhưng:

Không có thuật toán nào luôn tốt nhất cho mọi dataset.

Ngày nay Data Scientist còn sử dụng:

  • LightGBM.
  • CatBoost.
  • Neural Networks.
  • Ensemble.
  • Và nhiều phương pháp khác.

Trong nhiều competition, Feature Engineering, Validation Strategy và Ensemble còn quan trọng không kém việc chọn thuật toán.


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

Random Forest:

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

Các cây tương đối độc lập.

XGBoost:

Tree 1
Tree 2 sửa Model 1
Tree 3 sửa Model 2
Tree 4 sửa Model 3
Final Model

So sánh:

Random Forest XGBoost
Bagging Boosting
Cây tương đối độc lập Cây xây tuần tự
Chủ yếu giảm Variance Tối ưu Objective tuần tự
Tune tương đối dễ Nhiều Hyperparameter
Baseline mạnh Có thể đạt performance rất cao
Song song hóa giữa cây thuận lợi Tối ưu song song trong quá trình xây cây

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

Có thể xem:

Gradient Boosting là phương pháp; XGBoost là một implementation/hệ thống Tree Boosting được tối ưu mạnh.

XGBoost bổ sung hoặc nhấn mạnh nhiều kỹ thuật thực tế như:

  • Regularization.
  • Shrinkage.
  • Column Subsampling.
  • Row Subsampling.
  • Tree Pruning.
  • Missing Value Handling.
  • Tối ưu hệ thống tính toán.

Vì vậy:

Gradient Boosting
Nền tảng thuật toán
XGBoost
Gradient Boosted Trees
+
Regularization
+
System Optimization
+
Scalability

Những Hyperparameter quan trọng của XGBoost

n_estimators

Số vòng Boosting / số cây được xây dựng trong cấu hình phổ biến.


learning_rate

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


max_depth

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

Cây quá sâu có thể tăng nguy cơ Overfitting.


subsample

Tỷ lệ Training Samples được sử dụng.


colsample_bytree

Tỷ lệ Feature được sử dụng khi xây mỗi cây.


min_child_weight

Kiểm soát điều kiện để tiếp tục tạo các Node con dựa trên lượng thông tin của mẫu trong node.


gamma

Kiểm soát mức giảm Loss tối thiểu cần thiết để thực hiện thêm một Split trong cách cấu hình phổ biến.


reg_alpha

Regularization L1.


reg_lambda

Regularization L2.

Nhìn vào đây có thể thấy:

XGBoost mạnh nhưng cũng có rất nhiều thứ để Tune.


Có nên Grid Search toàn bộ XGBoost?

Thông thường không nên tạo một Grid quá lớn một cách thiếu chiến lược.

Ví dụ:

5 learning rates
×
6 max_depth
×
5 subsample
×
5 colsample
×
5 min_child_weight
×
5 gamma

Số cấu hình:

5 × 6 × 5 × 5 × 5 × 5 = 18.750

Nếu mỗi cấu hình chạy 5-Fold Cross Validation:

93.750 lần Training.

Chi phí có thể rất lớn.

Do đó, các phương pháp như:

  • Random Search.
  • Bayesian Optimization.
  • Optuna.

có thể hữu ích khi Search Space lớn.


Early Stopping

Một kỹ thuật rất quan trọng khi Training Boosting Model là:

Early Stopping.

Giả sử Validation Loss:

Tree 100 → 0.34
Tree 200 → 0.29
Tree 300 → 0.26
Tree 400 → 0.25
Tree 500 → 0.251
Tree 600 → 0.255

Sau khoảng Tree 400, Validation Performance không còn cải thiện.

Nếu tiếp tục Training:

  • Tốn tài nguyên.
  • Có thể tăng Overfitting.

Early Stopping cho phép dừng khi Validation Metric không cải thiện sau một số vòng nhất định.


Khi nào nên dùng XGBoost?

XGBoost là ứng viên rất đáng thử khi:

  • Dữ liệu dạng bảng.
  • Classification.
  • Regression.
  • Có quan hệ phi tuyến.
  • Có nhiều Feature Interaction.
  • Random Forest chưa đạt performance mong muốn.
  • Predictive Accuracy quan trọng.
  • Có khả năng Tune Hyperparameter.

Nó đặc biệt hữu ích khi bạn cần một baseline mạnh cho Tabular Machine Learning.


Khi nào XGBoost chưa chắc là lựa chọn tốt?

Nếu dữ liệu là:

Hình ảnh

CNN hoặc Vision Transformer có thể phù hợp hơn.

Văn bản

Transformer-based Models thường là lựa chọn tự nhiên hơn trong nhiều tác vụ hiện đại.

Dữ liệu cực lớn

LightGBM hoặc các hệ thống khác có thể có lợi thế tùy bài toán và hạ tầng.

Categorical Features phức tạp

CatBoost có những cơ chế được thiết kế đặc biệt cho dữ liệu categorical.

Điều quan trọng không phải:

“Thuật toán nào mạnh nhất?”

Mà là:

Thuật toán nào phù hợp nhất với dữ liệu và mục tiêu hiện tại?


Từ XGBoost đến LightGBM và CatBoost

XGBoost không phải điểm kết thúc của Boosting.

Hai cái tên khác cực kỳ quan trọng là:

LightGBM – Light Gradient Boosting Machine

CatBoost – Categorical Boosting

Cả ba cùng thuộc thế giới Gradient Boosted Trees nhưng có những triết lý thiết kế khác nhau.

Có thể hình dung:

Gradient Boosting
┌───────┼───────┐
↓ ↓ ↓
XGBoost LightGBM CatBoost

Đây cũng là ba công cụ mà Data Scientist thường so sánh khi làm việc với Tabular Data.


Kết luận

XGBoost không đơn giản là “Gradient Boosting nhưng nhanh hơn”.

Sức mạnh của nó đến từ việc kết hợp:

Gradient Boosting

  • Regularization
  • Tree Pruning
  • Sampling
  • Missing Value Handling
  • System Optimization

Điều quan trọng nhất cần nhớ là:

XGBoost không cố tạo ra một Decision Tree hoàn hảo. Nó liên tục bổ sung các cây để cải thiện mô hình hiện tại, đồng thời kiểm soát độ phức tạp của toàn bộ hệ thống.

Đây là lý do XGBoost trở thành một trong những công cụ có ảnh hưởng lớn trong Machine Learning với dữ liệu dạng bảng.


Tài liệu tham khảo

XGBoost Documentation
Tài liệu chính thức XGBoost

XGBoost: A Scalable Tree Boosting System – Chen & Guestrin
Đọc bài báo XGBoost

Scikit-learn – Gradient Boosting
Scikit-learn Ensemble Guide


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, XGBoost và xây dựng 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