LightGBM
LightGBM là framework gradient boosting phát triển cây quyết định theo từng lá từ histogram đặc trưng để huấn luyện nhanh trên các dataset dạng bảng lớn.
LightGBM (Light Gradient Boosting Machine) là framework gradient boosting mã nguồn mở, huấn luyện các ensemble gồm decision tree trên dữ liệu dạng bảng, được xây dựng để đạt tốc độ cao và dùng ít bộ nhớ trên các dataset lớn. Microsoft phát hành framework này vào năm 2016 và mô tả các thuật toán trong bài báo NeurIPS 2017 LightGBM: Cây quyết định Gradient Boosting hiệu quả cao. Tháng 3 năm 2026, repository chính thức được chuyển sang tổ chức GitHub lightgbm-org dưới quyền các maintainer cũ. LightGBM xử lý classification, regression và ranking từ Python, R, C++ và command line; framework này xuất hiện trong nhiều lời giải chiến thắng tại các cuộc thi machine learning. Với các bảng dữ liệu cỡ vừa, khoảng 10,000 hàng, những tree ensemble như LightGBM vẫn thường vượt trội hơn deep learning.
Cách LightGBM hoạt động#
Gradient boosting xây dựng từng cây một. Mỗi cây mới được khớp với gradient của hàm loss theo dự đoán của ensemble hiện tại; với sai số bình phương, các gradient này chính là residual, nên cây mới sửa các lỗi mà những cây trước đó còn để lại. Dự đoán của model là tổng đầu ra của tất cả cây, mỗi đầu ra được nhân với một learning rate. Bước tốn kém nhất là tìm phép chia tốt nhất cho từng node; LightGBM tăng tốc bước này bằng bốn kỹ thuật:
- Phép chia dựa trên histogram: Trước khi huấn luyện, LightGBM chia mỗi feature liên tục thành tối đa 255 bin (
max_bin). Việc tìm phép chia quét qua ranh giới các bin thay vì từng giá trị đã sắp xếp; sau một lần chia, histogram của nhánh con nhỏ hơn được tạo từ dữ liệu, vì histogram của nhánh lớn hơn bằng histogram của nút cha trừ đi histogram của nhánh nhỏ hơn. - Phát triển theo lá: LightGBM luôn chia lá có phép chia tốt nhất giúp giảm loss nhiều nhất, cho đến khi cây có
num_leaveslá (mặc định là 31), thay vì chia mọi node ở cùng một độ sâu trước khi đi sâu hơn. Với cùng số lá, cách này đạt loss thấp hơn phát triển theo tầng, đồng thời tạo ra các cây sâu và lệch có thể overfit trên dataset nhỏ. - Lấy mẫu một phía dựa trên gradient (GOSS): Các hàng có gradient lớn là những hàng mà model vẫn dự đoán kém. Với
data_sample_strategy="goss", LightGBM giữ lại 20% số hàng có gradient lớn nhất, lấy mẫu ngẫu nhiên thêm 10% từ phần còn lại và tăng trọng số của mẫu đó để phân phối dữ liệu gần với ban đầu. - Gộp feature độc quyền (EFB): Các feature thưa hiếm khi đồng thời khác 0, chẳng hạn các cột one-hot, được gộp thành một feature duy nhất, giúp giảm số histogram cần tạo.
Mỗi cây được phát triển bằng cách lặp lại quá trình tìm phép chia cho đến khi hết ngân sách lá hoặc không còn phép chia nào hữu ích; boosting lặp lại quy trình này ở mỗi vòng:
LightGBM cũng chia trực tiếp các feature phân loại được mã hóa bằng số nguyên khi chúng được liệt kê trong categorical_feature, nhóm các category tại mỗi lần chia mà không cần one-hot encoding, đồng thời xử lý giá trị bị thiếu theo mặc định. Việc huấn luyện chạy trên CPU, trên GPU (device_type="gpu" hoặc "cuda"), và trên nhiều máy bằng các learner phân tán.
Huấn luyện và tinh chỉnh LightGBM#
Các class LGBMClassifier, LGBMRegressor và LGBMRanker theo phong cách scikit-learn đáp ứng hầu hết trường hợp sử dụng. Vì cây phát triển theo lá có thể rất sâu, các tham số chính để chống overfit là num_leaves, min_child_samples (mặc định 20 hàng mỗi lá) và max_depth, cùng với learning rate và số lượng cây; các giá trị này thường được xác định bằng tinh chỉnh hyperparameter hoặc early stopping trên validation set. Lợi ích của histogram và phát triển theo lá thể hiện rõ khi so với gradient boosting chia chính xác cổ điển của scikit-learn trên bảng dữ liệu tổng hợp gồm 20,000 hàng và 40 feature:
import time
import lightgbm as lgb
from sklearn.datasets import make_classification
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import train_test_split
X, y = make_classification(n_samples=20_000, n_features=40, n_informative=15, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 200 trees each: exact split search vs. LightGBM's histograms and leaf-wise growth
for model in (GradientBoostingClassifier(n_estimators=200), lgb.LGBMClassifier(n_estimators=200, verbose=-1)):
start = time.perf_counter()
model.fit(X_train, y_train)
seconds = time.perf_counter() - start
print(f"{type(model).__name__}: {seconds:.1f} s, accuracy {model.score(X_test, y_test):.3f}")Trên CPU Apple M5 Pro, LightGBM phát triển 200 cây, mỗi cây tối đa 31 lá, trong chưa đầy một giây; trong khi scikit-learn cần khoảng 20 giây để tạo 200 cây chia chính xác có độ sâu 3. Các cây lớn hơn của LightGBM đạt độ chính xác kiểm thử 0.956, so với 0.901. Model đã huấn luyện có thể được lưu dưới dạng text hoặc JSON; onnxmltools chuyển đổi model sang ONNX để triển khai inference bên ngoài Python.
LightGBM và các phương pháp liên quan#
- XGBoost: Thư viện gradient boosting đã phổ biến hóa boosting có regularization, bậc hai vào năm 2014. Theo mặc định, thư viện phát triển các cây giới hạn độ sâu (
max_depth=6), hỗ trợ phát triển theo lá bằnggrow_policy="lossguide"và mặc định sử dụng phương pháp tìm phép chia bằng histogram từ phiên bản 2.0; do đó, hiện nay hai thư viện chia sẻ hầu hết kỹ thuật. - CatBoost: Thư viện boosting của Yandex, phát hành năm 2017, xây dựng các cây đối xứng và mã hóa feature phân loại bằng thống kê target có thứ tự để hạn chế rò rỉ target.
- Random forest: Huấn luyện độc lập các cây sâu trên những mẫu bootstrap rồi lấy trung bình dự đoán của chúng, qua đó giảm variance.
- HistGradientBoosting:
HistGradientBoostingClassifiervàHistGradientBoostingRegressorcủa scikit-learn là các triển khai lấy cảm hứng từ LightGBM, cũng chia feature thành các bin histogram theo cùng cách. - Foundation model dạng bảng: Các Transformer pretrained như TabPFN dự đoán trên bảng dữ liệu nhỏ chỉ bằng một lượt forward, không cần huấn luyện riêng cho từng dataset.
Ứng dụng thực tế#
- Gian lận và rủi ro tín dụng: Ngân hàng chấm điểm giao dịch và đơn vay dựa trên lịch sử tài khoản, đơn vị bán hàng, số tiền và feature thời điểm; khả năng inference nhanh của LightGBM phù hợp với các quyết định theo từng giao dịch.
- Dự báo nhu cầu: Nhà bán lẻ dự đoán doanh số theo sản phẩm và cửa hàng dựa trên doanh số trễ, giá, khuyến mãi và feature lịch. Lưu lượng khách là một đầu vào phổ biến: đếm đối tượng bằng Ultralytics YOLO26 theo dõi những người đi qua một đường trong video cửa hàng và báo cáo số lượt vào, ra theo từng class; tổng số theo giờ trở thành feature cho dự báo nhân sự bằng LightGBM.
- Ranking trong tìm kiếm và đề xuất:
LGBMRankermặc định huấn luyện với objective LambdaRank, sắp xếp tài liệu hoặc sản phẩm trong từng nhóm truy vấn để tối ưu normalized discounted cumulative gain (NDCG).










