Dự án này tự động hóa quy trình: quét các mô hình Random Forest (RF) trên một lưới số lượng cây, lặp lại mỗi cấu hình với nhiều config ngẫu nhiên, rồi chọn số cây nhỏ nhất T* vẫn giữ được hiệu năng và độ ổn định trong khi chi phí huấn luyện ở mức hợp lý.
Với mỗi bộ dữ liệu và mỗi số lượng cây ứng viên trong N_TREES_GRID, script sẽ:
- Chạy
REPEATSlần huấn luyện RF độc lập (khác hạt giống) vớin_jobs=-1. - Ghi lại chỉ số cho từng lần chạy:
- Phân loại: accuracy (luôn có) và binary AUC nếu áp dụng.
- Hồi quy: MSE và R².
- Luôn có: điểm OOB, thời gian huấn luyện, độ quan trọng đặc trưng, dự đoán.
- Tổng hợp thống kê theo từng
T: trung bình/độ lệch chuẩn của chỉ số chính, thời gian huấn luyện trung bình, độ lệch chuẩn dự đoán (thấp hơn = ổn định hơn), và độ giống nhau Jaccard của top-10 đặc trưng quan trọng (cao hơn = tốt hơn). - Chọn
T*thông quaproject/selection.py:- Áp dụng quy tắc hiệu năng tương đối/1-SE (mặc định ≤0.5% giảm so với tốt nhất).
- Áp dụng ngưỡng ổn định: độ lệch chuẩn dự đoán nằm trong
(1 + PRED_STD_TOL) * minvà Jaccard của độ quan trọng nằm trong(1 - IMP_JACCARD_TOL) * max. - Chọn
Tnhỏ nhất thỏa cả hai; phương án dự phòng ưu tiên độ ổn định tốt nhất trong các ứng viên hiệu năng.
- Lưu hiện vật cho từng bộ dữ liệu:
- Hình (
figures/{dataset}_summary.png): đường cong hiệu năng, ổn định và thời gian huấn luyện có đánh dấuT*. - Chỉ số thô (
results/{dataset}_results.json): toàn bộ dữ liệu lưới kèm lý do lựa chọn.
- Hình (
Đảm bảo đã cài các thư viện phụ thuộc (scikit-learn, matplotlib, numpy, pandas, scipy), sau đó thực thi:
PYTHONPATH=project python project/main.pyChỉnh project/config.py để thay đổi bộ dữ liệu, các ngưỡng hoặc số lần lặp.