← Về danh sách
AI & Dữ liệu
#앙상블#배깅#부스팅#랜덤포레스트#XGBoost#126회
Cập nhật lần cuối · 2026-09-14

Học tổ hợp (Ensemble Learning) — Bagging và Boosting

1. Tổng quan

A. Định nghĩa

Học tổ hợp (Ensemble) là kỹ thuật kết hợp một cách có chiến lược nhiều bộ học yếu (weak learner) để tạo ra một mô hình dự đoán mạnh (strong learner), đồng thời nâng cao độ chính xác dự đoán và độ ổn định khái quát hóa so với mô hình đơn lẻ. Các phương thức tiêu biểu là Bagging kết hợp song song và Boosting kết hợp tuần tự.

Nguyên lý gốc khiến ensemble mạnh mẽ nằm ở trực giác thống kê 'tổng hợp ý kiến của nhiều người thì tốt hơn một người (trí tuệ tập thể, wisdom of crowds)'. Một mô hình có thể quá khớp (overfitting) với một mẫu cụ thể trong dữ liệu huấn luyện hoặc bị chệch (bias) theo một hướng nhất định, và lỗi đó là lỗi riêng của mô hình ấy. Tuy nhiên, khi tổng hợp dự đoán của nhiều mô hình được huấn luyện theo cách·dữ liệu khác nhau, các lỗi có tương quan thấp mà mỗi mô hình mắc phải sẽ triệt tiêu nhau trong quá trình lấy trung bình và phương sai của dự đoán tổng thể giảm xuống. Cũng giống như thay vì hỏi một chuyên gia, hỏi nhiều chuyên gia rồi lấy đa số·trung bình thì ảnh hưởng của phán đoán sai riêng lẻ bị pha loãng. Tiền đề cốt lõi là từng bộ học phải tốt hơn đoán ngẫu nhiên dù chỉ một chút (bộ học yếu), và phải đủ đa dạng (diversity) với nhau. Bởi nếu mọi mô hình cùng sai giống nhau thì gom bao nhiêu cũng vô ích.

Tùy vào cách thiết kế sự 'kết hợp' này, ensemble chia thành hai hướng lớn. Bagging là cách huấn luyện nhiều mô hình 'song song và độc lập' rồi lấy trung bình·bỏ phiếu kết quả, tập trung vào giảm phương sai (variance) của từng mô hình để kiềm chế quá khớp. Ngược lại, Boosting là cách 'nối tuần tự' nhiều mô hình, để mô hình sau tập trung vào phần mô hình trước làm sai, tập trung vào giảm độ chệch (bias) để nâng độ chính xác. Cả hai cùng có mục đích chung là vượt qua giới hạn của mô hình đơn lẻ, nhưng loại lỗi muốn giảm (phương sai với độ chệch) và cấu trúc học (song song với tuần tự) trái ngược nhau nên tạo thành quan hệ bổ sung (complementary).

B. Bối cảnh ra đời và sự cần thiết

Trong học máy truyền thống, kinh nghiệm lặp đi lặp lại cho thấy dù tinh chỉnh một mô hình đơn lẻ kỹ đến đâu thì hiệu năng cũng chạm giới hạn, từ đó hình thành nhận thức rằng "trộn khéo nhiều mô hình hiệu quả hơn làm tốt một mô hình". Bagging của Breiman năm 1996 và AdaBoost của Freund·Schapire cùng năm đã đặt nền móng lý thuyết, sau đó với sự xuất hiện của Random Forest (2001) và họ Gradient Boosting, ensemble trở thành tiêu chuẩn thực tế cho dự đoán dữ liệu có cấu trúc (bảng). Thực tế, phần lớn giải pháp đứng đầu trong các cuộc thi dữ liệu như Kaggle dùng họ boosting như XGBoost·LightGBM·CatBoost hoặc stacking — xếp chồng nhiều mô hình. Ngay cả ngày nay khi học sâu thống trị hình ảnh·ngôn ngữ tự nhiên, việc ensemble vẫn thường cho hiệu năng cao nhất tại các ngành lấy dữ liệu có cấu trúc làm trung tâm như chấm điểm tín dụng tài chính·dự báo nhu cầu·dự đoán rời bỏ đã chứng minh sự cần thiết đó.

