XGBoost

Giới thiệu

Mục tiêu bài học

1. Bối cảnh vấn đề: Dự báo trong Marketing Trực tiếp
Tình huống:

Một ngân hàng tại Bồ Đào Nha thực hiện chiến dịch tiếp thị qua điện thoại nhằm thuyết phục khách hàng đăng ký tài khoản tiết kiệm.

Câu hỏi đặt ra:

Liệu ta có thể dự đoán trước được ai sẽ nói "YES"?

Nếu có thể, ngân hàng sẽ:

2. Tại sao việc dự đoán lại quan trọng?

1. Customer Churn – Mất khách hàng:

2. Opportunity Cost – Mất cơ hội:

3. Relevance – Mất sự liên quan:

3. Chi phí và lợi nhuận trong B2B
4. Phân tích khách hàng thủ công – Có vấn đề gì?

Ví dụ:

Phân nhóm khách hàng theo:

Bạn sẽ có hàng trăm tổ hợp khác nhau cần phân tích.Các vấn đề lớn:

  1. Độ phức tạp (Depth): càng nhiều yếu tố → ma trận phân nhóm càng phức tạp.

  2. Tầm quan trọng (Importance): không biết yếu tố nào ảnh hưởng mạnh nhất.

  3. Nhiễu (Noise): có nhiều tổ hợp hiếm gặp → khó nhìn thấy quy luật bằng mắt thường.

5. Giải pháp: Sử dụng Machine Learning

Thay vì phân tích thủ công, ta sẽ:

Ưu điểm XGBoost:

Đa cộng tuyến

Đa cộng tuyến (Multicollinearity) là hiện tượng trong mô hình hồi quy (hoặc mô hình học máy tuyến tính) khi hai hoặc nhiều biến độc lập (predictor variables) có mối quan hệ tuyến tính chặt chẽ với nhau — nghĩa là có thể dự đoán được một biến từ một hoặc nhiều biến khác.

Hiểu đơn giản:

Khi các biến giải thích (X) lại tự giải thích lẫn nhau, mô hình sẽ khó xác định chính xác ảnh hưởng riêng của từng biến đến biến phụ thuộc (Y).

Hậu quả của đa cộng tuyến:

Ví dụ minh họa:

Giả sử bạn xây dựng một mô hình dự đoán giá nhà với các biến đầu vào sau:

Biến Ý nghĩa
house_size Diện tích ngôi nhà (m²)
num_bedrooms Số lượng phòng ngủ
total_area Tổng diện tích bao gồm sân vườn, gara

Trong thực tế:

→ Khi huấn luyện mô hình, thuật toán khó xác định chính xác:

Dấu hiệu nhận biết đa cộng tuyến:

Cách xử lý đa cộng tuyến:

  1. Loại bỏ một trong các biến có tương quan cao.

  2. Tổng hợp các biến lại (dùng PCA, hoặc tạo một biến trung gian).

  3. Chuẩn hóa dữ liệu (scaling) có thể giúp phần nào.

  4. Sử dụng mô hình ít nhạy cảm với đa cộng tuyến, như:

    • Ridge Regression (hồi quy co giãn)

    • Tree-based models (Random Forest, XGBoost…)

Kết luận:

Đa cộng tuyến là một "kẻ thù thầm lặng" của các mô hình tuyến tính. Khi xây dựng mô hình hồi quy, bạn nên kiểm tra sự tương quan giữa các biến đầu vào để đảm bảo tính chính xác và ổn định cho mô hình.

Nếu bạn muốn, mình có thể giúp bạn tạo một mô hình hồi quy đơn giản bằng Python để minh họa trực tiếp hiện tượng đa cộng tuyến. Bạn có muốn thử không?

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft

XGBoost trong Phân tích Dự báo

Mục tiêu bài học

1. Tại sao chọn XGBoost?

Việc chọn một thuật toán máy học không phải ngẫu nhiên. Nó phụ thuộc vào:

Trong bài toán tiếp thị trực tiếp của chúng ta (telemarketing), chúng ta cần phân loại nhị phân: khách hàng sẽ trả lời "Yes" hay "No" với chiến dịch?

2. Ưu điểm nổi bật của XGBoost
Ưu điểm Mô tả
Tầm quan trọng của đặc trưng (feature importance) XGBoost cho bạn biết đặc trưng nào có ảnh hưởng lớn nhất đến kết quả. Điều này rất hữu ích để điều chỉnh chiến lược kinh doanh.
Độ chính xác cao XGBoost thường vượt trội hơn so với Logistic Regression, Random Forest, và thậm chí cả Deep Learning trong nhiều trường hợp.
Xử lý song song XGBoost hỗ trợ xử lý song song ngay trong thư viện — giúp tăng tốc huấn luyện.
Tối ưu lặp lại (iterative learning) Mô hình học dần từ sai lầm trong từng vòng lặp, cải thiện chính xác dần theo thời gian.
3. XGBoost là gì?
4. Tree-based vs Linear – Phân biệt 2 cách tiếp cận

