Posts

BASELINE KHÔNG GIẢM CHIỀU VÀ XGBOOST THU NHỎ

Mục tiêu

Tuần 2 trả lời hai câu hỏi phản biện quan trọng:

  1. PCA/IPCA có thật sự cần thiết không?
    • So sánh No reduction với IPCA.
    • Giữ nguyên one-hot encoding, StandardScaler, split, seed và model.
    • No reduction nghĩa là dùng toàn bộ feature sau one-hot encoding và scaling, không áp dụng PCA/IPCA.
  2. 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.

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.

Post a Comment

© ‧ Nerdcats. All rights reserved. Developed by Jago Desain