销量预测建模中常用的损失函数与模型评估指标

本文为销量预测第9篇:销量预测建模中常用的损失函数与模型评估指标
1篇:PySpark与DataFrame简介
2篇:PySpark时间序列数据统计描述,分布特性与内部特性
3篇:缺失值填充与异常值处理
4篇:时间序列特征工程
5篇:特征选择
6篇:简单预测模型
7篇:线性回归与广义线性模型
8篇:机器学习调参方法

本文详细的梳理了销量预测领域常见的损失函数和模型评估指标。

一.损失函数

机器学习任务依赖于对目标函数最大或最小化,把最小化的函数称为损失函数( Loss Function ),用于衡量机器学习模型的预测能力,使用基于梯度下降法等的优化手段求解最小化损失函数。

但同一种损失函数并非适用于所有的模型,即使针对同一个预测任务。损失函数的选取依赖于参数的数量、是否有异常值、机器学习算法、梯度下降的效率等方面。所以下面介绍在销量预测领域常用的损失函数。

(1) 均方误差(Mean Squared Error - MSE)

均方误差是回归任务中最常用的损失函数,也叫L2损失,它是预测值与目标值之间差值的平方和,其公式如下所示:

M S E = 1 N ⋅ ∑ i = 1 N ( y ^ i − y i ) 2 \mathrm{MSE}=\frac{1}{N} \cdot \sum_{i=1}^{N}\left(\hat{y}_{i}-y_{i}\right)^{2} MSE=N1i=1N(y^iyi)2

如果预测模型使用MSE作为损失函数,通过使其导数为零,最小化损失。

∂ M S E ∂ f = ∂ 1 n ∑ ( f i − y i ) 2 ∂ f 2 n ∑ ( f t − y i ) = 0 ∑ f t = ∑ y i \begin{array}{c} \frac{\partial M S E}{\partial f}=\frac{\partial \frac{1}{n} \sum\left(f_{i}-{y}_{i}\right)^{2}}{\partial f} \\ \frac{2}{n} \sum\left(f_{t}-{y}_{i}\right)=0 \\ \sum f_{t}=\sum {y}_{i} \end{array} fMSE=fn1(fiyi)2n2(ftyi)=0ft=yi

模型会趋于让整体预测值与实际值相等,整体样本趋向于平均值。
在这里插入图片描述

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

平均绝对误差也叫L1损失,是目标值与预测值之差绝对值的和,表示预测值的平均误差幅度,不考虑误差的方向。

M A E = 1 N ⋅ ∑ i = 1 N ∣ y ^ i − y i ∣ MAE=\frac{1}{N} \cdot \sum_{i=1}^{N}\left|\hat{y}_{i}-y_{i}\right| MAE=N1i=1Ny^iyi

若模型使用MAE作为损失函数,通过令导数为零,使其最小化:

∂ M A E ∂ f = ∂ 1 n ∑ ∣ f t − y i ∣ ∂ f \frac{\partial M A E}{\partial f}=\frac{\partial \frac{1}{n} \sum\left|f_{t}-{y}_{i}\right|}{\partial f}\\ fMAE=fn1ftyi

