Gradient Boosting là gì: thuật toán học máy cho dữ liệu bảng

Gradient Boosting (GBM) là một trong những thuật toán học máy phổ biến nhất để giải quyết bài toán dự báo trên dữ liệu có cấu trúc (tabular data). Thuật toán hoạt động dựa trên nguyên lý boosting: xây dựng mô hình theo thứ tự, mỗi mô hình mới học hỏi để sửa những sai sót còn lại của các mô hình trước đó. Kết quả là một mô hình tổng hợp rất mạnh, thường chiếm ưu thế trên dữ liệu bảng.

Gradient Boosting hoạt động như thế nào

Thay vì huấn luyện một cây quyết định duy nhất trên dữ liệu gốc, Gradient Boosting khởi tạo bằng một mô hình cực kỳ đơn giản (thường là một hằng số), rồi mỗi vòng lặp thêm vào một mô hình phụ yếu (weak learner) được huấn luyện trên phần sai sót còn lại của mô hình hiện tại. Công thức dự đoán cuối cùng là tổng của tất cả các mô hình phụ:

y_hat(i) = F_M(x_i) = sum h_m(x_i) voi m = 1 den M

Trong đó M chính là số vòng lặp (n_estimators), còn mỗi h_m là một cây quyết định có độ sâu giới hạn bởi max_depth. Vì mỗi cây mới chỉ học phần còn lại, mô hình tập trung được vào những mẫu dữ liệu khó dự đoán, từ đó hạ đồng thời cả sai lệch (bias) và phương sai (variance). Cách tổng hợp theo thứ tự này được scikit-learn mô tả chi tiết trong phần ensemble learning.

Sơ đồ Gradient Boosting: dữ liệu đầu vào được chuyển thành dữ liệu có trọng số qua từng bộ phân loại yếu rồi cộng lại thành mô hình ensemble

Bộ siêu tham số quan trọng

Các thư viện hiện đại như scikit-learn, XGBoost, LightGBM và CatBoost dùng chung một nhóm siêu tham số nền tảng, chỉ khác nhau ở tên gọi và phạm vi giá trị cho phép. Bảng dưới đây tổng hợp giá trị mặc định theo tài liệu chính thức của từng thư viện.

Tham số Ý nghĩa Mặc định đáng chú ý
learning_rate (XGBoost gọi là eta) Quy mô đóng góp của mỗi cây mới vào tổng dự đoán scikit-learn 0.1, XGBoost 0.3, LightGBM 0.1
n_estimators Số cây được thêm vào 100 ở cả bốn thư viện
max_depth Độ sâu tối đa mỗi cây scikit-learn 3, XGBoost 6, LightGBM không giới hạn
subsample Tỷ lệ mẫu dữ liệu cho mỗi cây 1.0 (dùng toàn bộ dữ liệu)
colsample_bytree Tỷ lệ đặc trưng được xét khi tách nút 1.0, XGBoost cho phép khoảng (0, 1]
min_data_in_leaf Số mẫu tối thiểu trong một lá LightGBM 20

Giá trị learning_rate nhỏ buộc mô hình phải dùng nhiều cây hơn để hội tụ, đổi lại thường cho độ chính xác cao hơn và ít overfit hơn. Ngược lại, max_depth quá lớn khiến từng cây dễ ghi nhớ dữ liệu nhiễu. Tham số đầy đủ của XGBoost nằm trong tài liệu tham số chính thức, còn bộ mặc định của scikit-learn nằm ở trang GradientBoostingRegressor.

Boosting khác bagging ở chỗ nào

Random Forest cũng dùng nhiều cây quyết định, nhưng triết lý hoàn toàn đối lập với Gradient Boosting. Việc so sánh này quyết định việc bạn chọn thuật toán nào cho bài toán của mình.

  • Random Forest (bagging): mỗi cây được xây trên một mẫu bootstrap độc lập và có thể phát triển tới độ sâu tối đa, sau đó lấy trung bình hoặc đa số phiếu. Các cây không biết gì về nhau nên rất nhanh khi huấn luyện song song và ít khi overfit.
  • Gradient Boosting (boosting): các cây được xây tuần tự, cây sau nhận đầu vào là sai số của tổng các cây trước. Nhờ vậy mô hình biểu diễn được hàm phức tạp hơn với cùng số cây, đổi lại là dễ overfit nếu không kiểm soát learning_rate và số vòng lặp.

