当前位置: 首页 > news >正文

LTV预估 | 多视角对比学习框架CMLTV

😄 cmltv的loss好多哟,花样好多哟~

文章目录

  • 1 精简总结
  • 2 背景&挑战
  • 3 方法
  • 4 实验

✅【arxiv-2023 华为 CMLTV】《Contrastive Multi-view Framework for Customer Lifetime Value Prediction》
论文链接: https://arxiv.org/pdf/2306.14400

1 精简总结

基于多视角的对比学习框架:该框架通过联合优化具有不同特征和优势的多种回归器来编码和融合全面的知识,通过互补的知识来提高模型的鲁棒性,并通过对比学习捕捉样本的相关性,以减轻对数据丰富性的依赖。

说白了,其实就是多任务loss+对比学习loss。包含了:分布基回归器: 使用概率模型(如对数正态和伽马分布)来近似真实的LTV分布。对数基回归器: 预测LTV的对数值,适用于神经网络处理。分类基回归器: 将回归任务转换为分类问题,然后从类别概率中重建实值分数。通过对比学习机制显式编码样本之间的相关性,同时构建二分类购买预测器和LTV回归器之间的有机连接,分类对比损失: 比较正样本和负样本的平均购买概率。回归对比损失: 规范化回归结果与预测购买概率的正相关性。

2 背景&挑战

  • 稀疏性:付费数据不平衡,大多数用户不付费。
  • 目前的pltv方法采用单视角建模存在准确度低和知识提取存在偏差的问题。

3 方法

在这里插入图片描述

首先,过一个basic feature representation model(可以是MLP/DeepFM/DCN等)来得到基础的交互特征h,再输入给后面的各个学习模块。

【付费概率预测模型】
特征h过mlp+sigmoid,得到付费概率,采用二分类交叉熵loss。
在这里插入图片描述


【分布基回归器】
使用概率模型(推荐对数正态和伽马分布)来近似真实的LTV分布,论文采用gamma分布,对应参数θ包括:形状参数alpha、速率参数lam(尺度参数beta的倒数)通过mlp+relu学习,每个样本会预测一个θ。概率密度函数则由θ决定。

  • 注:因gamma分布中,alpha、lam均要求>0,所以以下公式中,log(1+exp())为了确保输出的非负性、提高数值稳定性、保持函数的平滑性以及利用其凸性特征。这些特性使得它在神经网络的设计和训练中非常有用。
  • loss为概率密度函数的负对数似然,也就是负的最大似然估计。
  • pltv则等于gamma分布的期望,即pltv=alpha/lam

在这里插入图片描述


【对数基回归器】
该回归器就很普通了。LTV原始值有可能会很大,但是取对数后差异小,更适合神经网络来处理。该网络由mlp+relu构成。损失函数为mse_loss。

  • pltv=该回归器的输出
    在这里插入图片描述

【分类基回归器】
将回归任务转换为分类问题,然后从类别概率中重建的值作为pltv。由于 LTV 分布通常是长尾的,因此可以使用对数运算将整个范围分为几个分类桶缓解长尾问题。为保留更细粒度的数值信息,论文使用以2为底的对数而不是更大的底数进行分箱。

  • ltv label对应的类别c为,具体实现时,c可以做完log后做下clip处理,限制下上限值:
    在这里插入图片描述
    1+y也是为了确保非负

  • 类别预测概率为:
    在这里插入图片描述

  • loss则为多分类交叉熵损失函数咯:
    在这里插入图片描述

  • pltv则为根据预测的各类别的概率重建的值:
    在这里插入图片描述

解释一下下式吧:每个区间的中心作为某类别的值,聚合各区间的值*对应概率即为预测值。之所以这里的区间上下限为什么是这样子,是因为上面用了log1p:
在这里插入图片描述

【混合对比学习】
额,别看图里这么复杂,其实原理很简单,这个操作是在batch内样本间进行的,以我了解其实大部分对比学习都是在batch内做的吧。通过对比学习机制显式编码样本之间的相关性,以减轻对数据丰富性的依赖。同时构建二分类购买预测器和LTV回归器之间的有机连接。
在这里插入图片描述

分类对比损失:
比较正样本和负样本的平均购买概率。通常假定正样本的购买概率大于负样本。然而直接比较每对样本是不可行的,因为噪声样本可能会误导模型生成低质量的对比组合,这对模型优化是不利的。但平均而言正样本应该比负样本具有更高的购买倾向。
在这里插入图片描述


