LightGBM là gì? Vì sao LightGBM có thể huấn luyện nhanh trên dữ liệu lớn?

Chatgpt Image Aug 17, 2026, 02_09_59 Pm

Series: Machine Learning Fundamentals – Bài 23

Ở bài trước, chúng ta đã tìm hiểu XGBoost – một hệ thống Gradient Boosted Trees mạnh mẽ, kết hợp Boosting với Regularization và nhiều kỹ thuật tối ưu tính toán.

Nhưng hãy tưởng tượng dataset tiếp tục lớn lên:

100.000 rows
1.000.000 rows
10.000.000 rows
50 Features
500 Features
5.000 Features

Lúc này, độ chính xác không còn là vấn đề duy nhất.

Chúng ta còn phải quan tâm:

Mô hình mất bao lâu để Training?

Cần bao nhiêu RAM?

Có thể xử lý hàng triệu quan sát hay không?

Đó là một trong những bài toán mà LightGBM được thiết kế để giải quyết.


LightGBM là gì?

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

Light Gradient Boosting Machine

Đây là một framework Gradient Boosting dựa trên Decision Tree, ban đầu được phát triển bởi Microsoft.

Giống XGBoost, LightGBM xây dựng nhiều cây theo trình tự:

Tree 1
Tree 2
Tree 3
Final Prediction

Trong đó mỗi cây mới giúp cải thiện mô hình hiện tại.

Nhưng LightGBM sử dụng một số chiến lược khác biệt nhằm tăng hiệu quả Training, đặc biệt trên các dataset lớn.

Tài liệu chính thức của dự án mô tả LightGBM là một framework Gradient Boosting dựa trên các thuật toán học sử dụng cây. LightGBM Documentation


Vấn đề của việc tìm Split

Hãy quay lại Decision Tree.

Giả sử có một Feature:

Income

với hàng triệu giá trị khác nhau.

Để tìm Threshold tốt:

Income < 10.000.000?
Income < 10.100.000?
Income < 10.200.000?
Income < 10.300.000?

Nếu liên tục kiểm tra rất nhiều giá trị tiềm năng trên nhiều Feature và hàng triệu dòng dữ liệu, chi phí tính toán có thể tăng mạnh.

LightGBM sử dụng một ý tưởng quan trọng để giải quyết vấn đề này:

Histogram-based Learning


Histogram-based Learning là gì?

Thay vì xử lý mọi giá trị Feature như một Candidate Split riêng biệt, LightGBM có thể nhóm các giá trị liên tục thành các Bin.

Ví dụ Feature:

Income
10.1
10.3
10.5
10.8
11.2
11.6
12.1
12.7
13.4
14.2

Có thể được đưa vào các Bin:

Bin 1 → 10–11
Bin 2 → 11–12
Bin 3 → 12–13
Bin 4 → 13–14
Bin 5 → 14+

Thay vì phải xét toàn bộ giá trị riêng lẻ, thuật toán có thể tìm Split dựa trên Histogram.

Có thể hình dung:

Continuous Values
Binning
┌────┬────┬────┬────┬────┐
│Bin1│Bin2│Bin3│Bin4│Bin5│
└────┴────┴────┴────┴────┘
Search Split

Điều này giúp giảm đáng kể chi phí tính toán trong nhiều tình huống.


LightGBM xây cây khác như thế nào?

Đây là một trong những điểm nổi tiếng nhất của LightGBM.

Nhiều Tree Boosting Algorithm có thể phát triển cây theo kiểu Level-wise.

LightGBM nổi bật với chiến lược:

Leaf-wise Tree Growth

Để hiểu điều này, chúng ta cần so sánh hai cách xây cây.


Level-wise Growth

Giả sử cây hiện tại là:

ROOT
/ \
A B

Với Level-wise Growth, thuật toán phát triển các Node theo từng tầng:

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

Sau đó tiếp tục tầng tiếp theo.

Cách này tạo ra cây tương đối cân bằng.


Leaf-wise Growth

LightGBM lại hỏi:

Leaf nào nếu được Split tiếp sẽ giúp giảm Loss nhiều nhất?

Giả sử:

ROOT
/ \
A B

