# 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ẽ:
- Biết được 3 đặc điểm quan trọng khi sử dụng XGBoost.
- Hiểu cách xử lý biến phân loại, giá trị thiếu (NA), và mối quan hệ phi tuyến.
- Biết cách tránh sai lầm khi tiền xử lý dữ liệu cho XGBoost.
---
#### **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 đề:
- **XGBoost không hiểu kiểu dữ liệu “character” hay “factor”** (chuỗi hoặc phân loại).
- Bạn cần **chuyển đổi chúng thành biến giả (dummy variables)** trước khi đưa vào mô hình.
Ví dụ:
Giả sử bạn có cột **“Giới tính”** với 2 giá trị:
- Nam
- Nữ
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**:
- Giữ lại 1 cột duy nhất (ví dụ chỉ giữ "Giới tính\_Nam")
- Cột còn lại sẽ được suy ra.
#### **II. GIÁ TRỊ THIẾU (Missing Values - NA)**
##### Điểm đặc biệt của XGBoost:
- **Không cần loại bỏ hay thay thế NA**.
- XGBoost **coi giá trị NA là một thông tin riêng biệt**.
##### 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:
- Nó **xem NA là một nhánh riêng trong cây quyết định**.
- Giúp giữ lại ý nghĩa của việc “không có thông tin”.
##### Tại sao điều này quan trọng?
Trong thực tế:
- Nhiều khách hàng không cung cấp đầy đủ dữ liệu.
- Việc giữ nguyên NA sẽ giúp mô hình hiểu rằng **“việc không cung cấp thông tin” là một tín hiệu riêng biệt**.
#### **III. MỐI QUAN HỆ PHI TUYẾN (Non-linearity)**
##### Lợi thế của XGBoost:
- Hiểu được mối quan hệ **phi tuyến (non-linear)** giữa biến độc lập và biến phụ thuộc.
Ví dụ:
Bạn có thể gặp:
- Mối quan hệ hình chữ U (U-shape)
- Mối quan hệ hình chữ S (S-shape)
Với các mô hình hồi quy tuyến tính, bạn phải:
- Biến đổi biến thủ công (thêm x2x^2x2, log, v.v.)
👉 Nhưng XGBoost thì:
- **Tự động học được mối quan hệ phức tạp đó** thông qua cây quyết định.
#### **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](https://vhtsoft.com/ "Công Ty Phần Mềm VHTSoft")**