Linear (Tuyến tính):

Tree-based (Dạng cây quyết định):

→ Đây chính là cách mà thuật toán cây đưa ra quyết định phân loại. Trực quan, dễ hiểu, và rất hiệu quả với các dữ liệu phức tạp, không tuyến tính.

5. Tại sao chọn tree-based cho XGBoost?
Kết luận

 

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft

Hoạt Động của XGBoost

MỤC TIÊU BÀI HỌC

Sau bài học này, học viên sẽ:

 

I. CÁCH XGBOOST HOẠT ĐỘNG

1. Ví dụ Minh Họa Cơ Bản

Giả sử bạn có bảng dữ liệu nhỏ:

Quan sát Đặc trưng (X) Kết quả thật (y)
1 0.2 1
2 0.8 0
3 0.5 1
4 0.4 0
2. Vòng Lặp 1 (Cây đầu tiên)

XGBoost học từ sai lầm bằng cách ưu tiên học tốt hơn ở các điểm đã sai.

3. Vòng Lặp 2 (Cây thứ hai)

 Mỗi cây mới sửa lỗi của cây trước.

II. ENSEMBLE & SUBSAMPLING

1. Không dùng toàn bộ dữ liệu
2. Không dùng toàn bộ đặc trưng

Nhờ đó, XGBoost tạo ra nhiều mô hình nhỏ, mỗi mô hình học trên dữ liệu khác nhau → tổng hợp lại tạo mô hình mạnh mẽ.

Đây chính là Ensemble Learning.

III. ƯU ĐIỂM CỦA XGBOOST

Tự động sửa lỗi qua từng vòng
Tránh quá khớp (overfitting) nhờ dùng một phần dữ liệu
Xử lý tốt đa cộng tuyến (Multicollinearity)
Hiệu quả cao cả về tốc độ và độ chính xác

IV. VÍ DỤ THỰC TẾ ĐƠN GIẢN

Bài toán: Dự đoán khách hàng có mua hàng không (1 = mua, 0 = không)
Tuổi Số lần truy cập Kết quả
25 3 1
40 5 0
30 2 1
45 6 0
  1. Cây đầu tiên:

    • Dự đoán đúng 2, sai 2.

    • Cập nhật trọng số.

  2. Cây thứ hai:

    • Tập trung học các điểm sai.

    • Giảm sai sót tổng thể.

  3. Cây thứ ba trở đi:

    • Lặp lại quá trình.

Kết quả cuối cùng: Dự đoán chính xác cao hơn nhờ tổ hợp các cây nhỏ.

VI. KẾT LUẬN

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft

Những Điểm Đặc Biệt (Quirks) của XGBoost

MỤC TIÊU BÀI HỌC

Sau bài học này, bạn sẽ:


I. GIỚI THIỆU NGẮN GỌN

XGBoost là một thuật toán mạnh mẽ nhưng có một số đặc điểm riêng biệt (quirks) mà người dùng cần hiểu rõ để sử dụng hiệu quả. Cụ thể có 3 điểm chính như sau:

BIẾN PHÂN LOẠI (Categorical Variables)

Vấn đề:

Ví dụ:

Giả sử bạn có cột “Giới tính” với 2 giá trị:

Bạn cần chuyển thành:

Giới tính_Nam Giới tính_Nữ
1 0
0 1

Tuy nhiên, bạn không nên giữ cả 2 cột này cùng lúc!

Đây là cái gọi là “Dummy Variable Trap”, vì việc giữ cả 2 cột sẽ tạo ra đa cộng tuyến (multicollinearity).

Giải pháp:

II. GIÁ TRỊ THIẾU (Missing Values - NA)

Điểm đặc biệt của XGBoost:
Ví dụ minh họa:

Giả sử bạn có cột “Thu nhập”:

ID Thu nhập
1 5 triệu
2 NA
3 7 triệu
4 NA

Nếu bạn đang dùng hồi quy tuyến tính hay Random Forest, bạn phải thay thế NA bằng trung bình hoặc loại bỏ dòng.

❗ Nhưng với XGBoost:

Tại sao điều này quan trọng?

Trong thực tế:

III. MỐI QUAN HỆ PHI TUYẾN (Non-linearity)

