AutoGluon时间序列预测评估指标详解

AutoGluon时间序列预测评估指标详解

autogluon AutoGluon: AutoML for Image, Text, Time Series, and Tabular Data autogluon 项目地址: https://gitcode.com/gh_mirrors/au/autogluon

引言

在时间序列预测任务中,选择合适的评估指标对于模型性能的衡量至关重要。AutoGluon作为一个强大的自动化机器学习框架,提供了丰富的时间序列预测评估指标。本文将全面介绍AutoGluon中的各种评估指标,帮助读者理解如何根据具体需求选择合适的指标,并指导如何自定义评估指标。

评估指标概述

AutoGluon中的评估指标分为两大类:

  1. 点预测指标:用于评估单值预测的准确性
  2. 概率预测指标:用于评估概率分布预测的质量

所有指标在AutoGluon中都以数值越大越好的形式呈现,这意味着某些指标会乘以-1进行转换。

如何选择评估指标

选择评估指标时,需要考虑三个关键问题:

1. 需要点预测还是概率预测?

  • 如果需要概率预测,应选择基于分位数损失的WQLSQL指标
  • 如果需要点预测,则选择其他指标

2. 是否更关注大值时间序列的预测精度?

  • 如果,选择尺度依赖指标:WQLMAERMSEWAPE
  • 如果,选择尺度无关指标:SQLMASERMSSE,或百分比指标MAPESMAPE

3. (仅点预测)需要预测中位数还是均值?

  • 预测中位数:使用MAEMASEWAPE
  • 预测均值:使用MSERMSERMSSE

点预测指标详解

平均绝对误差(MAE)

衡量预测值与实际值之间的平均绝对差异,对异常值不敏感。

平均绝对百分比误差(MAPE)

以百分比形式表示预测误差,便于跨尺度比较,但对零值敏感。

平均绝对标度误差(MASE)

将误差标准化为基准预测方法的误差,适合比较不同时间序列的预测性能。

均方误差(MSE)

平方预测误差的平均值,对大误差给予更高惩罚。

均方根误差(RMSE)

MSE的平方根,与原始数据单位一致。

均方根对数误差(RMSLE)

先对数值取对数再计算RMSE,减小大值的影响。

均方根标度误差(RMSSE)

RMSE的标度化版本,适合跨序列比较。

对称平均绝对百分比误差(SMAPE)

MAPE的对称版本,解决了原始MAPE的一些问题。

加权绝对百分比误差(WAPE)

以总实际值为分母的百分比误差,比MAPE更稳定。

概率预测指标详解

标度分位数损失(SQL)

评估分位数预测准确性的标度无关指标。

加权分位数损失(WQL)

考虑时间序列值的加权分位数损失,对大值序列更敏感。

自定义评估指标

当内置指标不满足需求时,可以创建自定义指标:

  1. 继承TimeSeriesScorer基类
  2. 实现compute_metric方法
  3. 设置相关属性(greater_is_better_internal等)

自定义指标示例

均方误差实现
class MeanSquaredError(TimeSeriesScorer):
    greater_is_better_internal = False
    optimum = 0.0
    
    def compute_metric(self, data_future, predictions, target, **kwargs):
        return sklearn.metrics.mean_squared_error(
            y_true=data_future[target], 
            y_pred=predictions["mean"]
        )
分位数损失实现
class MeanQuantileLoss(TimeSeriesScorer):
    needs_quantile = True
    greater_is_better_internal = False
    optimum = 0.0
    
    def compute_metric(self, data_future, predictions, target, **kwargs):
        quantile_columns = [col for col in predictions if col != "mean"]
        total_loss = 0.0
        for q in quantile_columns:
            total_loss += sklearn.metrics.mean_pinball_loss(
                y_true=data_future[target],
                y_pred=predictions[q],
                alpha=float(q)
        return total_loss / len(quantile_columns)

模型训练损失定制

对于深度学习模型,可以通过修改distr_output参数来改变训练损失:

from gluonts.torch.distributions import NormalOutput, QuantileOutput

predictor.fit(
    train_data,
    hyperparameters={
        "PatchTST": [
            {"distr_output": NormalOutput()},  # 使用负对数似然损失
            {"distr_output": QuantileOutput(quantiles=[0.1, 0.5, 0.9])}  # 使用分位数损失
        ]
    }
)

总结

AutoGluon提供了丰富的时间序列预测评估指标,理解这些指标的特点和适用场景对于构建高质量的预测模型至关重要。通过本文的介绍,读者应该能够:

  1. 根据业务需求选择合适的评估指标
  2. 理解不同指标的计算方式和特点
  3. 在必要时创建自定义评估指标
  4. 针对特定模型定制训练损失函数

正确选择和使用评估指标是构建有效时间序列预测系统的关键一步,希望本文能为读者在使用AutoGluon进行时间序列预测时提供有价值的指导。

autogluon AutoGluon: AutoML for Image, Text, Time Series, and Tabular Data autogluon 项目地址: https://gitcode.com/gh_mirrors/au/autogluon

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

松俭格

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值