回归对比损失:
假设具有更高LTV的用户可能也具有更高的购买概率。提出了一种回归对比学习方法来规范回归结果,使其与预测的购买概率正相关。通过这种方式,同一个batch中不同样本之间的相关性被明确地编码到模型学习中,同时分类和回归部分通过这些损失自然地连接起来,以便它们编码的知识可以交换和共享。前面介绍的3种回归器都采用如下loss公式:
在这里插入图片描述

【汇总:多任务训练与预测】
训练阶段:也就是将上面介绍的各种loss相加了:
1个付费概率分类损失、3个回归损失、1个分类对比学习损失、3个回归对比学习损失:
在这里插入图片描述
注:付费概率分类损失、分类对比学习损失是在所有样本上计算的。而回归损失只在正样本上计算,因为严重的付费/不付费数据不平衡问题回损害精度。

预测阶段,也就是上面介绍的各pltv相加,受ZILN启发吧,最终pltv也为付费概率与各pltv的相乘,权重alpha与beta均设为0.3,通过实验确定。非可学习参数,论文说作为可学习参数效果不好:
在这里插入图片描述

  

4 实验

指标基本均有提升
在这里插入图片描述

  • 在离线与在线实验中验证了模型的有效性(对比了其他baselines),在线实验中,支付金额相比对照组提升32.26%,推理延迟增加9%(可容忍)。这一显著改善主要是由于低消费和中消费水平用户支付金额的增加(高消费用户贡献的收入与基线和我们的方法相似)。这一发现表明,我们的方法在提高广泛用户的活跃性方面具有关键优势,而不仅仅是针对高支出用户。
  • cmltv已经在线部署,为数亿移动用户提供服务,并改善他们的体验。
    在这里插入图片描述

缺点:
论文总结了如下缺点:

  • 由于付费数据的稀疏,导致部分预测样本的付费概率很低,从而预测的pltv不够准确。
  • 模型很难预测高pltv,因为这类样本非常少。
  • 对比学习损失,需要一个很大的batch_size,否则单个batch内正样本太少了,loss算出来的nan,不稳定。
  • 对于冷启用户/游戏,很难预测准确的pltv。

相关文章:

LTV预估 | 多视角对比学习框架CMLTV

😄 cmltv的loss好多哟,花样好多哟~ 文章目录 1 精简总结2 背景&挑战3 方法4 实验 ✅【arxiv-2023 华为 CMLTV】《Contrastive Multi-view Framework for Customer Lifetime Value Prediction》 论文链接: https://arxiv.or…...

llama.cpp LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK2

llama.cpp LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK2 1. LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK22. LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK23. struct ggml_cgraph * build_deepseek() and struct ggml_cgraph * build_deepseek2()References 不宜吹捧中国大语言模型的同…...

C语言自定义数据类型详解(二)——结构体类型(下)

书接上回,前面我们已经给大家介绍了如何去声明和创建一个结构体,如何初始化结构体变量等这些关于结构体的基础知识。下面我们将继续给大家介绍和结构体有关的知识: 今天的主题是:结构体大小的计算并简单了解一下位段的相关知识。…...

DeepSeek学术写作测评第二弹:数据分析、图表解读,效果怎么样?

我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 针对最近全球热议的DeepSeek开源大模型,娜姐昨天分析了关于论文润色、中译英的详细效果测评: DeepSeek学术写作测评第一弹:论文润色&#…...

深入理解 Python 中的 `__all__`:控制模块的公共接口

在 Python 编程中,模块化设计是构建可维护和可扩展代码的关键。模块不仅帮助我们组织代码,还能通过隐藏实现细节来提高代码的可读性和安全性。Python 提供了多种机制来控制模块的可见性,其中 __all__ 是一个非常重要但常被忽视的特性。本文将…...

虚幻基础07:蓝图接口

能帮到你的话,就给个赞吧 😘 文章目录 作用原理事件函数 作用 实现对象间的通知。 A 通知 B 做什么。 原理 将接口抽象为蓝图,使得任意蓝图都能直接访问。 只需要再传入对象地址,就能执行对象的功能。 事件 黄色:…...

数据结构---哈希表

基本概念 哈希函数(Hash Function)是一种将输入的数据(通常是任意大小的)映射到固定大小的输出(通常是一个固定长度的值)的函数。这个输出值通常称为“哈希值”(Hash Value)或“哈希…...

DataWhale组队学习 leetCode task4

