XGBoost là gì? Các bước tính toán Similarity Score và Gain?

Tác giả: AI VIET NAM (AI VIET NAM)

Keywords: XGBoost, Similarity Score, Gain, Gradient, Hessian, boosting, cây quyết định, machine learning bảng

XGBoost là gì?

Khi làm Machine Learning, nhiều bạn thường nghe rằng XGBoost là mô hình “quốc dân” cho tabular data.
Nhưng phần khó hơn lại là:

“XGBoost thực chất hoạt động như thế nào?
Và tại sao nó tính được Similarity Score và Gain để quyết định chia nhánh?”

Đây là phần hay gây nhầm lẫn, vì công thức của XGBoost trông khá phức tạp.
Nhưng nếu nhìn theo ý nghĩa, cơ chế lại rất trực quan.

XGBoost (Extreme Gradient Boosting) là thuật toán boosting được tối ưu hóa cho:

  • Regression
  • Classification
  • Dữ liệu bảng

Sức mạnh của XGBoost đến từ:

  • Cơ chế boosting theo gradient
  • Dùng regularization → giảm overfitting
  • Xử lý missing value thông minh
  • Tối ưu tốc độ & bộ nhớ

Trong chương trình AIO, XGBoost nằm nhóm kiến thức ML nâng cao (Module 4–5), kế thừa nền tảng loss–gradient–optimization.

Cốt lõi: XGBoost xây cây dựa trên Gradient & Hessian

Decision Tree truyền thống chia theo Gini/Entropy.
XGBoost chia theo gradienthessian của loss:

  • Gradient (g): hướng thay đổi loss
  • Hessian (h): độ cong của loss (mức “chắc chắn” của gradient)

Mỗi điểm dữ liệu đóng góp một cặp (g, h).
Ở mỗi node, ta cộng tất cả lên → tạo thành G và H.

Từ hai giá trị này, XGBoost tính được:

  • Similarity Score → đánh giá node
  • Gain → đánh giá việc chia node

Similarity Score là gì?

Similarity Score cho biết node đó tốt đến mức nào nếu nó trở thành leaf node.

Trực giác:

  • Nếu nhiều điểm trong node có cùng hướng gradient → node dễ tối ưu → similarity cao
  • Nếu gradient loạn → node kém tốt

Similarity là cách XGBoost đo mức “tập trung thông tin” của node.

Gain là gì?

Gain = mức độ cải thiện khi chia node.

  • Gain cao → chia node giúp giảm loss nhiều → nên chia
  • Gain thấp hoặc âm → việc chia không có lợi → không chia

Trực giác:

XGBoost chia ở nơi giúp gradient “tập trung” hơn sau khi tách.

Các bước tính Similarity & Gain (dạng trực quan)

🔹 Bước 1 — Node thu thập Gradient & Hessian

Mỗi điểm → (gᵢ, hᵢ)

Node có:

  • Tổng gradient: G = Σ gᵢ
  • Tổng hessian: H = Σ hᵢ

🔹 Bước 2 — Tính Similarity của node

Similarity thể hiện:

“Nếu node này là leaf node, nó giúp giảm loss bao nhiêu?”

🔹 Bước 3 — Giả sử có 1 điểm chia → node tách thành Left và Right

Mỗi node con đều có:

  • G_L, H_L
  • G_R, H_R

🔹 Bước 4 — Tính Gain của phép chia

Gain lớn → phép chia tốt.
Gain thấp → bỏ.

XGBoost sẽ duyệt tất cả điểm chia và chọn Gain cao nhất.

Vì sao cơ chế này mạnh hơn Decision Tree truyền thống?

✔ Sử dụng gradient → giàu thông tin

Không chỉ dựa vào tần suất mẫu.

✔ Có regularization → ít overfit

Penalty được đưa vào trực tiếp trong Score & Gain.

✔ Tối ưu bằng toán học → ổn định

Mỗi bước chia đều dựa trên tối ưu loss.

✔ Boosting nhiều cây nhỏ → dự đoán mạnh

Không cần cây sâu, chỉ cần nhiều cây nông nhưng chính xác.

So sánh GBM vs XGBoost (ngắn gọn)

  • GBM chuẩn → không tối ưu tốc độ
  • XGBoost → tối ưu song song, sparsity, regularization tốt hơn
  • XGBoost hỗ trợ xử lý missing thông minh
  • XGBoost có thuật toán tìm điểm chia cực nhanh

Khi nào nên dùng XGBoost?

✔ Bài toán tabular phức tạp
✔ Cần baseline mạnh và ổn định
✔ Dữ liệu có nhiều feature
✔ Muốn mô hình dễ tuning nhưng không dùng deep learning
✔ Cần xử lý missing value tự nhiên

XGBoost thường thắng đa số bài toán bảng, đặc biệt khi DL chưa phải lựa chọn phù hợp.

Lời khuyên dành cho người mới

Bạn có thể thử:

  • Huấn luyện XGBoost trên dataset nhỏ
  • In ra Gradient & Hessian của từng điểm
  • Quan sát Gain của từng split
  • Giảm/tăng max_depth để xem overfitting thay đổi thế nào
  • So sánh kết quả với Random Forest

Những thử nghiệm nhỏ này giúp bạn “cảm” được boosting rõ nhất.

Hỏi đáp nhanh

Q: XGBoost khác GBM ở đâu?
A: XGBoost tối ưu hơn: hỗ trợ regularization mạnh, xử lý missing thông minh, có thuật toán tìm split nhanh hơn, và triển khai song song.

Q: XGBoost có dễ overfit không?
A: Có, nếu depth lớn hoặc learning rate quá cao. Nhưng nhờ regularization, XGBoost vẫn ổn định hơn nhiều mô hình khác.

Q: Tại sao dùng Gradient & Hessian mà không dùng entropy/gini?
A: Vì XGBoost tối ưu trực tiếp loss của bài toán, không gián tiếp qua impurity.

Q: Dữ liệu nhiều missing có cần xử lý trước không?
A: Không nhất thiết. XGBoost tự tìm “default direction” khi gặp missing value.

FAQ về chương trình AIO

Q1. Con số 0 thì học nổi không?
Ans: Chỉ cần bạn có thời gian học. Điều quan trọng nhất không phải giỏi hay không, mà là có học đều mỗi ngày. Kiến thức – tài liệu – môi trường đã có team lo. Nếu bạn không có thời gian thì nên cân nhắc.

Q2. Ai dạy AIO?
Ans: Đội admin dạy toàn bộ. Admin trực tiếp hướng dẫn và hỗ trợ mọi câu hỏi của bạn trong suốt quá trình học.

Q3. Admin có “xịn” không?
Ans: Admin đều là người làm nghề thật, mỗi người một cách dạy. Quan trọng là bạn cảm thấy hợp cách truyền đạt. Admin không dám nói xịn, chỉ dạy bằng hết sức.

Q4. AIO có gì khác những nơi khác?
Ans: AIO không phải trung tâm. Đây là dự án học tập cộng đồng, được cải tiến qua từng khóa. Tinh thần của AIO: Cùng nhau học – cùng nhau khổ – cùng nhau lớn. Nếu hợp tinh thần đó, bạn sẽ thấy phù hợp.

Tài nguyên học AI