C. Nền tảng lý thuyết — Đánh đổi độ chệch-phương sai

Chìa khóa để hiểu ensemble là đánh đổi độ chệch-phương sai (bias-variance trade-off), phân rã sai số dự đoán thành độ chệch²·phương sai·nhiễu. Mô hình có độ chệch lớn không học đủ cấu trúc dữ liệu nên bị dưới khớp (underfitting), còn mô hình có phương sai lớn ghi nhớ cả nhiễu của dữ liệu huấn luyện nên bị quá khớp. Bagging lấy trung bình nhiều mô hình có độ chệch thấp·phương sai cao (như cây quyết định sâu) để chỉ giảm có chọn lọc phương sai, còn boosting bổ sung tuần tự các mô hình nông có độ chệch cao·phương sai thấp (gốc cây, stump) để giảm độ chệch. Tức là hai kỹ thuật là các cách tiếp cận bổ sung tấn công vào các trục khác nhau của cùng một sự đánh đổi. [[decision-tree]]

2. Cấu trúc tổng thể và nguyên lý hoạt động

Khung tổng thể của ensemble được sắp xếp thành 3 bước 'tạo bộ học riêng lẻ → chiến lược kết hợp → dự đoán cuối cùng' như dưới đây. Không quá lời khi nói việc tạo bộ học nào bằng dữ liệu nào, và gộp dự đoán theo quy tắc nào là toàn bộ việc thiết kế ensemble.

flowchart TB
  D["Bộ dữ liệu huấn luyện"] --> G["Chiến lược tạo bộ học riêng lẻ"]
  G --> P["Song song·độc lập (Bagging)"]
  G --> S["Tuần tự·bổ sung (Boosting)"]
  G --> K["Xếp chồng mô hình khác loại (Stacking)"]
  P --> C["Quy tắc kết hợp: bỏ phiếu/trung bình"]
  S --> C2["Quy tắc kết hợp: tổng có trọng số"]
  K --> C3["Quy tắc kết hợp: học mô hình meta"]
  C & C2 & C3 --> R["Bộ dự đoán mạnh cuối cùng"]
  style R fill:#e8f0fe,stroke:#2f6fed,stroke-width:2px

Nếu sơ đồ cấu trúc trên là bức tranh lớn, thì xem chi tiết khác biệt trong luồng học của bagging và boosting như sau. Bagging huấn luyện các mô hình đồng thời, không tham chiếu lẫn nhau bằng các mẫu khác nhau được lấy mẫu có hoàn lại (bootstrap) từ dữ liệu gốc. Ngược lại, boosting lặp lại quá trình huấn luyện một mô hình, đo sai số của nó, rồi đặt trọng số lên các mẫu có sai số lớn để huấn luyện mô hình tiếp theo. Do đó bagging dễ song song hóa nên có lợi cho dữ liệu lớn, còn boosting phụ thuộc vào kết quả trước nên về bản chất là tuần tự.

flowchart TB
  subgraph B["Bagging (song song·độc lập)"]
    B1[Mô hình 1] & B2[Mô hình 2] & B3[Mô hình 3] --> BV["Bỏ phiếu/trung bình"]
  end
  subgraph BO["Boosting (tuần tự·bổ sung)"]
    O1[Mô hình 1] --> O2["Mô hình 2 (tập trung vào lỗi)"] --> O3["Mô hình 3 (tập trung vào lỗi)"]
  end
  style BO fill:#e8f0fe,stroke:#2f6fed

A. Nguyên lý của Bagging

Bagging là viết tắt của Bootstrap Aggregating, và đúng như tên gọi gồm hai bước. Thứ nhất, bootstrap là tạo nhiều bộ mẫu có cùng kích thước với dữ liệu gốc bằng cách cho phép trùng lặp (lấy mẫu có hoàn lại). Trong quá trình này mỗi mẫu có thành phần hơi khác bản gốc, trung bình chỉ chứa khoảng 63% dữ liệu duy nhất và 37% còn lại bị loại ra (Out-Of-Bag, OOB). Dữ liệu OOB này được dùng như phương tiện kiểm định miễn phí để ước lượng hiệu năng khái quát hóa mà không cần tập kiểm định riêng.

