QuantML-Qlib Model | 还在使用MSE?试试这些更加适合金融预测的损失函数

收录于话题

#QuantML-QLib

在深度学习领域,回归任务是指预测连续型变量的任务,例如预测房价、气温或用户评分等。为了评估模型预测值与真实值之间的差异,我们需要定义一个损失函数。损失函数不仅用于评估模型性能,还作为优化算法的目标函数,通过最小化损失函数来调整模型参数,使模型更好地拟合数据。

在金融时序回归问题中,通常采用的MSE作为损失函数,除此之外,还有一些在金融预测中效果较好的损失函数。

根据损失函数的类型,大致可以分为三类,分别为单样本类损失函数,主要通过单一样本计算损失函数,常见的MSE,MAE,MAPE等拘束于此类, 第二类为分位数损失函数,需要模型预测不同的分位数结果进行加权,第三类为Batch类损失函数,信息系数IC即属于此类,通常将同一日的所有股票作为一个样本计算IC作为损失函数。

损失函数介绍

单样本类

1. 均方误差(Mean Squared Error, MSE)

均方误差是回归任务中最常用的损失函数之一。它计算的是预测值与真实值之间差值平方的平均值。MSE的数学定义如下:

其中, 是真实值, 是模型预测值, 是样本数量。MSE的一个显著特点是它对较大的预测误差给予了更大的惩罚,因为误差是平方的。这一特性使得MSE对异常值非常敏感,可能导致模型在训练过程中过分关注这些异常值,从而影响整体性能。

2. 平均绝对误差(Mean Absolute Error, MAE)

平均绝对误差是另一种常用的回归损失函数。MAE计算的是预测值与真实值之间差值绝对值的平均值。MAE的数学定义如下:

MSE相比,MAE对异常值的敏感度较低,因为它只计算误差的绝对值。因此,当数据集中存在异常值时,使用MAE可以得到更加稳定的模型训练过程。

3. 平均绝对百分比误差(Mean Absolute Percentage Error, MAPE)

平均绝对百分比误差计算的是预测值与真实值之间差异的百分比的平均值。MAPE的数学定义如下:

MAPE的一个主要优点是它对不同规模的数据具有良好的可比性,因为它是基于百分比的误差度量。然而,当真实值接近于零时,MAPE可能会变得非常大甚至无限大,因此在使用时需要注意避免这种情况。

4. Huber损失(Huber Loss)

Huber损失结合了MSE和MAE的优点,既保持了对异常值的鲁棒性,又能在误差较小时提供更快的收敛速度。Huber损失的定义如下:

其中, 是预测误差, 是一个阈值,用来区分线性和二次损失的区域。当误差小于时,Huber损失类似于MSE;当误差大于时,则类似于MAE。因此,Huber损失在处理异常值时表现良好,同时也能保证模型的快速收敛。

分位数类

分位数损失(Quantile Loss)是一种用于回归任务中的损失函数,特别适用于当关注于预测分布的特定分位数时。与传统的均方误差(MSE)或平均绝对误差(MAE)不同,分位数损失允许模型优化目标针对不同的分位点,从而提供关于整个预测分布的信息,而不仅仅是集中趋势。在一些SOTA模型(例如TFT)以及金融预测模型中都有使用

1. Quantile Loss

对于给定的分位数 ),分位数损失定义为:

这里 是观测值, 是预测值。根据这个定义,我们可以看到:

  • 当真实值 大于预测值 时,即低估了实际值,损失是 倍的差值。
  • 当真实值 小于或等于预测值 时,即高估了实际值,损失是 倍的差值。

特点

  • 灵活性:通过调整 的值,可以控制模型对过高估计和过低估计的不同敏感程度。例如,如果 ,则分位数损失等同于 MAE,因为此时对高估和低估的惩罚相同。
  • 鲁棒性:分位数损失在处理异常值方面比 MSE 更具鲁棒性,因为它不是基于误差的平方。
  • 非对称性:分位数损失能够捕捉到数据分布的不对称性,并且可以根据需要调整来关注分布的不同部分。

应用场景

  • 风险管理:在金融领域,可能更关心极端事件的风险,如市场崩盘或极端天气事件的概率。使用较低或较高的分位数(例如 )可以帮助评估这些风险。

2. HuberMQLoss

HuberMQLoss 是一种结合了 Huber 损失的鲁棒性和多分位数损失(Multi-Quantile Loss)的预测准确性的损失函数。

HuberMQLoss 定义和特点

  • HuberMQLoss 是对多分位数损失函数的修改版本,它结合了分位数损失和 Huber 损失的优点。
  • 这种损失函数特别适用于处理包含异常值或重尾分布的数据的回归任务。
  • 通过 delta 参数控制鲁棒性和预测精度之间的权衡。
  • 根据 levelquantiles 参数,该损失函数更加关注不同分位数的低估或高估。

HuberMQLoss 公式