Lợi thế của XGBoost:

Ví dụ:

Bạn có thể gặp:

Với các mô hình hồi quy tuyến tính, bạn phải:

👉 Nhưng XGBoost thì:

IV. TỔNG HỢP QUA VÍ DỤ THỰC TẾ

Giả sử bạn có tập dữ liệu về khách hàng:

Tuổi Giới tính Thu nhập Mua hàng
25 Nam 5 triệu 1
32 Nữ NA 0
40 Nam 10 triệu 1
Bạn cần làm gì?
  1. Giới tính → chuyển thành biến giả: giữ "Giới_tính_Nam"

  2. Thu nhập NA → giữ nguyên (không thay thế)

  3. Dùng XGBoost để học mô hình → mô hình vẫn hoạt động tốt

KẾT LUẬN

Đặc điểm Mô tả Xử lý như thế nào
Biến phân loại Không hỗ trợ trực tiếp Dùng dummy variables, tránh trap
NA (giá trị thiếu) XGBoost tự xử lý Không cần thay thế
Phi tuyến Học tốt các mối quan hệ phi tuyến Không cần biến đổi thủ công

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft

Bẫy biến giả(Dummy Variable Trap) và Các Bước Tiền Xử Lý Dữ Liệu Trong Machine Learning

MỤC TIÊU BÀI HỌC

I. Bẫy biến giả(DUMMY VARIABLE TRAP) LÀ GÌ?

Khái niệm:

Biến giả(Dummy Variable):  là các biến nhị phân (chỉ nhận giá trị 0 hoặc 1) được tạo ra từ biến phân loại (categorical variable).

Bẫy biến giả xảy ra khi có quá nhiều biến giả liên quan đến cùng một đặc tính, gây ra hiện tượng đa cộng tuyến hoàn hảo (perfect multicollinearity), dẫn đến lỗi hoặc mô hình hoạt động không chính xác.

Ví dụ cụ thể:

Giả sử bạn có biến “Thương hiệu nước ngọt ưa thích” với 3 giá trị:

Bạn tạo các biến giả:

CocaCola Pepsi 7Up
1 0 0
0 1 0
0 0 1
1 0 0

Bây giờ nếu bạn dùng cả 3 biến giả này cùng lúc, thì một biến có thể dự đoán được từ hai biến còn lại:

7Up = 1 - CocaCola - Pepsi

Điều này gây ra đa cộng tuyến hoàn hảo → mô hình học máy như hồi quy tuyến tính hoặc một số thuật toán sẽ bị lỗi hoặc giảm hiệu suất.

Vậy nên làm gì?

Giải pháp: Loại bỏ 1 biến giả → gọi là “biến chuẩn” hay baseline.

Ví dụ:

Thông tin của 7Up vẫn còn:
Khi cả CocaCola và Pepsi đều bằng 0 → người đó thích 7Up.

TẠI SAO KHÔNG MẤT THÔNG TIN?

Không mất thông tin vì:

TÓM TẮT PHẦN 1

Vấn đề Giải pháp
Dummy variable trap Loại bỏ 1 biến giả để tránh đa cộng tuyến
Mất thông tin? ❌ Không → thông tin được mã hóa ở baseline

II. BẮT ĐẦU HƯỚNG DẪN TỪNG BƯỚC TIỀN XỬ LÝ


Bước 1: Xác định bài toán & Tạo bộ dữ liệu

Phải có giả thuyết/hướng nghiên cứu rõ ràng (hypothesis-driven)

Ví dụ: Nếu bạn muốn dự đoán liệu khách hàng có mua hàng không, bạn cần xác định những yếu tố nào có thể ảnh hưởng đến hành vi này (tuổi, thu nhập, kênh tiếp cận,...)


Bước 2: Chuyển đổi biến phân loại thành biến giả (dummy variables)

Ví dụ

import pandas as pd

df = pd.DataFrame({
    'drink': ['CocaCola', 'Pepsi', '7Up', 'CocaCola']
})

dummies = pd.get_dummies(df['drink'], drop_first=True)
print(dummies)

Kết quả:

Pepsi 7Up
0 0
1 0
0 1
0 0
CocaCola là baseline.

Bước 3: Chia dữ liệu thành tập huấn luyện và kiểm tra

from sklearn.model_selection import train_test_split

X = df_features  # tập biến đầu vào
y = df_target    # biến mục tiêu

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

KẾT LUẬN

Bước Mô tả
1 Xác định giả thuyết và tạo dữ liệu phù hợp
2 Chuyển đổi các biến phân loại thành dummy, tránh dummy trap
3 Chia dữ liệu thành tập huấn luyện và kiểm tra
Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft

 