Thứ hai, tổng hợp (Aggregating) là gộp dự đoán của các mô hình được huấn luyện trên từng mẫu, dùng bỏ phiếu đa số cho phân loại và trung bình cộng cho hồi quy. Cốt lõi là vì mỗi mô hình thấy các mẫu khác nhau nên hướng lỗi của chúng khác nhau, và khi lấy trung bình thì phương sai cao của từng mô hình giảm mạnh. Tuy nhiên, bagging hầu như không giảm được độ chệch, nên nguyên tắc là dùng mô hình có độ chệch thấp (tức đủ phức tạp) làm bộ học riêng lẻ. Trong thực tế, cây quyết định phát triển sâu là lựa chọn tiêu biểu.

Để bagging phát huy hiệu quả, then chốt là tính đa dạng giữa các mô hình. Chỉ với bootstrap thì các cây có thể trở nên giống nhau, nên random forest bổ sung 'tính ngẫu nhiên đặc trưng' — ở mỗi lần phân nhánh (split) chỉ lấy ngẫu nhiên một phần đặc trưng làm ứng viên. Nhờ vậy hiện tượng mọi cây bám vào một biến mạnh duy nhất được giảm bớt, tương quan giữa các cây thấp đi, và hiệu quả giảm phương sai của trung bình được tối đa hóa.

B. Nguyên lý của Boosting

Triết lý của boosting là "liên tục bổ sung điểm yếu". Sau khi huấn luyện mô hình đầu tiên, gán trọng số lớn hơn cho các mẫu mà mô hình đó làm sai để mô hình tiếp theo tập trung vào các trường hợp khó đó. Lặp lại quá trình này một số lần định trước, rồi cộng dồn dự đoán của từng mô hình với trọng số tỷ lệ với hiệu năng để tạo dự đoán cuối cùng. AdaBoost, thuật toán ban đầu tiêu biểu, đã hiện thực ý tưởng này bằng cách tăng theo hàm mũ trọng số của mẫu bị phân loại sai.

Dòng chính của boosting hiện đại là Gradient Boosting, chuyển góc nhìn từ 'điều chỉnh trọng số' sang 'học phần dư (residual)'. Tức là mô hình tiếp theo học lấy mục tiêu là sai số dự đoán tính đến bước trước (gradient âm của hàm mất mát), khiến toàn bộ ensemble giảm dần mất mát như phương pháp hạ gradient. Khi đó, cơ chế ổn định cốt lõi là thu nhỏ đóng góp của mỗi bước bằng tốc độ học (learning rate) để cộng dần từng chút. Hạ tốc độ học thì cần nhiều cây hơn, nhưng rủi ro quá khớp giảm và khái quát hóa tốt hơn — đó là một sự đánh đổi.

Boosting giảm mạnh độ chệch và cho độ chính xác cao, nhưng do cấu trúc bám lấy lỗi nên nhạy cảm với nhiễu (noise) và ngoại lai (outlier), và rủi ro quá khớp lớn hơn bagging. Do đó việc tinh chỉnh cẩn thận như giới hạn độ sâu cây, điều chỉnh tốc độ học, dừng sớm (early stopping), thêm số hạng chính quy hóa quyết định hiệu năng.

C. Hệ thống phân loại các phương thức kết hợp ensemble

Bagging·boosting là hai trục tiêu biểu của ensemble, nhưng nếu mở rộng ra toàn bộ phương thức kết hợp thì có thể sắp xếp thành bốn loại. Phải phân biệt được chúng thì trong thực tế mới chọn được phương thức phù hợp tình huống. Đơn giản nhất là Voting, bỏ phiếu·lấy trung bình trực tiếp dự đoán của các thuật toán khác nhau; trong phân loại chia thành hard voting theo đa số và soft voting lấy trung bình xác suất. Soft voting phản ánh cả độ tin cậy (xác suất dự đoán) của từng mô hình nên thường cho hiệu năng tốt hơn hard voting.