Nếu Leaf A có Gain lớn hơn, LightGBM ưu tiên A:

ROOT
/ \
A B
/ \
C D

Sau đó giả sử D lại có Gain lớn nhất:

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

Cây có thể trở nên không cân bằng.

Nhưng mỗi lần Split đều tập trung vào vị trí có tiềm năng giảm Loss nhiều nhất.


Tại sao Leaf-wise có thể mạnh?

Giả sử cây đang có 10 Leaf.

Chỉ một Leaf đang chứa những Pattern rất khó học.

Level-wise Growth có thể tiếp tục mở rộng nhiều Node cùng tầng.

Leaf-wise Growth lại tập trung:

Chỗ nào còn sai nhiều nhất thì đầu tư thêm khả năng học vào chỗ đó.

Có thể hình dung:

Leaf A → Gain 0.02
Leaf B → Gain 0.08
Leaf C → Gain 0.41 ← lớn nhất
Leaf D → Gain 0.05

LightGBM ưu tiên:

Split Leaf C

thay vì mở rộng tất cả Leaf cùng lúc.


Nhưng Leaf-wise có một rủi ro

Khả năng tập trung mạnh vào một nhánh cũng tạo ra nguy cơ:

Overfitting.

Đặc biệt khi dataset nhỏ, cây có thể phát triển quá sâu tại một số khu vực.

Ví dụ:

ROOT
├── A
└── B
└── C
└── D
└── E
└── F

Mô hình có thể học quá chi tiết một nhóm nhỏ trong Training Data.

Vì vậy Hyperparameter như:

num_leaves

max_depth

có vai trò rất quan trọng.


num_leaves – Hyperparameter đặc trưng của LightGBM

num_leaves kiểm soát số lượng Leaf tối đa của một Tree.

Ví dụ:

num_leaves = 31

nghĩa là mỗi Tree được giới hạn số Leaf theo cấu hình đó.

Nếu num_leaves quá lớn:

Tree Complexity ↑
Training Fit ↑
Overfitting Risk ↑

Nếu quá nhỏ:

Tree Complexity ↓
Learning Capacity ↓
Underfitting Risk ↑

Vì vậy, num_leaves là một trong những Hyperparameter đầu tiên cần chú ý khi Tune LightGBM.


Gradient-based One-Side Sampling – GOSS

LightGBM còn được biết đến với một kỹ thuật gọi là:

Gradient-based One-Side Sampling (GOSS).

Ý tưởng bắt đầu từ Gradient.

Trong Boosting, Gradient lớn thường cho thấy những quan sát mà mô hình hiện tại đang xử lý chưa tốt.

Giả sử:

Sample A → Gradient 0.02
Sample B → Gradient 0.01
Sample C → Gradient 1.25
Sample D → Gradient 0.04
Sample E → Gradient 0.98

C và E đang có Gradient lớn.

Chúng chứa nhiều thông tin về những khu vực mô hình cần cải thiện.

GOSS ưu tiên giữ những mẫu có Gradient lớn, đồng thời lấy mẫu từ nhóm Gradient nhỏ theo một cơ chế có điều chỉnh.

Mục tiêu là:

Giảm số lượng dữ liệu phải xử lý mà vẫn giữ lại nhiều thông tin hữu ích cho việc tìm Split.


Exclusive Feature Bundling – EFB

Một kỹ thuật khác được giới thiệu cùng LightGBM là:

Exclusive Feature Bundling (EFB).

Giả sử dataset có rất nhiều Feature thưa (Sparse Features).

Ví dụ sau One-Hot Encoding:

A B C D E
Row 1 1 0 0 0 0
Row 2 0 0 1 0 0
Row 3 0 1 0 0 0
Row 4 0 0 0 0 1

Nhiều Feature gần như không đồng thời có giá trị khác 0.

EFB khai thác đặc điểm này để bundle một số Feature lại với nhau.

Mục tiêu là giảm số Feature cần xử lý và tăng hiệu quả Training.


Ba ý tưởng quan trọng

Đến đây có thể tóm tắt LightGBM bằng ba khái niệm nổi bật:

LIGHTGBM
├── Histogram
│ ↓
│ Giảm chi phí tìm Split
├── GOSS
│ ↓
│ Tập trung vào mẫu có Gradient lớn
└── EFB
Giảm số Feature hiệu dụng

Các kỹ thuật này hướng đến một mục tiêu chung:

Làm Gradient Boosting hiệu quả hơn trên dữ liệu lớn và nhiều chiều.

Chi tiết về GOSS và EFB được trình bày trong bài báo gốc về LightGBM. LightGBM: A Highly Efficient Gradient Boosting Decision Tree


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

Cả hai đều thuộc nhóm Gradient Boosted Trees.

Nhưng implementation và chiến lược tối ưu có nhiều khác biệt.

XGBoost LightGBM
Gradient Boosted Trees Gradient Boosted Trees
Hỗ trợ Histogram Algorithm Histogram-based rất đặc trưng
Tree growth tùy cấu hình Nổi bật với Leaf-wise
Regularization mạnh Kiểm soát bằng num_leaves, depth…
Hiệu suất rất mạnh Được thiết kế hướng tới hiệu quả trên dữ liệu lớn
Phổ biến rộng rãi Phổ biến với Tabular Data lớn

Không nên hiểu:

LightGBM luôn nhanh hơn XGBoost.

Kết quả phụ thuộc vào:

  • Dataset.
  • Hardware.
  • Hyperparameter.
  • Phiên bản thư viện.
  • Tree Method.
  • Số Feature.
  • Số Sample.

Cách tốt nhất vẫn là Benchmark trên chính bài toán của mình.


LightGBM có xử lý Categorical Feature không?

Có.

Đây là một điểm đáng chú ý.

Thay vì bắt buộc One-Hot Encoding mọi Categorical Feature, LightGBM hỗ trợ cách xử lý Feature phân loại trong thuật toán.

Ví dụ:

City
Hanoi
HCMC
Da Nang
Hai Phong
Can Tho

Trong một số workflow, chúng ta có thể khai báo đây là Categorical Feature để LightGBM xử lý theo cơ chế của nó.

Điều này có thể tránh việc biến một Feature có nhiều Category thành hàng trăm hoặc hàng nghìn cột One-Hot.


Những Hyperparameter quan trọng

num_leaves

Số Leaf tối đa.

Đây là một trong những Hyperparameter quan trọng nhất.


max_depth

Giới hạn độ sâu của Tree.

Có thể giúp kiểm soát Overfitting.


learning_rate

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

Learning Rate nhỏ
Học chậm hơn
Thường cần nhiều Trees hơn

n_estimators

Số vòng Boosting trong API phổ biến.


min_child_samples

Kiểm soát số quan sát tối thiểu cần có trong Leaf theo API/configuration tương ứng.

Tăng giá trị này có thể giúp hạn chế việc Tree tạo các Leaf quá nhỏ.


subsample

Tỷ lệ Sample được sử dụng theo cấu hình sampling phù hợp.


colsample_bytree

Tỷ lệ Feature được sử dụng trên mỗi Tree.


reg_alpha

L1 Regularization.


reg_lambda

L2 Regularization.


LightGBM có cần Feature Scaling không?

Thông thường:

Không bắt buộc.

Giống các mô hình Decision Tree khác, LightGBM chủ yếu tìm các Threshold để chia dữ liệu.

Ví dụ:

Income < 20.000.000?

Việc đổi Income thành Standardized Value không thay đổi bản chất thứ tự của dữ liệu.

Đây là một lợi thế thực tế so với những thuật toán nhạy với khoảng cách như KNN hoặc SVM.


LightGBM có dễ Overfitting không?

Có thể.

Đặc biệt vì Leaf-wise Growth có khả năng tạo những cây khá phức tạp.

Một số dấu hiệu:

Training Accuracy = 99%
Validation Accuracy = 87%

hoặc:

Training Loss ↓↓↓
Validation Loss ↓

Đây là lúc cần xem xét:

  • num_leaves.
  • max_depth.
  • min_child_samples.
  • Regularization.
  • Feature Selection.
  • Learning Rate.
  • Early Stopping.

Early Stopping

Giống XGBoost, LightGBM có thể sử dụng Early Stopping.

