用途:在表格数据上构建可上线的回归模型,同时输出点估计与预测区间。适用于目标为连续值(价格、计数、评分、时间、需求),特征是表格型(数值、类别、日期),且至少有数百条标注样本,下游需要区间估计的场景。不适用于分类、具有强时间结构的时序问题、样本少于100行的线性数据,或需要完全贝叶斯后验的情形。
主要能力:使用 ibis(ibis-framework[duckdb])读取 parquet 并计算统计量,在进入 sklearn 前只用一次 .execute() 物化。同一训练数据上拟合三个 XGBoost 模型:点估计(objective="reg:squarederror")、下分位(objective="reg:quantileerror",quantile_alpha=0.05)与上分位(quantile_alpha=0.95)。注意分位数目标需要 XGBoost 2.0+,1.x 可用 lightgbm 或分位数随机森林替代。
使用方式:从训练数据切出校准集,在校准集上用 E_i = max(q_low(x_i) - y_i, y_i - q_high(x_i)) 计算符合性分数,取分位点得到 conformal_q,推理时将原始上下界分别减、加 conformal_q 得到区间(Romano, Patterson, Candes 2019 的 CQR)。需同时记录原始与共形化后的经验覆盖率。诊断方面绘制残差对预测、残差直方图加正态叠加、QQ 图;指标报告 RMSE、MAE(使用目标同量纲)与 R²,并关注不可约误差;特征重要性使用 SHAP TreeExplainer,而非 feature_importances_。MLflow 记录参数、指标(test_rmse、test_mae、test_r2、conformal_q、coverage_raw 与 coverage_conformal、区间宽度等)、标签与制品(三个模型、预测对比图、残差诊断、覆盖率图、SHAP 摘要)。
限制与注意事项:未做共形校准的原生分位数 XGBoost 区间通常覆盖不足;不得在校验集上做校准;注意异方差数据应改用分位数或 Huber 损失;预测区间不等于置信区间。项目布局与脚本路径(train.py、predict.py、plots.py、notebooks/demo.py)以及完整示例代码见原始资料。