Như đã giải thích, bagging là cách huấn luyện song song cùng một thuật toán trên mẫu bootstrap để giảm phương sai, còn boosting là cách bổ sung tuần tự để giảm độ chệch. Cuối cùng, Stacking là cấu trúc 2 bước lấy chính kết quả dự đoán của nhiều mô hình khác loại làm đặc trưng mới rồi huấn luyện thêm một mô hình meta bên trên, kết hợp điểm mạnh của từng mô hình thông qua học. Bốn loại được phân biệt theo 'đa dạng hóa cái gì và kết hợp thế nào' như dưới đây.

Loại Bộ học riêng lẻ Nguồn đa dạng Quy tắc kết hợp Hiệu quả chính
Voting Khác loại (thuật toán khác nhau) Khác biệt thuật toán Bỏ phiếu·trung bình xác suất Độ ổn định↑
Bagging Cùng loại Lấy mẫu dữ liệu Bỏ phiếu·trung bình Phương sai↓
Boosting Cùng loại Bổ sung lỗi (tuần tự) Tổng có trọng số Độ chệch↓
Stacking Khác loại Mô hình+học meta Học mô hình meta Tối đa hóa độ chính xác

D. So sánh hai phương thức

Bảng dưới đây tóm tắt khác biệt giữa bagging·boosting, nhưng cần nhớ rằng mỗi hạng mục trong bảng là kết quả phái sinh từ khác biệt gốc đã giải thích là 'giảm phương sai hay giảm độ chệch'. Ví dụ, bagging vững trước quá khớp vì học song song độc lập làm lỗi triệt tiêu nhau, còn boosting nhạy với quá khớp vì khi đuổi theo lỗi một cách tuần tự có thể học cả nhiễu.

Phân loại Bagging Boosting
Cách học Song song (độc lập) Tuần tự (bổ sung lỗi trước)
Lấy mẫu dữ liệu Bootstrap (lấy mẫu có hoàn lại) Trọng số mẫu phân loại sai↑ / học phần dư
Kết hợp Bỏ phiếu·trung bình Tổng có trọng số theo hiệu năng
Hiệu quả chính Phương sai↓ (giảm quá khớp) Độ chệch↓ (độ chính xác↑)
Quá khớp Vững Tương đối nhạy (cần tinh chỉnh)
Song song hóa Dễ (độc lập) Khó (phụ thuộc tuần tự)
Thuật toán tiêu biểu Random Forest AdaBoost, GBM, XGBoost, LightGBM

3. Thuật toán tiêu biểu và ví dụ áp dụng trong công nghiệp

Đại diện của bagging là Random Forest. Nó huấn luyện hàng trăm cây quyết định bằng mẫu bootstrap và chọn ngẫu nhiên đặc trưng rồi bỏ phiếu·lấy trung bình. Từng cây phát triển sâu và dù có quá khớp thì khi tổng hợp vẫn ổn định, lại tự nhiên cung cấp độ quan trọng đặc trưng (feature importance) nên thuận lợi cho diễn giải. Thực tế, random forest được dùng rộng rãi trong phát hiện giao dịch bất thường thẻ tín dụng (FDS) của ngành tài chính trong và ngoài Hàn Quốc hay dự đoán khách hàng rời bỏ của nhà mạng. Ví dụ, khi phân loại gian lận trong hàng trăm nghìn bản ghi giao dịch, random forest được báo cáo là giảm mạnh dương tính giả (false positive) so với một cây đơn lẻ.

Đại diện của boosting là XGBoost·LightGBM·CatBoost (họ Gradient Boosting). XGBoost đưa vào xấp xỉ bậc hai và chính quy hóa để đồng thời đạt độ chính xác và tốc độ, còn LightGBM với tăng trưởng theo lá (leaf-wise) và phân chia dựa trên histogram cho tốc độ học nhanh gấp nhiều lần trên dữ liệu lớn. Họ này thường cho hiệu năng cao nhất trong dự đoán dữ liệu có cấu trúc, được dùng như tiêu chuẩn trong ví dụ dự báo nhu cầu·tồn kho thương mại điện tử, dự đoán lỗi trong quy trình sản xuất, dự đoán tỷ lệ nhấp quảng cáo (CTR). Chẳng hạn, có nhiều trường hợp được biết đến về các nhà bán lẻ lớn chuyển mô hình dự báo nhu cầu từ hồi quy đơn giản sang ensemble LightGBM, giảm rõ rệt sai số dự báo (MAPE) và tiết kiệm chi phí tồn kho.