1. 滑动窗口算法介绍 想象你正在用一台望远镜观察一片星空。望远镜的镜头大小是固定的,你可以通过滑动镜头来观察不同的星区。滑动窗口算法就像这台望远镜,它通过一个固定或可变大小的“窗口”来观察数组或字符串中的连续区间。 滑动操作:就像…...

【ESP32】ESP-IDF开发 | WiFi开发 | UDP用户数据报协议 + UDP客户端和服务器例程

1. 简介 UDP协议(User Datagram Protocol),全称用户数据报协议,它是一种面向非连接的协议,面向非连接指的是在正式通信前不必与对方先建立连接, 不管对方状态就直接发送。至于对方是否可以接收到这些数据内…...

【PyQt5】数据库连接失败: Driver not loaded Driver not loaded

报错内容如下: 可以看到目前所支持的数据库驱动仅有[‘QSQLITE’, ‘QMARIADB’, ‘QODBC’, ‘QODBC3’, ‘QPSQL’, ‘QPSQL7’] 我在网上查找半天解决方法未果,其中有一篇看评论反馈是可以使用的,但是PyQt5的版本有点低,5.12…...

Unity游戏(Assault空对地打击)开发(1) 创建项目和选择插件

目录 前言 创建项目 插件导入 地形插件 前言 这是游戏开发第一篇,进行开发准备。 创作不易,欢迎支持。 我的编辑器布局是【Tall】,建议调整为该布局,如下。 创建项目 首先创建一个项目,过程略,名字请勿…...

Rust:如何动态调用字符串定义的 Rhai 函数?

在 Rust 中使用 Rhai 脚本引擎时,你可以动态地调用传入的字符串表示的 Rhai 函数。Rhai 是一个嵌入式脚本语言,专为嵌入到 Rust 应用中而设计。以下是一个基本示例,展示了如何在 Rust 中调用用字符串传入的 Rhai 函数。 首先,确保…...

A星算法两元障碍物矩阵转化为rrt算法四元障碍物矩阵

对于a星算法obstacle所表示的障碍物障碍物信息,每行表示一个障碍物的坐标,例如2 , 3; % 第一个障碍物在第二行第三列,也就是边长为1的正方形障碍物右上角横坐标是2,纵坐标为3,障碍物的宽度和高度始终为1.在rrt路径规划…...

【C++】设计模式详解:单例模式

文章目录 Ⅰ. 设计一个类,不允许被拷贝Ⅱ. 请设计一个类,只能在堆上创建对象Ⅲ. 请设计一个类,只能在栈上创建对象Ⅳ. 请设计一个类,不能被继承Ⅴ. 请设计一个类,只能创建一个对象(单例模式)&am…...

单细胞分析基础-第一节 数据质控、降维聚类

scRNA_pipeline\1.Seurat 生物技能树 可进官网查询 添加链接描述 分析流程 准备:R包安装 options("repos"="https://mirrors.ustc.edu.cn/CRAN/") if(!require("BiocManager")) install.packages("BiocManager",update = F,ask =…...

多项日常使用测试,带你了解如何选择AI工具 Deepseek VS ChatGpt VS Claude

多项日常使用测试,带你了解如何选择AI工具 Deepseek VS ChatGpt VS Claude 注:因为考虑到绝大部分人的使用,我这里所用的模型均为免费模型。官方可访问的。ChatGPT这里用的是4o Ai对话,编程一直以来都是人们所讨论的话题。Ai的出现…...

每日一题-判断是否是平衡二叉树

判断是否是平衡二叉树 题目描述数据范围题解解题思路递归算法代码实现代码解析时间和空间复杂度分析示例示例 1示例 2 总结 ) 题目描述 输入一棵节点数为 n 的二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树定义为: 它是一棵空树。或者它的左右子树…...

FLTK - FLTK1.4.1 - 搭建模板,将FLTK自带的实现搬过来做实验

文章目录 FLTK - FLTK1.4.1 - 搭建模板,将FLTK自带的实现搬过来做实验概述笔记my_fltk_test.cppfltk_test.hfltk_test.cxx用adjuster工程试了一下,好使。END FLTK - FLTK1.4.1 - 搭建模板,将FLTK自带的实现搬过来做实验 概述 用fluid搭建UI…...

《多阶段渐进式图像修复》学习笔记

paper:2102.02808 GitHub:swz30/MPRNet: [CVPR 2021] Multi-Stage Progressive Image Restoration. SOTA results for Image deblurring, deraining, and denoising. 目录 摘要 1、介绍 2、相关工作 2.1 单阶段方法 2.2 多阶段方法 2.3 注意力机…...

