Mục tiêu
Tuần 2 trả lời hai câu hỏi phản biện quan trọng:
-
PCA/IPCA có thật sự cần thiết không?
- So sánh
No reductionvớiIPCA. - Giữ nguyên one-hot encoding, StandardScaler, split, seed và model.
No reductionnghĩa là dùng toàn bộ feature sau one-hot encoding và scaling, không áp dụng PCA/IPCA.
- So sánh
-
Cascade nhanh nhờ early exit hay chỉ vì được so với XGB-300 quá nặng?
- So sánh Cascade với
XGB-30,XGB-50,XGB-100,XGB-300. - Các XGB chỉ khác
n_estimators; các tham số khác giữ nguyên.
- So sánh Cascade với
Kế hoạch thí nghiệm mặc định
UNSW raw random split và UNSW official split
| Chế độ | Mô hình |
|---|---|
| No reduction | XGB-300, Cascade |
| IPCA | XGB-30, XGB-50, XGB-100, XGB-300, Cascade |
Với 5 seeds:
2 protocols × (2 + 5 models) × 5 seeds = 70 results
Seeds:
21, 42, 84, 168, 336
Cấu trúc thư mục
Đặt toàn bộ file trong D:\NCKH:
D:\NCKH\
├── week1_repeated_seed_experiment.py
├── week2_baseline_experiment.py
├── week2_statistics.py
├── requirements_week2.txt
├── UNSW_NB15_1.csv hoặc UNSW-NB15_1.csv
├── UNSW_NB15_2.csv hoặc UNSW-NB15_2.csv
├── UNSW_NB15_3.csv hoặc UNSW-NB15_3.csv
├── UNSW_NB15_4.csv hoặc UNSW-NB15_4.csv
├── UNSW_NB15_training-set.csv
└── UNSW_NB15_testing-set.csv
Bước 1 — Cài thư viện
PowerShell:
cd D:\NCKH
python -m pip install -r requirements_week2.txt
Bước 2 — Chạy smoke test
Nhấn đúp:
RUN_WEEK2_SMOKE_TEST.bat
Hoặc PowerShell:
python week2_baseline_experiment.py `
--data_dir "." `
--datasets unsw unsw_official `
--modes no_reduction ipca `
--models xgb30 xgb300 cascade `
--seeds "42" `
--sample_frac 0.05 `
--device cuda `
--require_cuda `
--n_jobs 16 `
--timing_repeats 2 `
--out_prefix week2_smoke `
--fresh
Smoke test dự kiến tạo 10 kết quả:
2 protocols × [(No reduction: 2 models) + (IPCA: 3 models)] = 10
Kết quả nằm trong:
D:\NCKH\week2_smoke_outputs\
Kiểm tra:
run_summary.json
errors.csv
all_results.csv
preprocessing_report.csv
cascade_validation_sweep.csv
predictions\
Không dùng metric smoke test trong bài vì chỉ chạy 5% dữ liệu.
Bước 3 — Chạy đủ 5 seeds
Chỉ chạy sau khi smoke test không có lỗi.
Nhấn đúp:
RUN_WEEK2_FULL_5_SEEDS.bat
Hoặc PowerShell:
python week2_baseline_experiment.py `
--data_dir "." `
--datasets unsw unsw_official `
--modes no_reduction ipca `
--models xgb30 xgb50 xgb100 xgb300 cascade `
--seeds "21,42,84,168,336" `
--sample_frac 1.0 `
--device cuda `
--require_cuda `
--n_jobs 16 `
--timing_repeats 5 `
--out_prefix week2_baselines_5seeds `
--fresh
Nếu máy tắt hoặc chương trình bị dừng, chạy lại cùng lệnh nhưng bỏ --fresh. Runner sẽ bỏ qua các cấu hình đã hoàn thành.
Bước 4 — Tổng hợp thống kê
Nhấn đúp:
RUN_WEEK2_STATISTICS.bat
Hoặc:
python week2_statistics.py `
--data_dir "." `
--out_prefix week2_baselines_5seeds
Các file quan trọng:
aggregate_mean_std_ci.csv
compact_xgb_vs_cascade.csv
no_reduction_vs_ipca.csv
compute_matched_summary.csv
pareto_frontier.csv
mcnemar_by_seed.csv
week2_statistics_summary.json
Ý nghĩa từng file
no_reduction_vs_ipca.csv
So sánh cùng một mô hình giữa:
No reduction → IPCA
Có:
- chênh lệch F1-Weighted;
- F1-Macro;
- Attack-F1;
- MCC;
- FAR;
- DR;
- speedup của IPCA so với không giảm chiều;
- paired t-test, Wilcoxon, exact sign-flip và Cohen's dz.
compact_xgb_vs_cascade.csv
So sánh từng XGB thu nhỏ với Cascade trên cùng seed và IPCA:
XGB-30 vs Cascade
XGB-50 vs Cascade
XGB-100 vs Cascade
XGB-300 vs Cascade
Quy ước:
Delta metric = Cascade - XGB
Speedup = Time_XGB / Time_Cascade
- Speedup > 1: Cascade nhanh hơn.
- Delta F1 > 0: Cascade có F1 cao hơn.
compute_matched_summary.csv
Tự tìm XGB thu nhỏ có prediction time gần Cascade nhất để trả lời trực tiếp:
Cascade có tốt hơn mô hình đơn có ngân sách suy luận tương đương hay không?
pareto_frontier.csv
Đánh dấu các model không bị model khác vừa nhanh hơn vừa có F1 cao hơn.
Cách kết luận
Nếu Cascade tốt hơn XGB có thời gian gần nhất
Có thể giữ claim:
Early-exit cascade routing provides an advantage over compact single-model baselines under a comparable inference budget.
Nếu XGB nhỏ tương đương hoặc tốt hơn Cascade
Phải giảm claim thành:
The cascade is one viable efficiency mechanism, while compact XGBoost provides a competitive simpler alternative.
Nếu No reduction tốt hơn IPCA
Không được viết PCA/IPCA luôn cải thiện hiệu năng. Nên viết:
IPCA provides a dimensionality–efficiency trade-off rather than a universal performance improvement.
Threshold Cascade
Runner đã mở rộng grid validation-only:
DT low: 0.01, 0.03, 0.05, 0.07, 0.10, 0.15
XGB low: 0.35, 0.40, 0.45, 0.48
Tổng cộng 24 threshold combinations cho mỗi Cascade run. Threshold cuối chỉ được chọn bằng validation set; test set không dùng để chọn ngưỡng.
Lưu ý khoa học
- Không chọn model hoặc threshold bằng test set.
- XGB, Cascade và các compact baseline trong cùng seed dùng cùng train/validation/test split.
- Các model dùng cùng dữ liệu đã encode và scale.
- Chỉ số thời gian là median sau warm-up và nhiều lần đo.
- Khi chỉ có 5 seeds, không nên chỉ dựa vào
p < 0.05; phải báo cáo mean ± SD, CI và effect size.