[DS Blog #44] Xử Lý Dữ Liệu Mất Cân Bằng Cực Đoan (Imbalanced Data Masterclass): Từ SMOTE, Tomek Links Đến Focal Loss & Kỹ Thuật Hiệu Chuẩn Xác Suất
![[DS Blog #44] Xử Lý Dữ Liệu Mất Cân Bằng Cực Đoan (Imbalanced Data Masterclass): Từ SMOTE, Tomek Links Đến Focal Loss & Kỹ Thuật Hiệu Chuẩn Xác Suất](/uploads/ai-images/cover-du-lieu-mat-can-bang.png)
1. Bối cảnh thực tế (Context & Problem Statement)
Trong sách giáo khoa và các bài tập học thuật, dữ liệu thường được chia đều hoặc . Nhưng trong thế giới doanh nghiệp thực tế, dữ liệu mất cân bằng cực đoan (Extreme Class Imbalance) mới là trạng thái tự nhiên:
- Gian lận thẻ tín dụng (Credit Card Fraud): Chỉ có khoảng giao dịch là gian lận trong số hàng trăm triệu giao dịch bình thường.
- Tỷ lệ Click quảng cáo (Ad CTR): Chỉ có người dùng bấm vào banner quảng cáo.
- Lỗi dây chuyền sản xuất bán dẫn (Manufacturing Defect): Chỉ có chip bị lỗi trong số chip xuất xưởng ().
Hai cạm bẫy chết người mà người làm Data Science thường mắc phải:
- Nghịch lý độ chính xác (The Accuracy Paradox): Một mô hình "ngây thơ" luôn dự đoán mọi giao dịch là Hợp lệ sẽ đạt độ chính xác nhưng hoàn toàn vô dụng vì để lọt các vụ gian lận!
- Ảo tưởng do Resampling sai cách (The Resampling Trap): Áp dụng kỹ thuật sinh mẫu nhân tạo (như SMOTE) trước khi chia tập Train/Test, dẫn đến rò rỉ dữ liệu (Data Leakage) khiến kết quả kiểm thử đạt điểm ảo, hoặc làm méo mó phân phối xác suất dự đoán thực tế trên Production.
Để xây dựng một hệ thống học máy vững chắc trên dữ liệu hiếm, ta cần tiếp cận toàn diện ở 3 cấp độ: Dữ liệu Thuật toán Hậu xử lý.
2. Các Khái Niệm & Cơ Chế Cốt Lõi
+-----------------------------------------------------------------------------------+
| 3 CẤP ĐỘ XỬ LÝ DỮ LIỆU MẤT CÂN BẰNG CHUYÊN SÂU |
+-----------------------------------------------------------------------------------+
|
+-------------------------------+-------------------------------+
| | |
v v v
[1. DATA-LEVEL RESAMPLING] [2. ALGORITHM & LOSS] [3. POST-PROCESSING]
- SMOTE (Nội suy K-NN) - Cost-Sensitive Learning - Cost-Utility Threshold
- Borderline-SMOTE (Vùng biên) - Focal Loss: (1 - p_t)^gamma - Probability Calibration
- Tomek Links (Tỉa mẫu nhiễu) - Class-weighted Cross Entropy (Platt Scaling / Isotonic)
2.1. Cấp Độ 1: Can Thiệp Dữ Liệu (Resampling Techniques)
1. Thuật toán SMOTE (Synthetic Minority Over-sampling Technique - Chawla et al., 2002)
- Sai lầm của Random Oversampling: Nhân bản các mẫu thiểu số có sẵn Làm mô hình học vẹt chính xác các điểm đó (Overfitting nghiêm trọng).
- Cơ chế toán học của SMOTE (Nội suy tuyến tính):
- Với mỗi điểm dữ liệu thiểu số , tìm điểm lân cận gần nhất (-Nearest Neighbors) cũng thuộc lớp thiểu số.
- Chọn ngẫu nhiên một điểm lân cận .
- Sinh một điểm nhân tạo mới nằm trên đoạn thẳng nối giữa và :
2. Borderline-SMOTE (Sinh mẫu tập trung tại biên giới quyết định)
- Nhược điểm của SMOTE gốc: Nếu một điểm thiểu số nằm sâu trong vùng của lớp đa số (thực chất là điểm nhiễu Outlier), SMOTE vẫn nối điểm đó với các điểm khác Sinh ra hàng loạt điểm nhân tạo rác, làm mờ ranh giới quyết định (Decision Boundary).
- Phân loại 3 vùng trong Borderline-SMOTE:
- Xét điểm lân cận của mỗi điểm thiểu số :
- SAFE Zone: Đa số lân cận () là lớp thiểu số Dễ học, không cần sinh thêm.
- NOISE Zone: Toàn bộ lân cận đều là lớp đa số Đây là điểm nhiễu, bỏ qua không sinh mẫu.
- DANGER Zone: Một nửa lân cận là lớp đa số Nằm ngay trên ranh giới quyết định! Borderline-SMOTE CHỈ sinh mẫu nhân tạo từ các điểm thuộc vùng DANGER này.
- Xét điểm lân cận của mỗi điểm thiểu số :
3. Tomek Links (Tỉa bỏ cặp đối nghịch ở biên giới)
- Một cặp điểm được gọi là Tomek Link nếu:
- thuộc lớp thiểu số, thuộc lớp đa số.
- là lân cận gần nhất của VÀ là lân cận gần nhất của .
- Kỹ thuật SMOTE-Tomek (Kết hợp Oversampling + Undersampling):
- Dùng SMOTE để tăng số lượng mẫu thiểu số.
- Dùng Tomek Links để xóa bỏ các cặp điểm đối nghịch nằm quá sát nhau Làm sạch và nới rộng khoảng cách giữa 2 lớp (Clear Margin).
2.2. Cấp Độ 2: Can Thiệp Hàm Mất Mát (Focal Loss & Cost-Sensitive Learning)
Thay vì làm biến đổi dữ liệu, ta can thiệp trực tiếp vào cách mô hình "bị phạt" khi dự đoán sai.
1. Cost-Sensitive Learning (Trọng số lớp)
- Gán trọng số phạt cao hơn khi mô hình đoán sai lớp thiểu số: (Trong XGBoost / LightGBM, tham số này buộc mô hình phải chú ý gấp lần vào lớp hiếm).
2. Focal Loss (Lin et al., 2017 - Đột phá từ RetinaNet)
Hàm mất mát Cross-Entropy truyền thống: (trong đó là xác suất dự đoán đúng của mô hình).
- Vấn đề của Cross-Entropy: Khi có hàng triệu mẫu dễ phân loại (Easy Negatives, ví dụ ), dù mỗi mẫu chỉ đóng góp một lượng loss rất nhỏ (), nhưng tổng của hàng triệu mẫu này sẽ hoàn toàn áp đảo gradient của vài mẫu hiếm khó phân loại!
- Công thức toán học của Focal Loss:
- Hệ số điều biến (Modulating Factor) với :
- Khi một mẫu được phân loại dễ dàng (): Đóng góp của mẫu này vào hàm mất mát bị triệt tiêu gần như bằng !
- Khi một mẫu bị phân loại sai hoặc khó (): Giữ nguyên toàn bộ trọng số phạt.
- Tự động hướng mô hình tập trung năng lực vào các trường hợp hiếm và khó mà không cần lấy mẫu lại dữ liệu!
- Hệ số điều biến (Modulating Factor) với :
Loss
^
| Cross-Entropy (gamma = 0)
| \
| \ Focal Loss (gamma = 2):
| \ Triệt tiêu loss của các mẫu dễ (p_t > 0.6)
| \ \
| \ \_________
+-----------+---------+---------> Xác suất dự đoán đúng (p_t)
0.5 1.0
2.3. Cấp Độ 3: Hậu Xử Lý & Hiệu Chuẩn Xác Suất (Probability Calibration)
Một sự thật ít người biết: Sau khi áp dụng SMOTE hoặc chỉnh scale_pos_weight, xác suất dự đoán đầu ra của mô hình () KHÔNG CÒN phản ánh xác suất thực tế trong đời thực!
- Ví dụ: Một giao dịch có rủi ro thực tế là , nhưng do mô hình được train trên tập đã cân bằng , nó sẽ xuất ra xác suất dự đoán là .
- Đo lường độ lệch xác suất bằng Brier Score & Đồ thị Hiệu chuẩn (Reliability Diagram):
- 2 Phương pháp Hiệu chuẩn Xác suất (Calibration Methods):
- Platt Scaling (Logistic Calibration): Huấn luyện một mô hình hồi quy Logistic một biến trên điểm số đầu ra của mô hình (Hiệu quả cao khi hàm mất mát có dạng Sigmoid/SVM).
- Isotonic Regression (Hồi quy đơn điệu): Phép khớp đường gấp khúc không tham số (Non-parametric piecewise constant). Cực kỳ mạnh mẽ và linh hoạt nhưng cần nhiều dữ liệu hơn để tránh Overfitting.
2.4. Tối Ưu Hóa Ngưỡng Quyết Định Theo Ma Trận Chi Phí (Cost-Utility Matrix)
Ngưỡng mặc định của hàm predict() hoàn toàn vô nghĩa trong thực tế!
- Trong y tế: Bỏ sót 1 ca ung thư (False Negative - FN) phải trả giá bằng tính mạng; trong khi chẩn đoán nhầm 1 người khỏe mạnh là có bệnh (False Positive - FP) chỉ tốn tiền làm thêm xét nghiệm.
- Giả sử: undefined1,000\text{Chi phí}(\text{FP}) = $10$.
- Công thức tìm ngưỡng cắt xác suất tối ưu : Chỉ cần mô hình dự đoán xác suất ung thư , ta lập tức gán nhãn là Dương tính để đưa đi xét nghiệm chuyên sâu!
3. Các Bảng Markdown So Sánh Chi Tiết
📊 Bảng 1: So Sánh Toàn Diện Các Kỹ Thuật Can Thiệp Dữ Liệu (Resampling)
| Phương pháp | Bản chất kỹ thuật | Ưu điểm | Nhược điểm / Rủi ro | Mức độ Overfitting |
|---|---|---|---|---|
| Random Oversampling | Nhân bản ngẫu nhiên các mẫu thiểu số | Đơn giản, không làm mất dữ liệu | Mô hình học vẹt các điểm nhân bản | Rất cao |
| Random Undersampling | Xóa bớt ngẫu nhiên các mẫu đa số | Huấn luyện cực nhanh | Làm mất đi phần lớn thông tin hữu ích của lớp đa số | Thấp (Dễ Underfitting) |
| SMOTE | Nội suy tuyến tính giữa lân cận thiểu số | Tạo ra các điểm mới đa dạng hơn | Sinh ra điểm nhiễu nếu mẫu nằm sâu trong vùng đa số | Trung bình |
| Borderline-SMOTE | Chỉ sinh mẫu từ các điểm nằm ở vùng biên (DANGER) | Ranh giới phân loại sắc nét, chính xác hơn SMOTE | Cần tinh chỉnh thêm tham số lân cận | Thấp |
| SMOTE-Tomek | Chạy SMOTE rồi xóa các cặp điểm đối nghịch quá sát nhau | Tạo khoảng cách phân tách rõ ràng nhất giữa 2 lớp | Tốn chi phí tính toán khoảng cách hơn | Thấp nhất (Khuyên dùng) |
📊 Bảng 2: So Sánh Các Dạng Hàm Mất Mát (Loss Functions)
| Hàm mất mát | Công thức toán học | Cách xử lý mẫu khó vs. mẫu dễ | Khi nào nên sử dụng? |
|---|---|---|---|
| Standard Cross-Entropy | Đối xử với mọi mẫu như nhau | Dữ liệu cân bằng hoặc mất cân bằng nhẹ ( minority) | |
| Weighted Cross-Entropy | Phạt nặng hơn cố định trên toàn bộ lớp thiểu số | Mất cân bằng vừa phải ( minority) | |
| Focal Loss | Tự động triệt tiêu gradient của các mẫu dễ, dồn toàn lực vào mẫu khó | Mất cân bằng cực đoan ( minority: Fraud, Detection) (Chuẩn phỏng vấn) |
📊 Bảng 3: So Sánh Hai Phương Pháp Hiệu Chuẩn Xác Suất (Probability Calibration)
| Tiêu chí | Platt Scaling (Logistic) | Isotonic Regression |
|---|---|---|
| Bản chất toán học | Mô hình tham số (Hàm Logistic Sigmoid ) | Mô hình phi tham số (Hàm bậc thang tăng đơn điệu) |
| Yêu cầu kích thước dữ liệu | Hoạt động rất tốt ngay cả trên tập dữ liệu nhỏ ( mẫu) | Cần tập dữ liệu lớn ( mẫu) để tránh Overfit |
| Mức độ linh hoạt | Kém linh hoạt (Giả định sai lệch có dạng hình chữ S) | Rất linh hoạt, khớp được mọi dạng méo mó xác suất |
| Thuật toán phù hợp | Support Vector Machines (SVM), Logistic Regression | Gradient Boosted Trees (XGBoost, LightGBM), Random Forest |
4. Best Practices & Kỹ Thuật Triển Khai Thực Chiến (Pro-Tips)
💡 Quy Tắc Sống Còn: Tuyệt Đối KHÔNG Áp Dụng SMOTE Trên Tập Test / Validation!
- Sai lầm chí mạng: Chạy SMOTE trên toàn bộ tập dữ liệu trước khi dùng
train_test_split().
Các điểm nhân tạo trên tập Test được sinh ra từ tập Train (Data Leakage nghiêm trọng), khiến độ chính xác trên báo cáo đạt nhưng triển khai thực tế thất bại hoàn toàn! - Giải pháp chuẩn mực: Sử dụng
imblearn.pipeline.Pipeline:
from imblearn.over_sampling import BorderlineSMOTE
from imblearn.pipeline import Pipeline
from lightgbm import LGBMClassifier
from sklearn.model_selection import StratifiedKFold, cross_val_score
# Pipeline của imblearn CHỈ áp dụng SMOTE trên tập Train của từng Fold,
# tập Validation hoàn toàn giữ nguyên phân phối thực tế:
pipeline = Pipeline([
('resample', BorderlineSMOTE(random_state=42)),
('classifier', LGBMClassifier(n_estimators=100, random_state=42))
])
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
scores = cross_val_score(pipeline, X, y, cv=cv, scoring='average_precision') # PR-AUC
print(f"Mean PR-AUC: {scores.mean():.4f}")
💡 Công Thức Toán Học Hiệu Chỉnh Lại Xác Suất Sau Khi Undersampling
Nếu bạn giảm mẫu lớp đa số từ tỷ lệ thực tế xuống tỷ lệ cân bằng trong tập Train, mô hình sẽ dự đoán ra xác suất . Để đưa về xác suất thực tế khách quan :
5. Góc Ôn Luyện Phỏng Vấn (Interview Corner)
❓ Câu hỏi 1: Giải thích nguyên lý hoạt động của thuật toán SMOTE và Borderline-SMOTE. Tại sao việc áp dụng SMOTE trên toàn bộ tập dữ liệu thiểu số lại có thể làm tăng độ nhiễu, và Borderline-SMOTE khắc phục điều này như thế nào?
- Gợi ý trả lời:
- Nguyên lý SMOTE: Tìm lân cận gần nhất của từng mẫu thiểu số và sinh mẫu nhân tạo bằng cách nội suy tuyến tính: .
- Tại sao SMOTE gốc gây nhiễu:
- SMOTE đối xử với mọi điểm thiểu số như nhau. Nếu một điểm thiểu số nằm lạc lõng sâu bên trong cụm dữ liệu của lớp đa số (thực chất là điểm nhiễu do lỗi nhập liệu hoặc bất thường ngẫu nhiên), SMOTE vẫn nối điểm nhiễu này với các điểm thiểu số khác.
- Hệ quả: Tạo ra một "cây cầu nhân tạo" bắc ngang qua không gian của lớp đa số, làm mờ ranh giới quyết định và khiến mô hình dự đoán sai nhiều trường hợp Dương tính giả (False Positive tăng cao).
- Giải pháp của Borderline-SMOTE:
- Kiểm tra lân cận của từng điểm thiểu số:
- Nếu toàn bộ lân cận đều là lớp đa số Coi là Nhiễu (Noise) và không sinh mẫu.
- Nếu phần lớn lân cận là lớp thiểu số Coi là An toàn (Safe) và không cần sinh mẫu.
- Chỉ khi số lượng lân cận lớp đa số nằm trong khoảng Coi là Vùng biên (DANGER).
- Borderline-SMOTE chỉ tập trung sinh mẫu nhân tạo tại vùng DANGER này, giúp củng cố và làm sắc nét ranh giới phân tách giữa hai lớp mà không lan truyền nhiễu ra toàn bộ không gian.
- Kiểm tra lân cận của từng điểm thiểu số:
❓ Câu hỏi 2: Focal Loss hoạt động như thế nào? Hãy phân tích công thức toán học và giải thích tại sao tham số (Gamma) lại có thể giải quyết triệt để bài toán mất cân bằng cực đoan (ví dụ tỷ lệ 1:1000) mà không cần can thiệp lấy mẫu lại dữ liệu.
- Gợi ý trả lời:
- Công thức toán học: (trong đó là xác suất mô hình dự đoán đúng nhãn thực tế).
- Vai trò của hệ số điều biến :
- Giả sử đặt :
- Với mẫu dễ phân loại (Easy Negatives): Mô hình dự đoán tự tin đúng với . Hệ số điều biến sẽ là: . Mức phạt loss của mẫu này bị giảm đi 10,000 lần!
- Với mẫu khó hoặc mẫu thiểu số bị đoán sai (Hard / Misclassified): Mô hình dự đoán kém với . Hệ số điều biến là: (gần như giữ nguyên toàn bộ mức phạt).
- Giả sử đặt :
- Giải quyết bài toán 1:1000:
- Trong tập dữ liệu mất cân bằng , mẫu là các ca âm tính dễ phân loại. Dưới hàm Cross-Entropy thông thường, tổng loss của 1,000 mẫu dễ này sẽ đè bẹp hoàn toàn 1 mẫu hiếm.
- Focal Loss triệt tiêu đạo hàm của toàn bộ các mẫu dễ về gần bằng , buộc gradient của mạng nơ-ron chỉ được tạo ra từ các mẫu khó và các mẫu hiếm Mô hình tự động học xuất sắc lớp thiểu số mà không cần nhân bản dữ liệu hay xóa bớt mẫu.
❓ Câu hỏi 3: Khi bạn áp dụng kỹ thuật Resampling (như SMOTE hay Undersampling) hoặc tinh chỉnh scale_pos_weight để huấn luyện mô hình, tại sao xác suất dự đoán đầu ra (Predicted Probabilities) lại bị sai lệch nghiêm trọng so với thực tế? Làm thế nào để hiệu chuẩn lại xác suất (Probability Calibration) bằng Platt Scaling hoặc Isotonic Regression?
- Gợi ý trả lời:
- Nguyên nhân sai lệch xác suất:
- Các kỹ thuật Resampling đã làm thay đổi tỷ lệ tiên nghiệm gốc (Prior Probability ) của dữ liệu.
- Nếu trong thực tế rủi ro gian lận là , nhưng ta dùng SMOTE để cân bằng tập Train thành , mô hình sẽ tối ưu hóa theo thế giới đó. Đầu ra của hàm
predict_proba()sẽ phóng đại xác suất lên gấp hàng chục lần (ví dụ đoán thay vì ). - Điều này khiến điểm số xác suất không thể dùng trực tiếp cho các bài toán tính toán rủi ro tài chính kỳ vọng: .
- Quy trình Hiệu chuẩn lại xác suất (Calibration Workflow):
- Giữ lại một tập dữ liệu kiểm chuẩn độc lập (Calibration Set) có phân phối gốc chưa qua Resampling.
- Nạp điểm số thô của mô hình trên tập Calibration Set vào mô hình hiệu chuẩn:
- Platt Scaling: Huấn luyện hàm hồi quy Logistic đơn biến: để tìm 2 tham số .
- Isotonic Regression: Tìm hàm tăng đơn điệu dạng bậc thang khớp với dữ liệu thực tế bằng thuật toán Pairwise Adjacent Violators (PAV).
- Điểm số xác suất sau khi đi qua bộ hiệu chuẩn sẽ phản ánh chính xác: Nếu mô hình đưa ra xác suất , thì trong 100 giao dịch tương tự sẽ có đúng 5 giao dịch thực tế là gian lận.
- Nguyên nhân sai lệch xác suất:
6. Tóm Tắt Ghi Nhớ Nhanh (Key Takeaways)
- Accuracy Paradox: Tuyệt đối không dùng Accuracy cho dữ liệu mất cân bằng; luôn đánh giá bằng PR-AUC, Recall, và F1-Score.
- Borderline-SMOTE + Tomek Links vượt trội hơn SMOTE truyền thống nhờ chỉ tập trung sinh mẫu tại Vùng biên (DANGER Zone) và dọn sạch điểm nhiễu.
- Focal Loss với hệ số là giải pháp thanh lịch nhất ở cấp độ thuật toán, tự động triệt tiêu gradient của các mẫu dễ.
- Resampling làm sai lệch xác suất thực tế Bắt buộc phải áp dụng Hiệu chuẩn xác suất (Platt Scaling / Isotonic Regression) trước khi đưa vào ứng dụng tài chính.
- Luôn điều chỉnh Ngưỡng quyết định (Decision Threshold ) dựa trên tỷ lệ đánh đổi chi phí thực tế giữa False Negatives và False Positives.