背景
本文是以airbnb为背景,设计的房屋动态定价方法。本文采用两阶段的方式对定价进行预测,总体方案流程和上一篇文章中APP-LM有点类似,但是细节上也有差别。本文为kdd'18的论文,上一篇为kdd'19的论文,上一篇论文也就更进一步的提出了端到端的方法,如果没看过上一篇的可以看一下上一篇,因为关于损失函数中的一些含义介绍有所省略,因为在前一篇介绍过了。
上一篇:推荐系统(十四)——kdd'19动态定价方法(APP-LM,APP-DES,DNN-CL)
本文所提模型主要包括三个部分:
- 一个二分类模型,用于预测房屋被预定的概率
- 一个回归模型,用于结合各种特征以及定制的损失函数进行定价预测
- 一个辅助个性化的模块,和回归模型结合预测更好的价格
可以发现这里的前两部分其实和APP-LM有点相似。
难点
需求估计难点
- 需求预估:通常做动态定价时,使得P*F(P)最大的P就是所求定价,F(P)为需求函数。其实这里的需求函数就是对应的二分类模型,他的好坏影响着最终结果。但是文中场景中的房屋都是异质的,不能直接作出需求曲线,因此采用机器学习的方法结合其他特征进行学习得到。
- 时间变化:房屋的预定会随着时间有季节性的变化,并且随着一些特殊事件的发生也会引起房屋预定的较大变化。
- 供给变化:不像旅馆,所有房屋都是差不多的,是同质的,airbnb上的房屋是异质的,周围环境等因素都不一样,因此需要考虑在内。并且评分,周围房源也都要考虑进去。
定价难点
算法提供的动态定价建议只会被一部分商家接受,其他商家仍然会按照自己的想法来定价,并且他们的定价会偏高。因此,通过这些数据预测出来的价格可能会超出原始设定的价格范围。(PS:正如上一篇文章所述,虽然是动态定价,但是为了防止定价过高过低,会有一个固定的范围限制)
方法
定价的总体流程如上图所示,先预测预定概率,然后采用定价策略模型进行定价,然后进行个性化。
预定概率预测模型
该二分类模型文中采用了GBM模型(当然想上一篇文章的DNN等模型也可以尝试),使用了房屋的本身特征(可住几人,房间类型等)、时间特征(季节性、距离晚上的时间等)、辅助特征(房屋周围环境,搜索率等)。这些特征是在airbnb场景下用到的,可以参考,不过具体问题还是具体分析,这里就不过多陈述了。
除了设计模型之外,本文还在采样上进行了改进,文中说的是房屋密度高的地方有地理优势,因此在高密度的地方采样率也高。
想要得到精确的价格-需求曲线是很难的,主要存在以下挑战:数据稀疏、样本的唯一性、部分特征之间存在依赖关系。因此本文采用将预测的概率作为价格预测模型的输入的一部分。
定价策略模型
训练数据
中N表示样本数,xi是特征,yi表示是否预定,是标签。
上式为总体的损失函数, 表示max(0,·),上图为损失函数对应的上下界的直线。虽然无法预测到准确的价格用于构建损失函数,但是可以有一个范围。上下界的函数如下所示
这里的上下界函数可以发现和上一篇文章的是类似的,因此这里不再过多赘述他们表达的含义,有需要的小伙伴可以看一下上一篇中的这部分内容,也可以结合上一篇文章中的表格一起看,会更加容易理解。其实就是要让价格在一个范围内,大于或小于都会产生损失。定价模型基于以下三个假设:
- 对于同一个房子,建议价格与当前价格的预订概率呈正相关。预定概率高的可以涨点价
- 动态定价的价格以房东通常设定的最具代表性的价格为中心,具有可学习的增加/减少幅度,因此这里说明模型预测的价格是基于原有价格的。
- 预订概率模型未完全捕获的其他需求信号,应该将这些信号融入模型中
定价模型为:
P是calendar price(可以用多种方式定义,例如历史价格的均值等),q是预测概率,D是额外的需求信号得到的需求分数(例如相似的房屋聚类为一个簇)。
控制价格的涨跌,
当建议价格与实际价格相同时,以适当调节当参数。这两个参数保证
是单调的,随着概率的增大而增大。
通过将簇级别的需求信号调整到常见的高斯尺度上,将需求分数 D 归一化。D 的值越高,对应集群中的需求就越高。
,这两个参数控制曲线的弯度。如图所示,价格增加和下跌的曲线是不一样的,非对称曲线。通过这种方式,建议的价格可以更好的反应需求敏感度。
训练方式和参数设置等就不在这展开了。