Quy tắc thực hành: dữ liệu sạch, cần độ chính xác cao nhất thì chọn Gradient Boosting; dữ liệu nhiều nhiễu, cần mô hình ổn định và ít tinh chỉnh thì Random Forest vẫn là lựa chọn an toàn.

Sơ đồ Bagging của Random Forest: dữ liệu gốc được chia thành nhiều mẫu bootstrap, các bộ phân loại được dựng song song rồi tổng hợp kết quả

XGBoost, LightGBM, CatBoost khác nhau ra sao

Ba thư viện nổi bật nhất đều dựa trên Gradient Boosting nhưng có những cải tiến riêng đáng chú ý:

  • XGBoost: dùng thuật toán tìm điểm tách nhận biết giá trị thiếu và một sketch định lượng trọng số, cho phép huấn luyện ngoài lõi (out-of-core) trên tập dữ liệu hàng tỷ dòng. Trong bài báo gốc, XGBoost nhanh hơn khoảng 10 lần so với bản Gradient Boosting của scikit-learn trên tập Higgs-1M với độ chính xác gần như tương đương (AUC 0.8304 so với 0.8302). Chi tiết tốc độ nằm trong bài báo XGBoost trên arXiv.
  • LightGBM: kết hợp GOSS (Gradient-based One-Side Sampling) và EFB (Exclusive Feature Bundling) để không phải xét toàn bộ dữ liệu ở mỗi nhánh, nhờ đó tăng tốc huấn luyện hơn 20 lần so với GBDT truyền thống với độ chính xác gần như không đổi, theo bài báo LightGBM tại NeurIPS.
  • CatBoost: xử lý trực tiếp đặc trưng dạng danh mục bằng ordered boosting, tránh rò rỉ thông tin mục tiêu. Đổi lại chế độ ordered chậm hơn khoảng 1.7 lần so với chế độ thường trên tập dữ liệu nhỏ, như lưu ý trong bài báo CatBoost.

Tham số mặc định đầy đủ của LightGBM được liệt kê tại trang Parameters, còn nguyên lý dựng cây tuần tự của CatBoost nằm ở tài liệu thuật toán.

Ứng dụng thực tế và lưu ý khi dùng

Gradient Boosting là lựa chọn mặc định trong nhiều ngành công nghiệp nhờ tốc độ học nhanh và độ chính xác cao trên dữ liệu có cấu trúc:

  • Ngân hàng: chấm điểm tín dụng, phát hiện gian lận giao dịch.
  • Thương mại điện tử: dự đoán tỷ lệ nhấp (CTR), gợi ý sản phẩm.
  • Y tế: phân loại bệnh dựa trên chỉ số xét nghiệm và ảnh y khoa.
  • Sản xuất: dự báo thời gian hỏng thiết bị, tối ưu chuỗi cung ứng.
  • Quảng cáo trực tuyến: ước lượng giá thầu và tỷ lệ chuyển đổi.

Hai điểm cần nhớ khi triển khai. Thứ nhất, vì mỗi cây phụ thuộc kết quả cây trước, thuật toán này khó song song hóa trên một máy đơn, nên tăng tốc chủ yếu đến từ thư viện và phần cứng hơn là từ thuật toán. Thứ hai, mô hình dễ học thói quen của dữ liệu huấn luyện, nên luôn dùng early stopping và kiểm tra trên tập validation để tránh overfit. Nếu dữ liệu quy mô rất lớn và cần tốc độ dự đoán cao, hãy cân nhắc LightGBM; nếu có nhiều cột dạng danh mục, CatBoost tiết kiệm thời gian chuẩn bị dữ liệu đáng kể.

Biểu đồ hiệu năng Gradient Boosting qua các vòng lặp huấn luyện, trục hoành là số vòng lặp boosting
Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Graph Neural Network là gì: cách AI học trên dữ liệu đồ thị

Graph Neural Network là gì: cách AI học trên dữ liệu đồ thị Graph Neural Network (GNN) là lớp mạng nơ-ron được thiết kế riêng cho dữ liệu có cấu…

Xem thêm

Gradient Descent là gì: Thuật toán tối ưu mọi mô hình học máy

Gradient Descent là gì: Thuật toán tối ưu mọi mô hình học máy Gradient descent là thuật toán tối ưu cơ bản nhất của học máy, dùng để tìm các…

Xem thêm

BERT là gì: mô hình nền tảng cho xử lý ngôn ngữ tự nhiên

BERT là gì: mô hình nền tảng cho xử lý ngôn ngữ tự nhiên BERT (Bidirectional Encoder Representations from Transformers) là mô hình ngôn ngữ hai chiều dựa trên kiến…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất