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

编程入门 行业动态 更新时间:2024-10-28 02:35:36

<a href=https://www.elefans.com/category/jswz/34/1758064.html style=销量预测建模中常用的损失函数与模型评估指标"/>

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

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

      • 一.损失函数
        • (1) 均方误差(Mean Squared Error - MSE)
        • (2) 平均绝对误差(Mean Absolute Error - MAE)
        • (3) Huber Loss
        • (4) 分位数损失 (Quantile Loss)
      • 二.评估指标
        • (1)均方根误差(Root Mean Square Error-RMSE)
        • (2) 平均绝对百分比误差(Mean Absolute Percentage Error-MAPE)
        • (3) 对称的MAPE (Symmetric Mean Absolute Percentage Error - SMAPE)
        • (4) 预测精度FA (Forecast Accuracy)
        • (5) MAD/Mean
        • (6) 相关系数
        • (7)误差-标准差(Error-Standard Deviation)
        • (8) 决定系数(Coefficient of determination -R Squared)
        • (9) 信息准则
      • 三.总结

本文为销量预测第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=N1​⋅i=1∑N​(y^​i​−yi​)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} ∂f∂MSE​=∂f∂n1​∑(fi​−yi​)2​n2​∑(ft​−yi​)=0∑ft​=∑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=N1​⋅i=1∑N​∣y^​i​−yi​∣

若模型使用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}\\ ∂f∂MAE​=∂f∂n1​∑∣ft​−yi​∣​

∣ 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. \\ ∣fi​−yi​∣=⎩⎨⎧​fi​−yi​ indefinite yi​−fi​​yi​<fi​yi​=fi​yi​>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. ∂f∂∣fi​−yi​∣​=⎩⎨⎧​1 indefinite −1​yi​<fi​yi​=fi​yi​>fi​​∂f∂MAE​=n1​∑{1−1​dt​<ft​dt​>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​(y−f(x))2,δ⋅(∣y−f(x)∣−21​δ),​ for ∣y−f(x)∣≤δ otherwise. ​

其中,y是真实值,f(x)是模型的预测值,δ 是Huber的一个超参数,当真实值和预测值的差值, ∣ y − f ( x ) ∣ ≤ δ ∣ y − f ( x ) ∣ ≤ δ \mid y- f(x) \mid \leq \delta∣y−f(x)∣≤δ ∣y−f(x)∣≤δ∣y−f(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 ​=N1​i=1∑N​Iy^​i​≥yi​​(1−r)∣yi​−y^​i​∣+Iy^​i​<yi​​r∣yi​−y^​i​∣

损失函数是一个分段的函数 ,将 y ^ i ≥ y i ( 高 估 ) \hat{y}_{i} \geq y_{i} (高估) y^​i​≥yi​(高估) 和 y ^ i ≥ y i ( 低 估 ) 和\hat{y}_{i} \geq y_{i}(低估) 和y^​i​≥yi​(低估) 两种情况分开,分别给予不同的系数。当 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=n1​i=1∑n​(y^​i​−yi​)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=1∑n​∣∣∣∣​yi​y^​i​−yi​​∣∣∣∣​

范围[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=1∑n​(∣y^​i​∣+∣yi​∣)/2∣y^​i​−yi​∣​
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​=N1​⋅∑i=1N​yi​N1​⋅∑i=1N​∣y^​i​−yi​∣​

(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=n−1∑i=1n​(xi​−xˉ)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=n−1∑i=1n​(ei​−eˉ)2​ ​其中,e=y−y^​

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

(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^​)=1−∑i=0n​(yi​−yˉ​)2∑i=0n​(yi​−y^​i​)2​=TSSESS​=1−TSSRSS​

决定系数一般用于线性回归模型中,针对树模型和神经网络拟合的非线性模型,无法用决定系数来评价。通常来说,增加一个特征值,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 =1−n−p−1(1−R2)(n−1)​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就显得特别有用,它可以表示一步预测的样本外误差。

三.总结

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

更多推荐

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

本文发布于:2024-02-12 08:42:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1687012.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:销量   建模   函数   模型   损失

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!