Trục thứ ba là Stacking. Nó lấy dự đoán của các mô hình có tính chất khác nhau như random forest·boosting·hồi quy logistic làm đầu vào, rồi huấn luyện thêm một mô hình meta (meta-learner) bên trên để kết hợp. Vì trộn các mô hình dị biệt để gom điểm mạnh riêng, nó thường được dùng trong các cuộc thi để vắt kiệt chút hiệu năng cuối cùng. Tuy nhiên cấu trúc phức tạp và chi phí quá khớp·vận hành lớn nên cần thận trọng khi áp dụng thực tế.

A. Hiệu quả giảm phương sai của bagging — trực giác số học đơn giản

Vì sao bagging hiệu quả có thể hiểu trực giác bằng thống kê đơn giản. Lấy trung bình n dự đoán độc lập với nhau, khi phương sai của mỗi dự đoán là σ² thì phương sai của trung bình giảm còn σ²/n. Ví dụ, nếu phương sai dự đoán của mỗi cây là 1 và có 100 cây, thì dưới giả định lý tưởng hoàn toàn độc lập, phương sai của dự đoán trung bình giảm tới 0.01. Dĩ nhiên các cây thực tế không thể hoàn toàn độc lập, nên hiệu quả giảm bị giới hạn bởi hệ số tương quan ρ, và phương sai hội tụ xấp xỉ về ρσ² + (1−ρ)σ²/n. Bài học thực tiễn mà công thức này đưa ra rất rõ ràng. Đó là từ một điểm nào đó, việc giảm tương quan giữa các cây (ρ↓) trở nên quan trọng hơn việc tăng số cây (n↑), và đây chính là lý do random forest dùng chọn ngẫu nhiên đặc trưng để hạ ρ.

B. Đánh giá hiệu năng và tinh chỉnh siêu tham số

Hiệu năng của ensemble phụ thuộc lớn vào siêu tham số. Ở họ bagging, số cây (n_estimators), độ sâu cây, số đặc trưng ứng viên khi phân nhánh (max_features) là biến điều chỉnh cốt lõi; ở họ boosting là số cây·tốc độ học (learning_rate)·độ sâu cây·số hạng chính quy hóa. Đặc biệt trong boosting có sự đánh đổi mà tích của tốc độ học và số cây cho hiệu năng xấp xỉ không đổi, nên chuẩn mực để kiềm chế quá khớp là kết hợp tốc độ học thấp với nhiều cây + dừng sớm. Tinh chỉnh ước lượng hiệu năng khái quát hóa bằng kiểm định chéo (k-fold) và tìm kiếm bằng grid/random search hoặc tối ưu Bayes; với bagging có thể dùng sai số OOB mà không cần tập kiểm định riêng.

4. Chuyên sâu — Xu hướng mới và hướng ra đề dự kiến

Gần đây họ boosting phát triển với xử lý tự động biến phân loại (mã hóa mục tiêu có thứ tự của CatBoost), học tăng tốc GPU, học phân tán để ứng phó dữ liệu lớn·nhiều chiều. Ngoài ra, ở ranh giới với học sâu, các mạng nơ-ron chuyên cho dữ liệu có cấu trúc (TabNet, FT-Transformer v.v.) đang thách thức ensemble, nhưng nhiều benchmark vẫn báo cáo Gradient Boosting được tinh chỉnh tốt ngang bằng hoặc vượt trội, nên vị thế "kẻ mạnh của dữ liệu có cấu trúc" vẫn vững chắc. Mặt khác, các nền tảng AutoML tự động cấu hình ensemble·stacking bên trong để giảm gánh nặng tinh chỉnh của con người, và khi nhu cầu khả năng giải thích tăng lên, việc kết hợp kỹ thuật giải thích hậu kiểm như SHAP (SHapley Additive exPlanations) với ensemble đã trở thành thông lệ tiêu chuẩn thực tế.

