如何度量预测用户付费的误差

news2024/11/19 16:48:14

在广告,电商,游戏等行业中,预测用户付费是核心的业务场景,能直接帮助提升收入,利润等核心业务指标,堪称预测中的明星。在预测用户付费的系列文章中,结合作者理论和工程实践经验,深入探讨如何更好更准地去预测用户付费。准确预测的第一步是准确度量预测用户付费的误差。

MAE和RMSE

传统的回归预测通常使用MAE,RMSE等指标去评价预测误差。

MAE全称Mean Absolute Error,指平均绝对值误差,是对预测值和真实值的绝对差值计算平均值,其计算公式是:

计算绝对值的好处在于能避免正负误差抵消的情况。例如,有三个误差值,不取绝对值的话,计算平均误差为0,与实际情况不符。而取绝对值后,计算平均误差为0.667。

RMSE全称Root Mean Square Error,指均方根误差,是计算所有预测值和真实值的样本标准差,即对预测值和真实值的差值取平方再计算平均值再开根号,其计算公式是:

由于在误差计算中引入了平方计算,和MAE比较,RMSE会放大较大的误差。例如,有两组误差值,

计算可得,

第一组MAE=10.0,RMSE=10.0,比例1:1

第二组MAE=340.0,RMSE=577.408,比例1:1.698

可见较大的误差值对RMSE影响更显著,换句话说,使用RMSE指标度量误差,会更多地去惩罚较大的误差,从而避免出现特别明显的预测误差。因为RMSE是光滑可微函数,所以很多回归模型都使用RMSE作为默认损失函数。

MAPE和WAPE

尽管MAE和RMSE是机器学习回归模型的默认度量指标,但不太适合付费预测的业务场景。例如,对于同样的真实值,

有以下两组不同的预测值,

计算得到以下两组不同的误差值,

第一组MAE=10.0,RMSE=10.0

第二组MAE=10.0,RMSE=17.32

只看MAE,两组误差一样大。只看RMSE第二组误差更大。但对于付费预测业务来说,第一组,

  1. 虽然更准确地预测了付费值100的用户。
  2. 但将两个付费值10元的用户都预测为0,会损失两个付费用户。

第二组,

  1. 虽然预测付费值100的误差更大,但预测为70也能给予相当的信号。
  2. 同时完全准确预测了两个付费值10的用户,在付费用户数上3:1领先于第一组。

在对业务的帮助上,第二组明显更好,理应认为第二组误差更小。

显然,MAE和RMSE不适合用来度量用户付费预测的误差。对于这样的情况,对误差引入百分比计算,将误差值计算转化为相对误差计算。把误差定义为预测误差占真实值的百分比,则真实付费值10,预测误差值1,和真实付费值100,预测误差值10,尽管数值上有10倍的差异,但在百分比上都是误差10%。上文的例子,按百分比误差计算得到以下两组新的误差值,

通常使用MAPE计算百分比误差。MAPE全称Mean Absolute Percentage Error,指平均绝对百分比误差,是预测值和真实值的绝对差值,除以真实值,得到绝对百分比误差,再求其平均值。其计算公式是:

按MAPE计算,

第一组MAPE=70%

第二组MAPE=10%

可见第二组比第一组误差更小。所以MAPE更适合付费金额预测这样的场景,即倾向于每一个真实值都能预测得比较准确,即使大额付费用户的误差值大一些,也不影响对整体预测准确程度的评估。但MAPE指标也存在一个问题,如果真实值为0,则出现除数为0的情况,无法计算,不能度量预测值>0并且真实值=0这种情况的误差。

对于MAPE做一个改进,用绝对误差总和去除以真实值总和,可以避免除数为0的问题。这样的指标叫WAPE,全称Weighted Absolute Percentage Error,指加权绝对百分比误差,是预测值和真实值的绝对差值之和,再除以真实值之和。其计算公式是:

按WAPE计算,

第一组WAPE=(10+10+10)/(10+10+100)=25%

第二组WAPE=(0+0+30)/(10+10+100)=25%

细心的读者已经发现,这两组的误差一模一样。因为WAPE统计的是总体误差,而无法区分具体误差的分布。

考虑到WAPE不能完全体现具体误差分布,在实际工程实践中,一般会综合评价MAPE和WAPE两个指标,先用WAPE看总体误差,再用MAPE看具体误差。如果业务对不同付费区间的误差敏感程度不一样,还要看相应付费区间的MAPE和WAPE,最简单的区间划分是十分位,即看十分位划分的MAPE和WAPE。

如果需要WAPE能对不同情况的误差进行区别,则需要对不同情况的误差进行加权处理,从而得到加权后的指标,叫WMAPE,全称Weighted Mean Absolute Percentage Error,指加权平均绝对百分比误差,是预测值和真实值的绝对差值乘以加权系数之和,再除以真实值乘以加权系数之和。其计算公式是:

假设我们希望增加付费更小用户的权重,设真实值=10,加权系数=1.0,真实值=100,加权系数=0.8,则得到WMAPE的值为,