其中,HuberQL 是 Huberized Quantile Loss,它以非对称的方式测量 Huber 损失,根据分位数参数 q 更多地关注低估或高估。

HuberMQLoss 参数

  • level: 预测区间的概率水平列表,默认为中位数。
  • quantiles: 作为 level 的替代,直接从 y 分布中估计的分位数列表。
  • delta: 指定在哪个阈值下从 delta-scaled L1 损失转换为 L2 损失的参数。
  • horizon_weight: 为预测窗口的每个时间戳指定权重的张量。

HuberMQLoss 应用

  • 鲁棒性:通过 Huber 损失部分,HuberMQLoss 对异常值具有鲁棒性,减少了异常值对模型预测的影响。
  • 多分位数关注:通过多分位数损失部分,HuberMQLoss 能够同时关注预测分布的不同分位数,提供了对预测不确定性的更全面评估。

Batch类

1.IC

IC 即 Spearman 相关系数(Spearman’s Rank Correlation Coefficient),通常简称为 Spearman ρ (rho),是一种非参数统计方法,用于衡量两个变量之间的单调关系强度。与皮尔逊相关系数不同,它不假设数据之间存在线性关系,而是基于变量值的秩次(即排序后的顺序)来计算。因此,Spearman 相关系数特别适用于评估那些可能不是线性但具有单调递增或递减趋势的关系。

定义

对于给定的两组数据 ,首先将它们转换为各自的秩次(即在各自数据集中的顺序排名)。然后,Spearman 相关系数 可以通过以下公式计算:其中,

  • 中第 个元素的秩次差。
  • 是样本数量。

或者,也可以使用皮尔逊相关系数的形式来定义,基于秩次而非原始值:这里,

  • 分别是 的秩次。
  • 的协方差。
  • 分别是 的标准差。

特点

  • 非参数性:Spearman 相关系数不要求数据符合特定的概率分布,也不要求数据之间存在线性关系。
  • 鲁棒性:由于基于秩次计算,对异常值具有较好的鲁棒性。
  • 适用范围广:可以用于连续型、序数型甚至部分名义型数据(当名义数据能够合理地被排序时)。
  • 检测单调关系:能有效识别并量化两个变量之间的单调递增或递减关系,无论是线性的还是非线性的。

2. CCC

Concordance Correlation Coefficient (CCC) 是一种用于衡量两个变量之间一致性或一致程度的统计量。它不仅考虑了两组数据之间的相关性,还考虑了它们的均值和方差的一致性。因此,CCC 比单纯的相关系数(如皮尔逊相关系数)提供了更全面的信息,特别是在评估预测模型性能时。在九坤的kaggle比赛中曾有top组采用此方案。

CCC 的定义

给定两组数据 ,CCC 定义为:其中,

  • 之间的皮尔逊相关系数。
  • 分别是 的标准差。
  • 分别是 的均值。

从定义可以看出,CCC 不仅考虑了 之间的线性相关性(通过 ),还考虑了它们的变异性(通过 )以及位置差异(通过 )。当且仅当 完全相同的时候,CCC 才能达到最大值1;而当两者完全不相关或存在显著的位置和尺度差异时,CCC 将接近0。

特点

  • 全面评价:CCC 同时考虑了相关性、变异性和位置差异,提供了一个更加全面的评估指标。
  • 适用于回归任务:特别适合于那些不仅要求预测准确,而且希望预测结果与实际观测保持一致性的回归问题。
  • 对异常值敏感度较低:相对于简单的相关系数,CCC 对异常值的影响较小,因为它考虑到了数据的整体分布特性。

QuantML-Qlib实现

常见的损失函数如MSE均可以按照标准做法实现,不存在技术难度,主要对于mqloss以及batch类损失函数,在实现时需要对输入数据或者数据输出格式做出相应的改变。

首先对于mqloss类函数,由于需要拟合预测的分布情况,需要设置不同的分位数预测值,预测结果不仅可以为1维,也可以是多维数据,需要在最后的fc
层进行相应的设置。

对于batch类,由于与传统的sample构建方式不同,这里我们重新定义了TSDateSampler,利用index_map轻松将数据转换为以日期构建样本(hints: 单日数据作为样本势必导致总样本数量大幅减少,这里可以使用bootstrap增加样本数量,有兴趣可以自行尝试实现),再结合相应的IC或者CCC损失函数进行优化。

具体实现案例在qlib/contrib/model/pytorch_gru_ts.py,仅需在config文件中设置相应的loss函数(loss: ccc)即可。

(QuantML-Qlib目前已融入了各类SOTA模型以及因子,支持多种底层数据库直接读取,更多功能欢迎加入测试


QuantML-Qlib Model | 还在使用MSE?试试这些更加适合金融预测的损失函数


  文章内容来自于网络,由百合树AI整理,如有侵权,联系删除。如需开始AI写作请返回主页。

上一篇:

下一篇:

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注