PaddleTS metrics 用户指南

Metric 介绍

评估指标(Metric)用来衡量一个模型的效果, 一般是通过计算模型的预测结果和真实结果之间的某种差距.

与损失函数类似, 不同的任务场景会选择不同的评估指标评估模型的效果, 例如 MAE(Mean Absolute Error) 和 MSE(Mean squared error) 常用于回归任务. PaddleTS库内置了常用的评估指标, 同时也支持开发者自定义评估指标.

代码示例

以MSE为例. 已知模型预测数据的TSDataset和相对应的真实数据TSDataset, 使用方式如下所示:

from paddlets import TSDataset
from paddlets.metrics import MSE

"""Note: Both y_true and y_score are pd.DataFrame.
"""
mse = MSE()
tsdataset_true = TSDataset.load_from_dataframe(y_true)
tsdataset_score = TSDataset.load_from_dataframe(y_score)
result = mse(tsdataset_true, tsdataset_score)

自定义评估指标Metric

实现自定义评估指标只需以下几个步骤:

  1. 创建一个继承自paddlets.metric.base.Metric的类.

  2. 设置 _NAME(metric名称)和_MAXIMIZE(优化方向)两个类成员.

  3. 在类的构造函数中初始化必须的参数.

  4. 根据指标具体的计算逻辑实现metric_fn方法.

代码示例

以MSE为例, 实现细节如下所示:

from paddlets.metrics.base import Metric
import sklearn.metrics as metrics

class MSE(Metric):
    """
    1. Inherited from paddlets.metric.Metric.
    2. Set two class members, _NAME(metric name) and _MAXIMIZE(optimization direction).
    """
    _NAME = "mse"
    _MAXIMIZE = False

    def __init__(
        self,
        mode: str = "normal"
    ):
    """3. Initialize the required parameter in __init__.
    """
        super(MSE, self).__init__(mode)

    @ensure_2d
    def metric_fn(
        self,
        y_true: np.ndarray,
        y_score: np.ndarray
    ) -> float:
        """4. Implement the metric_fn method according to computation logic.
        """
        return metrics.mean_squared_error(y_true, y_score)