第一组WMAPE=(10*1.0+10*1.0+10*0.8)/(10*1.0+10*1.0+100*0.8)=28%

第二组WMAPE=(0*1.0+0*1.0+30*0.8)/(10*1.0+10*1.0+100*0.8)=24%

计算结果是第二组误差更小,能说明第二组对权重更高的用户付费预测更准确。

使用MAPE和WAPE代替MAE和RMSE度量预测用户付费误差,并指导模型进行优化之后,会得到如下效果:

  1. 显著降低总体预测误差。
  2. 真实值较小用户的预测误差降低最为明显。
  3. 显著减少过预测(预测值大于真实值)的情况。

同时也会存在如下问题:

  1. 真实值较大用户的预测误差可能不降反增。
  2. 整体预测总值偏低,大部分预测值都是欠预测(预测值小于真实值)。
  3. 欠预测会导致给模型下游系统的信号值偏低,影响业务效果

单位信号量误差

为什么使用MAPE和WAPE会导致欠预测?因为MAPE和WAPE的计算中,真实值是分母,相当于乘以,越大,乘数越小,越小,乘数越大。相对于平均值回归曲线,MAPE在平均值回归曲线下方的点,更小,乘数更大,有更大的权重,会把MAPE整体往平均值回归曲线的下方去拉,会有更多的点在平均值回归曲线下方,使得更多预测值低于平均值,从而导致欠预测。

为了解决欠预测的问题,引入信号量的概念,信号量等于预测平均值除以真实平均值。预测完全准确的情况下,信号量等于1。

semaphore = \frac{\bar \hat{y_i}}{\bar y_i}

误差和信号量在实际分布上有局部或者全局最优解,在最优解上误差最小,在最优解附近,信号量变大,误差也会变大,信号量变小,误差也会变大。但如果将信号量按区间分组总体来看,信号量偏低的分组,误差会比信号量偏高的分组误差要低,这跟总体欠预测的情况是一致的。

对于实际业务场景,如果只优化误差,导致信号量变小,给下游系统的信号值不够,也会影响下游系统的业务,得不偿失,所以需要对误差和信号量综合度量。对于给定的信号量,误差越小越好。对于给定的误差,信号量越大越好。

引入新的指标,单位信号量误差,指误差和信号量的比值,是WAPE和MAPE的加权之和,再除以信号量。可以根据实际情况,对WAPE和MAPE取不同的权重,默认都取0.5。其计算公式是:

使用单位信号量误差,能综合度量总体预测误差,付费用户预测误差和信号量三种情况,在实际业务中取得了最好的效果。

其他度量指标

线性系数R-Square

在预测用户付费系统的下游系统也是机器学习系统的场景里,预测值和真实值的线性相关性非常重要。和真实值存在显著线性关系的预测值,能让下游的机器学习系统学得更好,取得更好的业务效果。

一般用R-Square指标计算线性相关性,其计算公式是:

多分类指标

如果业务允许预测金额存在一定误差,更关注是否能将用户付费预测到所在付费区间,比如,预测用户是高价值用户,一般价值用户,低价值用户。这时,不妨将预测用户付费金额的回归问题,转化为预测用户付费金额所在区间的多分类问题,使用多分类评价指标来度量预测用户付费的误差。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ make_heap等堆函数的使用

一、介绍 C的STL提供了make_heap、push_heap、pop_heap、sort_heap等算法,它们用来将一个随机存储的数组或者容器等转换为一个heap。这里所说的转换为heap意思是将原来的存储顺序改变,将转换成的堆层序遍历后所得到的元素顺序作为数组或者容器新的元素顺…

用HarmonyOS ArkUI调用三方库PhotoView实现图片的联播、缩放

本文演示如果用HarmonyOS的ArkUI来调用已经上架到三方库中心的社区库。体验HarmonyOS 3最新的API 9,欢迎大家一起参与构建这个万物互联的时代! 活动主页 HarmonyOS线上Codelabs挑战赛已经开启,该系列挑战赛将围绕HarmonyOS的基础组件和容器…

ABAQUS计算不收敛问题,排查方法和解决方案都在这儿了

在进行有限元仿真计算时,常常会遇到计算不收敛的问题,而且导致求解不收敛的原因也是多种多样的,处理起来也是相当的麻烦。特别是在利用隐式算法的求解非线性问题时,对静态平衡方程进行迭代求解时极易出现计算的不收敛问题&#xf…

JVM垃圾回收——垃圾收集器(一)

目录 一、垃圾收集器 二、Serial/Serial Old 三、ParNew 收集器 四、Parallel Scavenge收集器 五、Parallel Old收集器 一、垃圾收集器 现阶段可以作为商用的垃圾收集器大概以上几种,ZGC还正在实验阶段,如果两个收集器之间有连线那么表示他们可搭配…

【Linux初阶】Linux环境下的 git 使用 | git的add/commit/push/log/pull/mv/rm/status

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【Linux初阶】 ✒️✒️本篇内容:详细阐述git是什么,git的发展脉络,还有Linux环境下git工具的具体使用方法 &#x1f6a…