∣ f i − y i ∣ = { f i − y i y i < f i  indefinite  y i = f i y i − f i y i > f i \left|f_{i}-{y}_{i}\right|=\left\{\begin{array}{ll} f_{i}-{y}_{i} & {y}_{i}<f_{i} \\ \text { indefinite } & {y}_{i}=f_{i} \\ {y}_{i}-f_{i} & {y}_{i}>f_{i} \end{array}\right. \\ fiyi=fiyi indefinite yifiyi<fiyi=fiyi>fi
∂ ∣ f i − y i ∣ ∂ f = { 1 y i < f i  indefinite  y i = f i − 1 y i > f i ∂ M A E ∂ f = 1 n ∑ { 1 d t < f t − 1 d t > f t \frac{\partial\left|f_{i}-{y}_{i}\right|}{\partial f}=\left\{\begin{array}{ll} 1 & {y}_{i}<f_{i} \\ \text { indefinite } & {y}_{i}=f_{i} \\ -1 & {y}_{i}>f_{i} \end{array}\right.\\ \frac{\partial M A E}{\partial f}=\frac{1}{n} \sum\left\{\begin{array}{ll} 1 & d_{t}<f_{t} \\ -1 & d_{t}>f_{t} \end{array}\right. ffiyi=1 indefinite 1yi<fiyi=fiyi>fifMAE=n1{11dt<ftdt>ft

也就是,模型要让预测值高于实际值的次数等于预测值低于实际值的次数,这也正是中位数的定义。
在这里插入图片描述

以上是两种是最常见的回归模型损失函数,简单总结MAE与MSE二者的不同点:

  1. MAE对离群点有更好的鲁棒性;MSE对离群点敏感,即使存在少数离群点,也会让指标变得很差;

  2. MSE假设在模型输出与真实值的误差服从高斯分布,MAE假设模型预测与真实值之间的误差服从拉普拉斯分布(Laplace distribution);

  3. 使用MSE相当于对数据分布的均值进行拟合,它对大误差的样本有更大的惩罚;使用MAE作为损失函数相当于对数据分布的中位数进行拟合;

  4. MSE在极值点有着良好的特性,它的梯度随着损失函数的减小而减小,但MAE的梯度在极值点处不可导,不利于模型参数的学习。

(3) Huber Loss

Huber Loss也是一种鲁棒的回归损失函数。

L δ ( y , f ( x ) ) = { 1 2 ( y − f ( x ) ) 2 ,  for  ∣ y − f ( x ) ∣ ≤ δ δ ⋅ ( ∣ y − f ( x ) ∣ − 1 2 δ ) ,  otherwise.  L_{\delta}(y, f(x))=\left\{\begin{array}{ll} \frac{1}{2}(y-f(x))^{2}, & \text { for }|y-f(x)| \leq \delta \\ \delta \cdot\left(|y-f(x)|-\frac{1}{2} \delta\right), & \text { otherwise. } \end{array}\right. Lδ(y,f(x))={21(yf(x))2,δ(yf(x)21δ), for yf(x)δ otherwise. 

其中,y是真实值,f(x)是模型的预测值,δ 是Huber的一个超参数,当真实值和预测值的差值, ∣ y − f ( x ) ∣ ≤ δ ∣ y − f ( x ) ∣ ≤ δ \mid y- f(x) \mid \leq \delta∣y−f(x)∣≤δ yf(x)δyf(x)δ时,Huber就是MSE;当差值在 ( − ∞ , δ ) (-\infty,\delta ) (,δ)或者 ( δ , + ∞ ) (\delta,+\infty) (δ,+)时,Huber就是MAE。当误差较大时,使用MAE对离群点不那么敏感;在误差较小时使用MSE,能够快速的收敛。

针对梯度下降中因为存在异常值,用MAE作为损失函数因其导数不连续,求解效率低,故使用Huber这种对异常值更加鲁棒且处处可导的损失作为替代非常有用,但是由于该函数存在一个额外的超参数,也因此影响了该损失函数的推广使用。

在这里插入图片描述

(4) 分位数损失 (Quantile Loss)

分位数损失是针对分位数回归的损失函数,分位数回归 (Quantile regression)是一类在实际应用中非常有用的回归算法,通常回归算法是拟合目标值的均值(期望),而分位数回归可以通过给定不同的分位点,拟合目标值的不同分位数。分位数损失函数也用于对不确定性感兴趣的任务中,如需要预测的是范围而非点估计的区间预测。

J quant  = 1 N ∑ i = 1 N I y ^ i ≥ y i ( 1 − r ) ∣ y i − y ^ i ∣ + I y ^ i < y i r ∣ y i − y ^ i ∣ J_{\text {quant }}=\frac{1}{N} \sum_{i=1}^{N} \mathbb{I}_{\hat{y}_{i} \geq y_{i}}(1-r)\left|y_{i}-\hat{y}_{i}\right|+\mathbb{I}_{\hat{y}_{i}<y_{i}} r\left|y_{i}-\hat{y}_{i}\right| Jquant =N1i=1NIy^iyi(1r)yiy^i+Iy^i<yiryiy^i
在这里插入图片描述

损失函数是一个分段的函数 ,将 y ^ i ≥ y i ( 高 估 ) \hat{y}_{i} \geq y_{i} (高估) y^iyi() 和 y ^ i ≥ y i ( 低 估 ) 和\hat{y}_{i} \geq y_{i}(低估) y^iyi() 两种情况分开,分别给予不同的系数。当 r > 0.5 r>0.5 r>0.5时,低估的损失要比高估的损失更大,反过来当 r < 0.5 r<0.5 r<0.5时,高估的损失比低估的损失大;用分位数系数控制高估和低估的损失,进而实现分位数回归。特别地,当 r = 0.5 r=0.5 r=0.5时,分位数损失退化为 MAE 损失。

当然,还有其他的损失函数,比如Log-Cosh Loss等,通过以上四种常用损失函数举例,只是说明,在机器学习建模过程中,遵守使用该模型所对应的假设前提,依据数据分布等探索尝试更合理的损失函数,比如针对分位数回归就不能使用MSE,在不少kaggle时间序列预测相关比赛中,已得到证明,尤其是2020年时序领域最为出名M-Competitions(M-5)多位优胜者使用的Tweedie损失函数执行树模型训练与预测。

二.评估指标

评估指标用于机器学习算法模型效果,在有些算法任务中损失函数可以直接作为评价指标,如在回归问题中,均方误差(MSE)既可以来作为损失函数训练模型,又可以在模型训练完成后对其效果进行评估。

所以损失函数和评估指标的区别就是:

1)损失函数用于模型构建中指导模型的训练,评估指标用于模型构建后,用于评价模型性能。

2)损失函数通常是针对单个训练样本而言,给定模型中一个样本输出 和一个真实 损失函数输出一个实值损失 ,评估指标主要指为了评估本次模型预测的效果,采用的全部或部分样本进行的整体度量。

3)一般来说,因为损失函数参与模型训练中的计算环节,考虑到计算性能和稳定性,损失函数会比评估指标在数学性质上要求更加严格,常见要求是可导。评估指标则没有此要求,甚至是灵活的自定义。

损失函数和评估指标也体现在xgboost等集成机器学习架构中objective与eval_metric参数的区别。


下面介绍其他常见评估指标。

(1)均方根误差(Root Mean Square Error-RMSE)

均方根误差是MSE的平方根,使得RMSE和预测值在同样的量级上,比MSE更直观。

R M S E = 1 n ∑ i = 1 n ( y ^ i − y i ) 2 R M S E=\sqrt{\frac{1}{n} \sum_{i=1}^{n}\left(\hat{y}_{i}-y_{i}\right)^{2}} RMSE=n1i=1n(y^iyi)2

(2) 平均绝对百分比误差(Mean Absolute Percentage Error-MAPE)

M A P E = 100 % n ∑ i = 1 n ∣ y ^ i − y i y i ∣ M A P E=\frac{100 \%}{n} \sum_{i=1}^{n}\left|\frac{\hat{y}_{i}-y_{i}}{y_{i}}\right| MAPE=n100%i=1nyiy^iyi

范围[0,+∞),MAPE 为0%表示完美模型,MAPE 大于 100 %则表示劣质模型。从公式上看,MAPE与MAE相比,多了分母,相比MAE消除了不同标度的影响,可用于比较不同预测对象的预测准确性,比如,对于两种商品的销量,商品A的MAPE为0.018,商品B的MAPE为0.028,则能够说明商品A预测的更加准确。当分母为0时,MAPE为+∞,因此MAPE的缺点之一是不能用于评估真实值为0的预测。MAPE是评估预测的直观基础性指标,下面要介绍的几种皆为在其基础上加工或衍生的指标。

(3) 对称的MAPE (Symmetric Mean Absolute Percentage Error - SMAPE)

S M A P E = 100 % n ∑ i = 1 n ∣ y ^ i − y i ∣ ( ∣ y ^ i ∣ + ∣ y i ∣ ) / 2 S M A P E=\frac{100 \%}{n} \sum_{i=1}^{n} \frac{\left|\hat{y}_{i}-y_{i}\right|}{\left(\left|\hat{y}_{i}\right|+\left|y_{i}\right|\right) / 2} SMAPE=n100%i=1n(y^i+yi)/2y^iyi
SMAPE是针对MAPE的修正,如果真实值本身很小或者接近0值时,预测偏差一点,MAPE就会急剧膨胀,因此SMAPE专门为修正了MAPE因真实值小而计算结果太大导致的不对称问题;SMAPE具备确切的下限(0%)和上限(200%),真实值和预测值同时等于0时,依然存在分母除零的问题。此时可以过滤掉存在0的预测后继续使用MAPE,也可以选择使用RMSE等。

针对以上提到的存在分母0的情况,可以过滤掉存在0的预测后继续使用MAPE,也可以选择使用RMSE等。

(4) 预测精度FA (Forecast Accuracy)

作为对MAPE更加直观性的补充,又有预测精度这一指标如下:

F A = 100 % − M A P E FA = {100 \%} - MAPE FA=100%MAPE

由于MAPE可能超过100,所以预测精度 FA可能结果为负,因此违背了预测精度用0-100来表达预测效果的直观理解。

(5) MAD/Mean

以上的MAPE和FA面临着实际值为0时候,分母除零的无意义风险,SMAPE面临着预测值和实际值同时为0的风险,虽然可以回到使用MAE的阶段,但是存在MAE无法对不同的序列预测进行比较的问题,此时针对实际值中存在大量0值的情况,就需要其他的评估指标,比如下面要介绍的,MAD/Mean,因为MAE在有的书籍中也被称之为MAD(Mean Absolute Difference),该指标不仅适用于不同的序列比较,还适用于真实值存在大量为0的销量预测中,常见为间断序列。
M A D M e a n = 1 N ⋅ ∑ i = 1 N ∣ y ^ i − y i ∣ 1 N ⋅ ∑ i = 1 N y i \frac{MAD}{Mean}=\frac{\frac{1}{N} \cdot \sum_{i=1}^{N}\left|\hat{y}_{i}-y_{i}\right|}{\frac{1}{N}\cdot \sum_{i=1}^{N}y_{i}} MeanMAD=N1i=1NyiN1i=1Ny^iyi

(6) 相关系数

评估实际值和预测值的相关性强弱,其中X为实际值,Y为预测值。

ρ ( X , Y ) = ρ x y = Cov ⁡ ( X , Y ) Var ⁡ ( X ) Var ⁡ ( Y ) = E [ ( X − μ x ) ( Y − μ y ) ] E ( X − μ x ) 2 E ( Y − μ y ) 2 \rho(X, Y)=\rho_{x y}=\frac{\operatorname{Cov}(X, Y)}{\sqrt{\operatorname{Var}(X) \operatorname{Var}(Y)}}=\frac{E\left[\left(X-\mu_{x}\right)\left(Y-\mu_{y}\right)\right]}{\sqrt{E\left(X-\mu_{x}\right)^{2} E\left(Y-\mu_{y}\right)^{2}}} ρ(X,Y)=ρxy=Var(X)Var(Y) Cov(X,Y)=E(Xμx)2E(Yμy)2 E[(Xμx)(Yμy)]

使用相关系数评估不用担心分母是否存在0的问题,相关越大说明预测效果越好。但是计算相关系数,需要待评估的数据较多,如果实际值与预测值的数量非常少,此时计算的相关系数或许不符合统计中对样本量的要求,同时,相关系数只是辅助度量预测值和真实值关联性强弱,模型预测效果好,真实值与预测值相关度一般来说较高,但是二者相关度高并不能反过来说明预测效果好。

(7)误差-标准差(Error-Standard Deviation)

标准差是可以用来度量波动性大小的,公式如下:

S = ∑ i = 1 n ( x i − x ˉ ) 2 n − 1 S=\sqrt{\frac{\sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2}}{n-1}} S=n1i=1n(xixˉ)2

受上文对MAPE的各种修正或者加工的启发,个人认为同样可以基于误差再次计算标准差,以此来评估预测的稳定性,其公式改为:

S = ∑ i = 1 n ( e i − e ˉ ) 2 n − 1 其 中 , e = y − y ^ S=\sqrt{\frac{\sum_{i=1}^{n}\left(e_{i}-\bar{e}\right)^{2}}{n-1}}\\ 其中,e=y-\hat{y} S=n1i=1n(eieˉ)2 ,e=yy^

其中针对上线的预测任务保证 预测准确性是一方面,同时也要保证预测的稳定性,所以该指标可以帮助我们度量预测效果是否具有稳定性。

(8) 决定系数(Coefficient of determination -R Squared)

也叫拟合优度,衡量线性回归法的指标, 用于度量因变量的变异中可由自变量解释部分所占的比例,以此来判断模型的解释力。反映自变量对因变量变动的解释程度。其取值在0-1之间越接近于1,说明模型拟合得越好,如R2=0.7,则表明因变量Y的70%变化由自变量X来解释。

R 2 ( y , y ^ ) = 1 − ∑ i = 0 n ( y i − y ^ i ) 2 ∑ i = 0 n ( y i − y ˉ ) 2 = E S S T S S = 1 − R S S T S S R^{2}(y, \hat{y})=1-\frac{\sum_{i=0}^{n}\left(y_{i}-\hat{y}_{i}\right)^{2}}{\sum_{i=0}^{n}\left(y_{i}-\bar{y}\right)^{2}}=\frac{E S S}{T S S}=1-\frac{R S S}{T S S} R2(y,y^)=1i=0n(yiyˉ)2i=0n(yiy^i)2=TSSESS=1TSSRSS

决定系数一般用于线性回归模型中,针对树模型和神经网络拟合的非线性模型,无法用决定系数来评价。通常来说,增加一个特征值,R-Squared 可能变大也可能保持不变,因此在多元回归模型中,更应该使用校正决定系数(Adjusted R-Squared)引入样本数量和特征数量,对添加的非重要变量给予惩罚。

R 2 −  adjusted  = 1 − ( 1 − R 2 ) ( n − 1 ) n − p − 1 n : 样 本 数 量 p : 自 变 量 ( 特 征 ) 数 量 R^{2}-\text { adjusted }=1-\frac{\left(1-R^{2}\right)(n-1)}{n-p-1}\\ n:样本数量\\ p:自变量(特征)数量 R2 adjusted =1np1(1R2)(n1)n:p:()

(9) 信息准则

信息准则是统计,建模中常用的模型比较工具,依据信息准则选择的模型,能够考虑到参数数量和误差大小,同时平衡模型拟合优度与模型复杂度,加入惩罚项来避免过拟合问题,其中主要的信息准则有AIC和BIC等。 依据信息准则在多个嵌套模型上。
A I C = 2 l n ( f ( y ∣ θ k ) ) − 2 K B I C = 2 l n ( f ( y ∣ θ k ) ) − K l o g ( n ) AIC=2ln(f(y|θk))−2K \\ BIC=2ln(f(y|θk))−Klog(n)\\ AIC=2ln(f(yθk))2KBIC=2ln(f(yθk))Klog(n)

对于短期时间序列,没有足够的观测数据在执行训练后仍保留部分观测值用于测试,也无法进行时间序列的交叉验证时。AIC就显得特别有用,它可以表示一步预测的样本外误差。

三.总结

通过对以上列举的不同评估指标的阐述可知,模型评估指标也不是一成不变的,而是基于数据,可解释性,和模型的不同的角度进行选择,当然,也可以使用多种评估方式在同一个预测对象上,对所使用的算法模型效果做到多维监控,达到全面了解预测效果的目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值