machine-learning - MAPE 损失函数相对于 MAE 和 RMSE 的优势
问题描述
我正在阅读这篇文章:Rolling Window Regression: a Simple Approach for Time Series Next value Predictions,他解释了五个损失函数之间的区别:
第一个问题是问我们如何衡量成功?我们通过损失函数来做到这一点,我们试图最小化损失函数。有几种损失函数,它们各有优劣。
我设法理解了前两个损失函数:
- MAE(平均绝对误差)——这里所有的误差,无论大小,都被平等对待
- 均方根误差 (RMSE) — 由于平方项,这会惩罚较大的误差。例如,误差为 [0.5, 0.5] 和 [0.1, 0.9],两者的 MSE 将为 0.5,而 RMSE 为 0.5 和。0.45。
但我不明白第三个:
- MAPE(平均绝对百分比误差)——由于 #1 和 #2 取决于目标变量的值范围,因此无法跨数据集进行比较。相反,MAPE 是一个百分比,因此是相对的。这就像分类问题中的准确率,每个人都知道 99% 的准确率是相当不错的。
- 为什么根据目标变量的取值范围,不能跨数据集进行比较?
- 为什么MAPE比他们好?
我不明白他的解释。
解决方案
问题是 - MAPE 使用百分比。
在 MAE 和 RMSE 中,我得到数据集的平均误差或平均误差的根。因此,在一个数据集中,比如啤酒价格,数字会很小,而在另一个数据集中,比如房价,数字会很大。因此,我无法将 MAE/RMSE 在一个数据集上的成功与它们在另一个数据集上的成功进行比较。
与它们相比,MAPE 以百分比表示误差,因此它与数据本身的数字大小无关,因此我可以比较它在啤酒价格和房价数据集上的成功。
推荐阅读
- stacked-chart - 试图创建一个堆叠条
- java - 递归基础
- wpf - ListCollectionView EditItem/CommitEdit 导致错误的当前项目(选择)行为
- javascript - 使用 Enzyme 测试 `React.createRef` api
- android - OnBackPressed 重新创建活动而不是完成它
- python - 如何通过使用re python忽略特定字符从字符串中搜索特定单词
- facebook-javascript-sdk - 如何使用带有 javascript sdk 的共享对话框在 fb 时间轴上发布视频?
- reactjs - 将反应项目添加到反应项目?或一页?
- angular - 海量组件订阅还是单次订阅+导出数据?
- python - 通过对像素求和来重新缩放矩阵