XGBoost
XGBoost là thư viện gradient boosting lần lượt bổ sung các cây quyết định có điều chuẩn, và là lựa chọn hàng đầu cho dữ liệu dạng bảng. Bài viết giải thích cách hoạt động kèm code.
XGBoost (eXtreme Gradient Boosting) là thư viện mã nguồn mở dành cho cây quyết định tăng cường gradient và là một trong những công cụ được dùng rộng rãi nhất cho dữ liệu dạng bảng. Tianqi Chen bắt đầu dự án này tại Đại học Washington dưới dạng một đề tài nghiên cứu và phát hành vào năm 2014; bài báo KDD năm 2016 XGBoost: Hệ thống tăng cường cây có khả năng mở rộng, được viết cùng Carlos Guestrin, mô tả hàm mục tiêu có regularization và thiết kế hệ thống của thư viện. Thư viện, do cộng đồng DMLC duy trì, xử lý phân loại, hồi quy và xếp hạng từ Python, R, JVM và C, chạy trên CPU và GPU, đồng thời mở rộng quy mô bằng Dask và Spark. Bài báo cho biết 17 trong số 29 giải pháp đoạt giải thử thách được đăng trên blog Kaggle năm 2015 đã sử dụng XGBoost.
Cách XGBoost hoạt động#
XGBoost xây dựng một tổ hợp model theo tuần tự: bắt đầu bằng một dự đoán hằng số rồi thêm một cây sau mỗi vòng boosting; mỗi cây được huấn luyện để giảm hàm mất mát còn lại từ các cây trước đó. Dự đoán cuối cùng là tổng đầu ra của các cây, mỗi đầu ra được thu nhỏ theo tốc độ học (eta, mặc định là 0.3) để không cây nào chi phối kết quả. Hai ý tưởng trong bài báo định hình cách xây dựng từng cây:
- Hàm mục tiêu bậc hai: Với mỗi hàng, XGBoost tính đạo hàm bậc nhất và bậc hai của hàm mất mát theo dự đoán hiện tại: gradient
gvà Hessianh. Một lá có tổng gradient của các hàng làGvà tổng Hessian làHsẽ nhận trọng số-G / (H + λ), tương ứng với bước Newton mà các optimizer bậc hai thực hiện. - Cây có regularization: Hàm mục tiêu cộng thêm một khoản phạt
γcho mỗi lá và khoản phạt L2λtrên trọng số các lá, cùng khoản phạt L1 tùy chọnα. Chỉ giữ một phép phân nhánh khi mức cải thiện,½ [G_L²/(H_L + λ) + G_R²/(H_R + λ) − (G_L + G_R)²/(H_L + H_R + λ)] − γ, dương; nhờ đó, regularization được tích hợp vào quá trình xây dựng cây và hạn chế overfitting.
Cây bị giới hạn độ sâu (max_depth, mặc định là 6) và phát triển theo từng tầng, trừ khi grow_policy="lossguide" chuyển sang phát triển theo lá. Quá trình huấn luyện thường dùng early stopping trên tập validation:
Giá trị thiếu, tốc độ và khả năng mở rộng#
Cơ chế tìm phép phân nhánh nhận biết độ thưa của XGBoost có thể huấn luyện trên các bảng có giá trị khuyết mà không cần bước điền giá trị thiếu. Ở mỗi phép phân nhánh, cơ chế thử đưa các hàng có giá trị thiếu sang trái rồi sang phải, giữ hướng có mức cải thiện cao hơn làm nhánh mặc định của nút đó; cơ chế tương tự cho phép quét riêng các phần tử được lưu trữ trong ma trận thưa, chẳng hạn ma trận mã hóa one-hot. Ví dụ này che 30% tổng giá trị đặc trưng trong tập dữ liệu ung thư vú của scikit-learn và huấn luyện trực tiếp với các giá trị khuyết:
import numpy as np
import xgboost as xgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Hide 30% of all values; each split learns a default branch for missing ones
rng = np.random.default_rng(0)
X_train_nan = np.where(rng.random(X_train.shape) < 0.3, np.nan, X_train)
X_test_nan = np.where(rng.random(X_test.shape) < 0.3, np.nan, X_test)
for name, train, test in [("complete", X_train, X_test), ("30% missing", X_train_nan, X_test_nan)]:
model = xgb.XGBClassifier(n_estimators=200, max_depth=4, learning_rate=0.1)
model.fit(train, y_train)
print(f"{name}: accuracy {model.score(test, y_test):.3f}")Kết quả in ra độ chính xác kiểm thử là 0.972 trên dữ liệu đầy đủ và 0.951 khi 30% giá trị bị thiếu trong cả tập huấn luyện lẫn tập kiểm thử.
Để tăng tốc, phương thức cây mặc định hist chia mỗi đặc trưng thành tối đa 256 bin (max_bin) rồi tìm phép phân nhánh trên ranh giới giữa các bin; LightGBM cũng dùng cách tiếp cận này, trong khi exact xét mọi giá trị đã sắp xếp. Đặt device="cuda" sẽ chuyển quá trình huấn luyện sang GPU NVIDIA; enable_categorical=True xử lý trực tiếp các cột phân loại, còn chế độ bộ nhớ ngoài cho phép huấn luyện trên tập dữ liệu lớn hơn RAM. Kể từ phiên bản 2.1, model được lưu theo mặc định ở định dạng nhị phân UBJSON.
XGBoost và các phương pháp liên quan#
- LightGBM: Framework boosting của Microsoft ra mắt năm 2016, mặc định phát triển cây theo từng lá và bổ sung lấy mẫu hàng dựa trên gradient cùng gộp các đặc trưng thưa. Hiện cả hai thư viện đều mặc định sử dụng histogram và chia sẻ phần lớn kỹ thuật.
- CatBoost: Thư viện boosting của Yandex, xây dựng cây đối xứng và mã hóa đặc trưng phân loại bằng thống kê mục tiêu có thứ tự.
- Rừng ngẫu nhiên: Phương pháp bagging huấn luyện độc lập các cây sâu trên các mẫu bootstrap rồi lấy trung bình, giúp giảm phương sai và không cần tinh chỉnh nhiều.
- Deep learning: Tiêu chuẩn cho đầu vào phi cấu trúc như hình ảnh, âm thanh và văn bản, trong đó mạng học đặc trưng từ dữ liệu thô. Với dữ liệu dạng bảng gồm các đặc trưng được thiết kế sẵn, cây tăng cường vẫn là baseline mà các phương pháp khác cần vượt qua; các model nền tảng cho dữ liệu dạng bảng như TabPFN hiện cũng cạnh tranh với chúng trên tập dữ liệu nhỏ.
Ứng dụng thực tế#
- Phát hiện gian lận và rủi ro tín dụng: Các công ty thanh toán chấm điểm từng giao dịch dựa trên số tiền, đơn vị bán hàng, vị trí, thiết bị và lịch sử tài khoản; đây là tác vụ mô hình hóa dự đoán cốt lõi, trong đó suy luận nhanh của XGBoost phù hợp với các quyết định theo thời gian thực.
- Kiểm tra bằng thị giác: Hệ thống chất lượng trong sản xuất kết hợp dữ liệu camera và cảm biến. Dự đoán từ Ultralytics YOLO26 cung cấp dữ liệu từ camera:
result.summary()trả về lớp, confidence và tọa độ box của từng lỗi được phát hiện; nhà máy có thể tổng hợp dữ liệu theo từng bộ phận và kết hợp với chỉ số nhiệt độ, áp suất làm feature cho model XGBoost dự đoán lỗi. - Xếp hạng và dự đoán lượt nhấp:
XGBRankermặc định huấn luyện với hàm mục tiêurank:ndcgđể sắp xếp kết quả tìm kiếm, còn bộ phân loại nhị phân dự đoán tỷ lệ nhấp quảng cáo. - Các bài toán đoạt giải cuộc thi: Bài báo KDD liệt kê những tác vụ đứng sau các giải pháp chiến thắng năm 2015, gồm dự đoán doanh số cửa hàng, phân loại sự kiện vật lý năng lượng cao, phân loại phần mềm độc hại và dự đoán học viên bỏ học trong các khóa học trực tuyến quy mô lớn.