关于如何导入OTWB 7型项目

一、简介: 公司最新的 OTWB 7.0 产品,均使用最新版开发开发框架 ThornForest,简称 TF。相较于 Thorn 框架,新版的 TF 框架,在页面编译的方式有比较大的变化。其中最主要的变化是,TF 的编译需要根据不同部署…

深入理解JavaScript——执行上下文与调用栈

前言 在说一个概念前,我们需要确定它的前提,此文以 ECMAScript5 为基础撰写 一句话解释 执行上下文就是一段代码执行时所带的所有信息 执行上下文是什么 《重学前端》的作者 winter 曾经对什么是执行上下文做过这样的解释: JavaScript 标…

基于基于全局差错能量函数的双目图像立体匹配算法matlab仿真,并提取图像的深度信息

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 全局的能量函数公式如下: E(f)Edata(f)Esmooth(f) 其中,Edata 表示能量函数的数据项,意为该像素只考虑自身的视差值的倾向,不考虑 邻域内其他像素的影响;N 表示匹配聚合时的支持窗口;p 表…

应用层-HTTP协议

HTTP概述 HTTP(HyperTextTransferProtocol)是Web应用的应用层协议,定义浏览器如何向Web服务器发送请求以及Web服务器如何向浏览器进行响应。目前主要使用的HTTP/1.0 和HTTP/1.1,尤其以HTTP/1.1 为主流。 HTTP连接 浏览器在向服务器发送请求之前&#…

全日制和非全日制之争,看完六年前的这个文件心里就有数了

在每年的报考咨询中,都能接触到不少关于非全日制硕士的质疑,最大的争议点无非在于社会含金量的问题。其实很多年以前是没有非全日制这一说法的,早些年很多学员也是在职周末读的双证MBA/MPA/MEM这些专业,但证书一律是全日制标识&am…

Oracle Primavera Unifier进度管理器(Schedule Manager)

目录 功能介绍 功能包括 功能介绍 在进度管理器中,Primavera Unifier 用户可以在项目/外壳和项目群级别创建和管理进度表。他们可以创建根据项目或外壳的需求自定义的项目/外壳计划表。当他们为项目/外壳创建第一个时间表表时,Primavera Unifier 会自…

【软考】系统集成项目管理工程师(九)项目成本管理

这里写目录标题 一、项目成本管理概述二、项目成本管理子过程1. 规划成本2. 成本估算3. 制定预算4. 控制成本一、项目成本管理概述 成本 即项目的全过程中所耗用的各种成本,它们的总和为项目成本。成本管理 是在预算范围内确保项目团队完成一个项目所需要开展的管理过程,项目…

前端网页项目-学成在线案例

典型的企业级网站目的是为了整体感知企业级网站布局流程,复习以前知识 准备素材和工具: 学成在线PSD源文件开发工具PS(切图)/cutterman插件vscode(代码)chrome(测试) 案例准备工作&…

[附源码]java毕业设计健身健康规划系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

发布 .NET 7 MAUI / MAUI Blazor 应用到 Windows 应用商店

.NET MAUI 目前仅允许发布 MSIX 包。 原文地址 https://www.cnblogs.com/densen2014/p/16885318.html 创建签名证书发布到本地传送门 https://www.cnblogs.com/densen2014/p/16567384.html 使用 Visual Studio 2022 发布到 Windows 应用商店 由于是发布到 Windows 应用商店,本…

代码中可能会使用

代码中可能会使用 日志 结合兼具举报系统日志 https://www.cnblogs.com/lingduqianli/p/7589173.html 拦截器 https://blog.csdn.net/neymar_jr/article/details/79115839 拦截器应用场景 拦截器本质上是面向切面编程(AOP),符合横切关注点…

MYSQL窗口函数(Rows Range)——滑动窗口函数用法

语法介绍 窗口函数语法&#xff1a; <窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名> rows/range子句<用于定义窗口大小> ) <窗口函数>可以放以下两种函数&#xff1a; 1&#xff09; 专用窗口函数&#xff0c;包括…

图文详解Linux基础经典教程(07)——CentOS安装Tomcat

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 概述 之前&#xff0c;我们在CentOS中安装了JDK&#xff1b;接下来&#xff0c;我们在CentOS中安装Tomcat。 安装步骤 在此&#xff0c;详细介绍Tomcat的安装步骤。 第一…

上海亚商投顾:A股缩量调整 AIGC、Web3.0概念抢眼

上海亚商投顾前言&#xff1a;无惧大盘大跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪三大指数今日震荡调整&#xff0c;深成指、创业板指午后均跌超1%&#xff0c;黄白二线有所分化&#xff0c;科创50指…

Django Celery异步任务队列

“ https://github.com/celery/celery” celery的GitHub源码文件 Celery是一个异步任务队列&#xff0c;需要python的环境&#xff0c;一般可用于python的web开发框架“食”用&#xff0c;例如Django。 场景 例如在自己开发网站时&#xff0c;写发送短信验证码的部分&#xff0…