Hiểu về RMSE – Root Mean Squared Error trong XGBoost

1. RMSE là gì?

RMSE (Root Mean Squared Error) – là căn bậc hai của trung bình bình phương sai số, dùng để đo mức độ sai lệch giữa giá trị thực tế và giá trị dự đoán của mô hình.

📌 RMSE càng thấp → mô hình càng chính xác.

2. Khi nào dùng RMSE?

RMSE thường được dùng khi bạn giải quyết bài toán hồi quy – tức là khi biến mục tiêu (Y)liên tục, ví dụ:

3. Công thức RMSE:

image.png

4. Trực quan hóa RMSE

Hãy tưởng tượng:

5. Ví dụ cụ thể

Giả sử bạn đang dự đoán điểm thi của học sinh, và bạn có:

image.png

6. RMSE bao nhiêu là tốt?

Không có “một con số tuyệt đối” nào cho RMSE tốt, vì:

→ 📌 Hãy so sánh RMSE của mô hình hiện tại với các mô hình khác để đánh giá.

7. RMSE trong XGBoost

XGBoost tự động tối ưu hóa để giảm RMSE (hoặc một hàm lỗi tương tự) trong quá trình huấn luyện khi bạn dùng cho bài toán hồi quy.

Tóm tắt:

Nội dung Ý nghĩa
RMSE Đo sai số trung bình giữa thực tế và dự đoán
Thích hợp cho Bài toán hồi quy
RMSE nhỏ hơn → mô hình tốt hơn Đúng, nhưng cần phụ thuộc vào ngữ cảnh
Dùng để So sánh giữa các mô hình

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft

 

Overfitting và Underfitting

Khi xây dựng mô hình học máy (Machine Learning), một trong những thách thức lớn nhấtlàm sao để mô hình học “vừa đủ” từ dữ liệu. Nếu mô hình học quá ít hoặc quá nhiều, ta sẽ gặp phải 2 hiện tượng:

1. Trực quan hóa: Dữ liệu và mô hình

Dữ liệu:

Giả sử bạn có một tập dữ liệu đơn giản như sau (trên đồ thị):

Ba mô hình khác nhau:
Mô hình Đặc điểm Loại lỗi
Đường thẳng đơn giản Không mô tả hết xu hướng dữ liệu Underfitting
Đường cong cực phức tạp Đi qua tất cả các điểm dữ liệu Overfitting
Đường cong vừa phải Bắt đúng xu hướng, chấp nhận một số sai lệch Tối ưu

2. UNDERFITTING là gì?

📌 Ví dụ:

Bạn dùng một đường thẳng để mô tả quan hệ giữa lượng học và điểm thi, nhưng dữ liệu thực tế cho thấy quan hệ cong. Mô hình bỏ qua xu hướng cong → sai số cao → underfitting.

3. OVERFITTING là gì?

Ví dụ:

Bạn cho mô hình học “thuộc lòng” từng điểm dữ liệu học sinh (ví dụ: điểm, tuổi, chiều cao), mô hình sẽ dự đoán đúng tuyệt đối trên tập huấn luyện nhưng sai lệch nghiêm trọng khi gặp dữ liệu mới.

Ví dụ về Bias (Underfitting):

Khi còn nhỏ, bạn nghĩ rằng mọi vấn đề đều có thể giải quyết theo một cách duy nhất, do bạn thiếu trải nghiệm và hiểu biết. Bạn giống như một cái búa và nghĩ mọi vấn đề đều là cái đinh → đó là thiên lệch (bias) cao.

Ví dụ về Variance (Overfitting):

Bạn có 40 loại gia vị trong nhà bếp, và cố trộn tất cả lại để tạo ra món ăn “hoàn hảo”. Nhưng thay vì ngon, món ăn lại trở thành lộn xộn → quá nhiều lựa chọn, dẫn đến lỗi cao → phương sai (variance) cao.

Kết luận

Vấn đề Biểu hiện Giải pháp chính
Underfitting Sai số cao ở cả train/test Mô hình phức tạp hơn, nhiều feature
Overfitting Sai số thấp ở train, cao ở test Giảm độ phức tạp, dùng cross-validation
Mục tiêu Mô hình cân bằng Tối ưu bias-variance trade-off

 

 

Bias - Variance Tradeoff

1. Định nghĩa cơ bản

Bias (Thiên lệch)

📌 Ví dụ:

Bạn dùng một đường thẳng để dự đoán kết quả học tập, trong khi mối quan hệ thực sự là phi tuyến (cong). Mô hình không đủ khả năng để học mối quan hệ này → kết quả luôn sai → bias cao.