Từ góc nhìn Kỹ sư chuyên nghiệp (Professional Engineer), chủ đề này dễ được ra đề dưới dạng "So sánh giải thích bagging và boosting và luận về tình huống áp dụng của từng loại", "Giải thích hiệu quả của ensemble từ góc độ độ chệch-phương sai", "Khác biệt nguyên lý giữa random forest và XGBoost và tiêu chí lựa chọn thực tế". Bài làm đạt điểm cao nhất thiết phải triển khai đan xen (1) căn cứ lý thuyết là đánh đổi độ chệch-phương sai, (2) khác biệt cấu trúc song song·độc lập với tuần tự·bổ sung, (3) đánh đổi thực tiễn về quá khớp·khả năng diễn giải·chi phí, (4) ví dụ áp dụng công nghiệp cụ thể.

5. Các điểm cần cân nhắc và hàm ý

  1. Cần chiến lược lựa chọn phù hợp đặc tính bài toán. Nếu dữ liệu nhiều nhiễu, lo ngại quá khớp và độ ổn định quan trọng thì bagging (random forest) có lợi; nếu cần đẩy độ chính xác tới cực hạn và có dư địa tinh chỉnh thì boosting (XGBoost·LightGBM) có lợi. Stacking trộn lại dự đoán của hai mô hình được xem xét như phương tiện nâng hiệu năng sau cùng.
  2. Tận dụng vị thế kẻ mạnh của dữ liệu có cấu trúc. Tách biệt với xu hướng học sâu thống trị hình ảnh·giọng nói·ngôn ngữ tự nhiên, với dữ liệu nghiệp vụ dạng bảng, ensemble có lợi thế thực dụng là hiệu năng cao nhất·học nhanh·yêu cầu lượng dữ liệu thấp, nên hợp lý là ưu tiên xem xét ensemble thay vì chọn học sâu vô điều kiện.
  3. Quản lý đánh đổi giữa khả năng diễn giải và chi phí tính toán. Ensemble chính xác nhưng bên trong mờ đục hơn mô hình đơn lẻ và chi phí huấn luyện·suy luận lớn. Trong ngành chịu quản lý (tài chính·y tế) phải dùng song song kỹ thuật giải thích như SHAP·đồ thị phụ thuộc riêng phần (PDP) để đưa ra căn cứ, còn trong dịch vụ thời gian thực phải quản lý độ trễ bằng làm nhẹ mô hình·giới hạn số cây.
  4. Quản lý quá khớp·chất lượng dữ liệu quyết định thành bại. Đặc biệt boosting nhạy với ngoại lai và nhiễu nhãn, nên phải kiểm soát quá khớp bằng kiểm định chéo·dừng sớm·chính quy hóa và trước hết bảo đảm chất lượng dữ liệu huấn luyện (độ chính xác nhãn·xử lý mất cân bằng). Ensemble mạnh đến đâu cũng không vượt được giới hạn của dữ liệu chất lượng thấp.
  5. Liên kết MLOps từ góc độ vận hành·tái hiện là quan trọng. Kết quả thay đổi theo seed ngẫu nhiên·siêu tham số·phiên bản dữ liệu, nên phải có quản lý phiên bản mô hình·theo dõi thí nghiệm·pipeline huấn luyện lại thì mới duy trì được hiệu năng dự đoán liên tục.

Tài liệu tham khảo


Tóm tắt một câu: Ensemble là kỹ thuật kết hợp nhiều bộ học yếu để tạo mô hình mạnh, trong đó bagging (song song·độc lập·phương sai↓·random forest) và boosting (tuần tự·bổ sung·độ chệch↓·XGBoost) tấn công hai trục bổ sung của đánh đổi độ chệch-phương sai; cần lựa chọn cân nhắc đặc tính bài toán·khả năng diễn giải·chi phí, và đặc biệt mạnh với dữ liệu có cấu trúc.