Ví dụ:

Iteration 100
Validation AUC = 0.89
Iteration 200
Validation AUC = 0.92
Iteration 300
Validation AUC = 0.931
Iteration 400
Validation AUC = 0.932
Iteration 500
Validation AUC = 0.931

Sau một thời điểm, mô hình không còn cải thiện trên Validation Set.

Không nhất thiết phải tiếp tục Training đến:

n_estimators = 2000

Early Stopping giúp tìm thời điểm dừng phù hợp hơn.


Khi nào nên thử LightGBM?

LightGBM đặc biệt đáng cân nhắc khi:

  • Dataset lớn.
  • Dữ liệu dạng bảng.
  • Có nhiều Feature.
  • Có Sparse Data.
  • Training Speed quan trọng.
  • Làm Classification.
  • Làm Regression.
  • Cần thử Gradient Boosted Trees mạnh.

Ví dụ:

Fraud Detection
Credit Risk
Customer Churn
Demand Forecasting
Click Prediction
Pricing
Marketing Response

Đây đều là những nhóm bài toán mà Tree-based Models thường được thử nghiệm.


LightGBM có phải lựa chọn tốt nhất không?

Không nhất thiết.

Chúng ta đang có ít nhất ba công cụ rất mạnh:

Gradient Boosted Trees
┌────────┼────────┐
↓ ↓ ↓
XGBoost LightGBM CatBoost

Mỗi công cụ có thế mạnh riêng.

XGBoost: hệ sinh thái trưởng thành, linh hoạt, Regularization mạnh.

LightGBM: tập trung mạnh vào tốc độ và khả năng xử lý dataset lớn.

CatBoost: đặc biệt nổi bật với Categorical Features.

Vì vậy trong một dự án thực tế, Data Scientist có thể thử cả ba rồi đánh giá bằng Cross Validation.


Không nên chọn Model chỉ vì Benchmark trên Internet

Giả sử một benchmark cho thấy:

LightGBM → 0.94 AUC
XGBoost → 0.92 AUC

Điều đó không có nghĩa LightGBM sẽ tốt hơn trên dữ liệu của bạn.

Dataset khác nhau về:

  • Distribution.
  • Feature.
  • Noise.
  • Missing Values.
  • Sample Size.
  • Class Imbalance.

Do đó:

Benchmark quan trọng nhất là benchmark trên chính dữ liệu của bài toán.


Một workflow thực tế

Một quy trình có thể là:

Raw Data
EDA
Feature Engineering
Train / Validation / Test
Baseline Model
Random Forest
XGBoost
LightGBM
Cross Validation
Hyperparameter Tuning
Final Evaluation
Deployment

Như vậy, LightGBM không phải một công cụ tồn tại độc lập.

Nó nằm trong toàn bộ Machine Learning Pipeline mà chúng ta đã xây dựng xuyên suốt series.


Kết luận

LightGBM là một framework Gradient Boosting được thiết kế để xây dựng các mô hình dựa trên cây một cách hiệu quả, đặc biệt khi dữ liệu lớn.

Ba ý tưởng đáng nhớ nhất là:

Histogram-based Learning

Biến các giá trị liên tục thành các Bin để tăng hiệu quả tìm Split.

Leaf-wise Growth

Ưu tiên phát triển Leaf mang lại mức giảm Loss lớn.

GOSS & EFB

Các kỹ thuật được thiết kế nhằm giảm lượng dữ liệu hoặc số Feature cần xử lý mà vẫn giữ nhiều thông tin hữu ích.

Nếu XGBoost cho chúng ta thấy cách tối ưu Gradient Boosting, LightGBM đưa câu hỏi đi xa hơn:

Làm thế nào để Gradient Boosting vẫn mạnh nhưng có thể hoạt động hiệu quả khi dữ liệu trở nên rất lớn?


Tài liệu tham khảo

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

LightGBM: A Highly Efficient Gradient Boosting Decision Tree
Đọc bài báo LightGBM tại NeurIPS

Microsoft Research – LightGBM
LightGBM Research Project


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

Nếu bạn muốn thực hành Machine Learning, Python và xây dựng các mô hình trên dữ liệu thực tế, 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