Variance (Phương sai)

📌 Ví dụ:

Một mô hình Decision Tree cực kỳ sâu có thể dự đoán chính xác tất cả điểm huấn luyện, nhưng khi gặp dữ liệu mới sẽ hoạt động rất tệ vì không có khả năng tổng quát.

2. Tổng lỗi (Total Error)

Khi huấn luyện mô hình, Tổng lỗi = Bias² + Variance + Noise

3. Tradeoff – Tại sao cần đánh đổi?

Mục tiêu:

Tìm mô hình vừa đủ — không quá đơn giản cũng không quá phức tạp → Tổng lỗi thấp nhất

Ví dụ thực tế minh họa

Ví dụ 1: Học sinh làm bài toán

Học sinh giỏi sẽ hiểu bản chất, không học vẹt → Bias thấp, Variance thấp

Ví dụ 2: Nấu ăn với gia vị

Người nấu ăn giỏi biết chọn lọc gia vị hợp lý → tạo ra món ngon ổn định

4. Làm sao để giải quyết Tradeoff?

Kỹ thuật Tác dụng
Cross-validation Ước lượng lỗi thực tế để tránh overfitting
Regularization (L1/L2) Phạt độ phức tạp để giảm variance
Giảm chiều dữ liệu Loại bỏ feature gây nhiễu
Ensemble methods Kết hợp nhiều mô hình để giảm variance
Tăng dữ liệu Giảm overfitting nhờ thêm dữ liệu mới

 

Tối ưu hóa mô hình XGBoost & Bias-Variance Tradeoff

Mục tiêu bài học

I. Các tham số cần tinh chỉnh trong XGBoost

Dưới đây là 8 tham số phổ biến ảnh hưởng đến hiệu suất của mô hình:


1. n_estimators / num_boost_round – Số vòng boosting

Ví dụ:

xgb.XGBClassifier(n_estimators=100)  # Thử 100 vòng boosting
2. eta – Learning Rate (tốc độ học)

Gợi ý: Dùng eta thấp (0.01–0.3) + tăng số vòng.

Ví dụ:

xgb.XGBClassifier(eta=0.1)  # Tốc độ học vừa phải
3. min_child_weight – Trọng số tối thiểu cho mỗi leaf

Ví dụ:

xgb.XGBClassifier(min_child_weight=5)  # Tránh cây quá phức tạp
4. max_depth – Độ sâu tối đa của cây

Ví dụ:

xgb.XGBClassifier(max_depth=6)  # Cây vừa phải
5. gamma – Ngưỡng để tách (split) cây

Ví dụ:

xgb.XGBClassifier(gamma=0.2)  # Thận trọng khi chia
6. subsample – Tỷ lệ mẫu lấy ra từ tập dữ liệu

Ví dụ:

xgb.XGBClassifier(subsample=0.8)
7. colsample_bytree – Tỷ lệ cột sử dụng cho mỗi cây

Ví dụ:

xgb.XGBClassifier(colsample_bytree=0.7)
8. Tổng quan ảnh hưởng đến Bias vs. Variance
Tham số Giá trị thấp → Ảnh hưởng Giá trị cao → Ảnh hưởng
eta Variance ↑ Bias ↑
max_depth Bias ↑ Variance ↑
min_child_weight Variance ↑ Bias ↑
gamma Variance ↑ Bias ↑
subsample Variance ↑ Bias ↑
colsample_bytree Variance ↑ Bias ↑

II. Kỹ thuật Cross-Validation – Tối ưu tham số

Mục tiêu:

Tìm bộ tham số tốt nhất bằng cách chia nhỏ dữ liệu huấn luyện thành nhiều phần → thử nghiệm mô hình trên từng phần → trung bình kết quả.

Ý tưởng chính
Ưu điểm:
Ví dụ: Sử dụng GridSearchCV để tìm tham số
from sklearn.model_selection import GridSearchCV
from xgboost import XGBClassifier

params = {
    'max_depth': [3, 6],
    'learning_rate': [0.01, 0.1],
    'subsample': [0.7, 1],
}

model = XGBClassifier()
grid = GridSearchCV(estimator=model, param_grid=params, cv=5)
grid.fit(X_train, y_train)

print("Best Params:", grid.best_params_)
Ghi nhớ
Vấn đề Cách giải quyết
Overfitting (Variance cao) Tăng min_child_weight, tăng gamma, giảm max_depth, subsample, colsample_bytree
Underfitting (Bias cao) Giảm min_child_weight, giảm gamma, tăng max_depth, n_estimators

Tổng kết

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft