RMSE、wRPD与净误差:routee-powertrain-model-library 模型精度评估体系解读
RMSE、wRPD与净误差:routee-powertrain-model-library 模型精度评估体系解读
routee-powertrain-model-library 是一个收录 280 多个预训练车辆能耗预测模型的开源模型库,覆盖 ICE、HEV、BEV、PHEV 及重型卡车等 74 种车辆配置。对新手来说,拿到一个模型后最关心的问题往往是:它预测得准不准? 本项目用一套完整的模型精度评估体系来回答这个问题——每个模型都在 metadata.json 中自带留一测试误差,包括 RMSE、加权相对百分比偏差(wRPD)与净误差(Net Error),并在链路(link)和行程(trip)两个粒度上报告。
本文带你零基础读懂这套模型精度评估体系,不用写代码也能看懂每个指标的含义。
一、评估数据藏在哪里:每个模型自带"体检报告"
本库的目录结构是:v2/<品牌>/<车型>/<年份>/<模型配置>/v1/,每个模型目录下有两个文件:
- 模型本体:model.onnx(随机森林/CNN)或 model.joblib(NGBoost 概率模型)
- 模型卡片:metadata.json——包含输入输出契约、训练来源(provenance)和误差指标(errors)
打开任意一份 metadata.json,找到 errors 字段就能看到测试集上算好的全套精度指标。此外,仓库根目录的 index.json 是全部模型的机读目录,方便程序批量提取精度信息。
以 2016 款丰田凯美瑞随机森林模型为例,它的 errors 字段核心内容如下:
"fuel_gge": {
"link_root_mean_squared_error": 0.00118,
"link_weighted_relative_percent_difference": 0.423,
"net_error": 0.00668,
"trip_root_mean_squared_error": 0.00764,
"trip_weighted_relative_percent_difference": 0.112,
"trip_norm_root_mean_squared_error": 0.179
}
训练时按 metadata.json 中 provenance.training 的设定划分了 20% 的留一测试集(test_size: 0.2,random_seed: 52),所以上面每个数字都是未见过的数据上的表现,不是"考试前的模拟成绩"。
二、逐个拆解三大核心指标:RMSE、wRPD 与净误差
1. RMSE(均方根误差):平均每次"偏"了多少
link_root_mean_squared_error 和 trip_root_mean_squared_error 分别给出单条路段和整段行程的 RMSE。凯美瑞模型的链路级 RMSE 是 0.00118 加仑——平均而言,模型对一条路段的油耗预测与真实值相差约 0.001 加仑。
与之配套的 norm_root_mean_squared_error(归一化 RMSE)把误差除以数据尺度,得到一个无量纲数:越接近 0 越准,接近 1 说明误差已和数据本身的波动一样大。凯美瑞的行程级 nRMSE 为 0.179,即行程总油耗的预测误差约为数据自身变动的 18%。
2. wRPD(加权相对百分比偏差):相对偏差的直观表达
weighted_relative_percent_difference 衡量"预测值相对真实值平均偏了几个百分点",以小数表示:0.13 就代表约 13% 的相对误差。这是选型时最直觉的指标——
- 凯美瑞(ICE):行程级 wRPD ≈ 0.112,即整趟行程油耗预测平均偏差约 11%
- 链路级 wRPD 高达 0.42:单条路段上车速、坡度变化剧烈,单段预测天然更"抖",这属于正常现象(详见第四节的对比)
3. Net Error(净误差):整盘算下来"高估还是低估"
单段预测有正有负,汇总后正负会互相抵消。net_error 就是把测试集所有预测加总后与所有真实值加总的偏差:凯美瑞模型为 0.00668,意味着全测试集总油耗只被高估了约 0.7%。这正是车队级、走廊级能耗统计真正关心的口径。
三、为什么有 link 和 trip 两行数字?
| 粒度 | 含义 | 凯美瑞示例(trip wRPD / link wRPD) |
|---|---|---|
| link(链路级) | 每条路网路段的能耗预测误差 | 0.112 / 0.423 |
| trip(行程级) | 把一次完整行程的所有路段聚合后的误差 | — |
链路级误差大、行程级误差小是能量守恒式的必然结果:一段高估、一段低估,汇总后互相抵消。因此:
- 做逐段路径规划时,重点看 link 级指标
- 做全程能耗、续航估算时,trip 级指标更有参考意义
errors 字段中还有一组里程经济性指标:actual_dist_per_energy(真实每加仑里程 31.2 mi/gal)、pred_dist_per_energy(模型 31.0)与 real_world_pred_dist_per_energy(应用实车修正系数后的 26.6)。后者体现了库内的 real-world adjustment 机制——实验室/仿真能耗会按动力类型乘以修正系数(如 ICE 为 1.166)向真实道路表现靠拢,这一机制及完整系数表见 README.md。
四、全库精度总览:哪类车预测得最准?
README.md 的 Evaluation 章节汇总了 280 个报告行程级误差的模型,按动力类型给出中位数、p90 与最大值:
| 动力类型 | 模型数 | 行程级中位 wRPD | p90 | 最大 |
|---|---|---|---|---|
| ICE(燃油) | 95 | 0.09 | 0.11 | 0.27 |
| HEV(混动) | 31 | 0.12 | 0.15 | 0.33 |
| 重型卡车 | 48 | 0.12 | 0.16 | 0.19 |
| BEV(纯电) | 76 | 0.18 | 0.23 | 0.72 |
| PHEV(纯电模式) | 15 | 0.25 | 0.30 | 0.32 |
| PHEV(混动模式) | 15 | 0.16 | 0.48 | 0.48 |
| 全部 | 280 | 0.13 | 0.24 | 0.72 |
几个值得记住的结论:
- 燃油车最准(中位约 9% 行程级偏差),BEV 次之——纯电车型能耗受电池热管理、空调影响更大,建模难度更高
- 全库行程级中位 wRPD 约 13%,即"典型一趟行程的能耗预测偏差在 13% 左右"
- 中位净误差仅 1.5%(p90 4.3%):单段可以偏差十几个百分点,但聚合到车队/走廊尺度上,系统性偏差非常小
- 链路级中位 wRPD 为 0.40,再次印证"逐段预测更难"
五、进阶:NGBoost 概率模型的专属指标
库中还有 16 个 model.joblib 形式的 NGBoost 随机模型(如 toyota/corolla_ice/2016 下的 4 个配置),除了上述指标外,还多报告三项概率校准指标:
| 指标 | 全称 | 凯美瑞 NGBoost 示例 | 怎么读 |
|---|---|---|---|
negative_log_likelihood |
负对数似然 | 行程级 -5.28 | 数值越高(越不负)概率预测越好 |
continuous_ranked_probability_score |
CRPS 分数 | 行程级 0.00094 | 越低越好,衡量整个概率分布的拟合 |
prediction_interval_coverage_probability |
预测区间覆盖率 | 行程级 0.98 | 声明 95% 置信时实际覆盖 98%,说明置信区间略偏保守,可信度充足 |
普通确定性模型这三项为 null;如果你关心"预测的不确定性有多大"(例如续航估算的风险边界),应优先选择 NGBoost 配置。
六、三步快速读懂任意模型的精度
- 定位模型目录:通过 index.json 或直接浏览
v2/找到目标车型,例如 v2/toyota/camry_ice/2016/ - 打开
errors字段:看error_by_target下你的目标列(fuel_gge、electric_kwh等) - 按使用场景挑指标:
- 逐段能耗/路径规划 → 看
link_weighted_relative_percent_difference - 全程续航/油耗 → 看
trip_weighted_relative_percent_difference与net_error - 不确定性需求 → 看 NGBoost 模型的 PICP 与 CRPS
- 逐段能耗/路径规划 → 看
常见问题
问:0.13 的 wRPD 算好还是差? 对"仅凭车速、坡度等路段级特征预测能耗"这类任务,行程级 10%~20% 属于该领域主流精度水平;且净误差中位仅 1.5%,用于车队级统计完全可用。
问:为什么 PHEV 的 p90 与 max 差异很大? PHEV 同时覆盖纯电(kwh)与保电(gge)两种模式,且样本量仅各 15 个模型,个别车型工况单一会拉高上尾值。
问:这些数字是怎么来的,可信吗?
每个模型使用固定随机种子、独立 20% 测试集在训练时计算,并随 metadata.json 一同发布;模型还带 model_digest(sha256)指纹,路径与元数据一旦不一致加载器会直接报错,从机制上保证了指标与模型一一对应。
总结:routee-powertrain-model-library 用"模型自带体检报告"的方式,把 RMSE(平均偏差)、wRPD(相对偏差百分比)、Net Error(系统性偏差) 三大指标在链路/行程两个粒度上完整披露,并辅以概率校准指标。新手只需记住一条主线:单段看 link、全程看 trip、统计看 net error,即可为任何场景快速判断模型精度是否够用。