前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >推荐系统(十四)——kdd'19动态定价方法(APP-LM,APP-DES,DNN-CL)

推荐系统(十四)——kdd'19动态定价方法(APP-LM,APP-DES,DNN-CL)

作者头像
秋枫学习笔记
发布2022-09-19 11:50:47
9930
发布2022-09-19 11:50:47
举报
文章被收录于专栏:秋枫学习笔记

本文以航空服务为场景,设计了一系列动态定价方法,对于其他场景具有借鉴意义。

Dynamic Pricing for Airline Ancillaries with Customer Context https://dl.acm.org/doi/abs/10.1145/3292500.3330746

背景

很多定价方法是静态定价的,即给item定完价之后就一直是这个价格了,没有考虑用户的特征以及一些边际信息。本文提出了考虑用户特征和item特征的动态定价方法。背景相对简单,直接进入正题。

定价因素

本文考虑两个定价因素:需求函数(demand function)和用户属性(customer attribution)。需求函数其实就是用户的购买意愿,也就是通常模型预估的转化率,即根据当前特征和价格,该用户可能购买的概率。而用户属性就是影响转化率预测的特征,本文将其分为以下几部分:时间类型的属性、销售类型的属性、往返间隔时间等,这些特征是和使用场景相关的,这里就不详细介绍了,因为不同场景所涉及的特征也不一样。我们只需要知道他这里涉及两个因素,就是最开始说的需求函数和用户属性。

定价方法

本文的定价方法主要包含两个部分:首先是用户购买意愿的预测,即转化率预测模型;其次是收入优化模型,即如何定价可以使得收入最大化。本文包含两个假设,这些假设也是其他定价方法中常用的:

  • 价格范围:模型动态定价的价格必须在一定范围内,不能过大过小。
  • 支付购买意愿符合单调性:这也很容易理解,就是如果在当前价格用户不愿意购买,那么价格更高肯定也不愿意购买。

依据上述内容,本文主要提出了三个方法,复杂度也是一次上升。

使用逻辑映射进行辅助购买预测(APP-LM)

原始数据是不平衡的,因此需要考虑数据不平衡的应对方案(例如对交叉熵进行加权等)。本文第一个方法APP-LM,它是一个两阶段的方法:首先使用基于簇特征的朴素贝叶斯对用户的购买意愿进行预测,这里用到的特征是不包含价格的。接着,使用逻辑回归映射函数对得到的购买意愿预测值映射为对应的定价。使用逻辑映射背后的直觉是,当购买概率高时,辅助产品的定价可以更接近定价范围的最大值,而对于低概率,则可以更低。对应公式如下:

p^{rec}=\frac{L}{1+exp^{-k(x-x_0)}}

这里涉及三个参数:L控制价格的最大值,k控制曲线的形状或陡度,中点x0控制sigmoid曲线。通过k和x0的控制,可以是整个曲线是更激进的或更保守的对价格进行映射。例子如图所示:

具有详尽搜索的辅助购买预测 (APP-DES)

APP-DES也是一个两阶段的定价方法:首先用DNN预测用户的购买意愿,而由于不平衡性,因此损失函数用加权对的交叉熵损失函数,这里和第一个方法的区别就是这里用了深度的方法,APP-LM用传统方法,还有一个区别是这里训练模型时,特征包含价格。接着,对范围内的价格进行离散化,比如等分之类的,对每一个可能的价格结合特征输入到模型,收益最高的就是被推荐的价格,收益计算方式如下:

\hat{E}_P=P*f_{\theta}(x,P)
P^{rec}=\mathop{argmax}\limits_{P}{\hat{E}_P}

其中P是价格,x为其他特征。

具有自定义损失函数的端到端 DNN (DNN-CL)

前面两个方法都是两阶段的,而该方法是端到端的。训练数据

\{x_i,y_i\}^N_{i=1}

中xi表示特征,yi表示是否购买。总体的自定义损失函数如下:

\mathcal{L}=\underset{\theta}{\operatorname{argmin}} \sum_{i=1}^{N} \sum_{j=1}^{|F|}\left(\Phi_{l b}+\Phi_{u b}\right) \cdot \mathbb{1}_{\left(\sigma_{i j}>0\right)}
\Phi_{lb},\Phi_{ub}

分别表示下界和上界相关的损失函数,

\mathbb{1}_{\left(\sigma_{i j}>0\right)}

用于控制前文所述的单调性条件,

\begin{aligned} \Phi_{l b} &=\max \left(0,\left(L\left(P_{i j}, \delta_{i j}\right)-\mathbb{F}_{\Theta}\left(x_{i}, \mathbb{F}\right)\right)\right) \\ \Phi_{u b} &=\max \left(0,\left(\mathbb{F}_{\Theta}\left(\boldsymbol{x}_{i}, \mathbb{F}\right)-U\left(P_{i j}, \delta_{i j}\right)\right)\right) \end{aligned}
\mathbb{F}_{\Theta}

表示模型预测,

\mathbb{F}

表示离散的定价,即第二部分方法中所说的对价格离散化。

\mathbb{1}_{\left(\sigma_{i j}>0\right)}

损失对应于此处的

\delta_{ij}

,主要涉及以下公式:

\delta_{i j}\left(y_{i}\right)= \begin{cases}y_{i} & \text { if } \sigma_{i j} \geq 0 \\ 0 & \text { otherwise }\end{cases}
\sigma_{ij}=(j-j^*)\cdot(-1)^{y_i}

其中j表示第j个价格,i表示第i个item,

j^*

表示对应于训练数据中

P_{ij}

在离散价格数组中的下标。上下界的损失函数如下所示:

L(P_{ij},\delta_{ij})=\delta_{ij}\cdot P_{ij}+(1-\delta_{ij})\cdot c_1P_{ij}
U(P_{ij},\delta_{ij})=(1-\delta_{ij})\cdot P_{ij}+\delta_{ij}\cdot c_2P_{ij}

其中

c_1\in(0,1),c_2>1

。分析如下:

  • 当前item是已经购买了的,则yi=1,那么小于该价格的都会被购买,那么定价可以大于
j^*

位置的价格,因此此时下界为Pij,价格可以大于当前下界来获得更大收益。如果没被购买,则下界为c1·Pij,下界需要更小。

  • 当item是已经购买了的,则yi=1,那么小于该价格的都会被购买,因此上界可以更高c2·Pij。反之如果没有购买,那么大于该价格的都不会被购买,因为已经贵到没人买了,上界为Pij。

上表为各种情况下的损失函数取值,为了损失函数值不为0,

\frac{\mathbb{F}_{\Theta}(x_i,\mathbb{F})}{P_{ij}} < c_1 <1

1< c_2 <\frac{\mathbb{F}_{\Theta}(x_i,\mathbb{F})}{P_{ij}}

,这里c2的范围和论文这种有区别,不知道是我想错了,还是论文中有问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋枫学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 定价因素
  • 定价方法
    • 使用逻辑映射进行辅助购买预测(APP-LM)
      • 具有详尽搜索的辅助购买预测 (APP-DES)
        • 具有自定义损失函数的端到端 DNN (DNN-CL)
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档