AWScurl笔记

摘要 AWScurl是一款专为与AWS服务交互设计的命令行工具,它模拟了curl的功能并添加了AWS签名版本4的支持。这一特性使得用户能够安全有效地执行带有AWS签名的请求,极大地提升了与AWS服务交互时的安全性和有效性。 GitHub - okigan/awscurl: curl-like acc…...

别再手动复制粘贴了!用CubeMX一键生成FreeRTOS工程(STM32F4 HAL库实战)

告别繁琐配置:STM32CubeMXFreeRTOS全自动工程生成指南 在嵌入式开发领域,时间就是竞争力。传统FreeRTOS移植需要手动复制文件、配置路径、修改中断向量表,稍有不慎就会陷入头文件缺失、链接错误的泥潭。现在,STM32CubeMX的图形化…...

Granite TimeSeries FlowState R1实战:基于卷积神经网络(CNN)的时序特征提取进阶

Granite TimeSeries FlowState R1实战:基于卷积神经网络(CNN)的时序特征提取进阶 你是不是也遇到过这样的问题?面对一长串传感器读数、股票价格波动或者服务器监控数据,感觉信息量巨大,却不知道从哪里入手…...

别再只用四线制SPI了!用菊花链连接多个传感器,Arduino引脚不够的救星

菊花链SPI:突破Arduino引脚限制的多传感器连接方案 当你在智能温室项目中需要同时监测温度、湿度和光照强度,却发现Arduino Uno的GPIO引脚已经捉襟见肘时,传统四线制SPI的局限性就暴露无遗。每个新增的传感器都意味着多占用一个宝贵的片选引…...

互联网大厂Java求职者面试经历

Java求职面试:严肃面试官与搞笑水货程序员的碰撞 在一次互联网大厂的面试中,面试官坐在桌子后面,脸上挂着严肃的表情,而面试者则是一个搞笑的程序员,名叫谢飞机。 第一轮提问 面试官:请简述一下Java的核心特…...

告别调参玄学:在GID遥感数据集上优化DeeplabV3+的5个实战技巧

告别调参玄学:在GID遥感数据集上优化DeeplabV3的5个实战技巧 遥感影像分割一直是计算机视觉领域的难点任务,尤其是面对GID这类包含复杂地物边界和多尺度目标的数据集时。许多研究者在初步跑通DeeplabV3模型后,往往会陷入mIoU指标停滞不前的困…...

基于OFA的智能写作助手:图文内容自动生成与问答

基于OFA的智能写作助手:图文内容自动生成与问答 1. 引言 你有没有遇到过这样的情况:手头有一堆产品图片,却不知道怎么写吸引人的商品描述;或者看到一张复杂的图表,想要快速提取关键信息却无从下手;又或者…...

掌握BepInEx:Unity游戏扩展全家桶的零门槛实践指南

掌握BepInEx:Unity游戏扩展全家桶的零门槛实践指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 🔍 游戏模组管理的行业痛点与解决方案 在Unity游戏生态…...

别再死记硬背了!用Halcon的vector_angle_to_rigid算子搞定视觉定位,附完整代码

视觉定位实战:用Halcon的vector_angle_to_rigid算子避开几何变换的三大误区 在工业视觉项目中,刚体变换是坐标转换的核心技术,但许多工程师在使用Halcon的vector_angle_to_rigid算子时,常陷入三个致命误区:误认为旋转…...

YOLOv12涨点改进| TGRS 2025 | 全网独家创新、涨点上采样改进篇| 引入LSE-FPN拉普拉斯增强特征金字塔,有效提升各层特征的表达,含A2C2f_LSE二次创新,小目标检测高效涨点

一、本文介绍 🔥本文给大家介绍利用 LSE-FPN拉普拉斯增强特征金字塔 改进YOLOv12网络模型, 通过在特征金字塔中加入局部语义增强机制并改进多尺度特征融合方式,有效提升了各层特征的表达能力。该模块能够强化低层特征的语义信息,使模型在小目标检测和复杂场景下表现更优,…...

终极指南:如何用Muzic的MusicBERT实现符号音乐深度理解(从入门到实践)

终极指南:如何用Muzic的MusicBERT实现符号音乐深度理解(从入门到实践) 【免费下载链接】muzic 这是一个微软研究院开发的音乐生成AI项目。适合对音乐、音频处理以及AI应用感兴趣的开发者、学生和研究者。特点是使用深度学习技术生成音乐&…...