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:
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ự:
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:
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:
Có thể được đưa vào các Bin:
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:
Đ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à:
Với Level-wise Growth, thuật toán phát triển các Node theo từng tầng:
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ử:
Nếu Leaf A có Gain lớn hơn, LightGBM ưu tiên A:
Sau đó giả sử D lại có Gain lớn nhất:
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:
LightGBM ưu tiên:
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ụ:
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
và
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ụ:
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:
Nếu quá nhỏ:
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ử:
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:
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:
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ụ:
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.
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ụ:
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:
hoặc:
Đâ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ụ:
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:
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ụ:
Đâ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:
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:
Đ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à:
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
🐍 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

