落地文档里有完整的司机和乘客的价格策略的流程图,大概了解了上下游的业务关系,并且明确了我做的部分应该是DP部分。
上午看动调代码,下午和带教交流,晚上看模型训练的代码
后面工作计划
1、格子AR、冒泡AR模型优化
(1)基本训练流程,特征 样本 lgb训练 评估 (jupyter中)
(2)熟悉DNN训练框架,尝试特征、结构的优化、多任务联合训练
(3)uplift建模调研及训练
2、强化学习调研和落地
(1)方案调研和设计
(2)样本构建、模型训练及评估
dp:dynamic pricing 动态定价,动调; cp:calibration pricing 基价; rp:random pricing 随机价; FP: fixed一口价
ar: accept rate 接单率; $ar = \frac{accept}{call}$; dar:司机接单率 $dar = \frac{accept}{broadcast}$; cr:完单率;ecr:有效呼叫率 $ecr = \frac{call}{bubbles}$;
未知的缩写:bcr $ bcr = 1 - (1- dar)^{h} $ 看注释说是司机播单率,又有说是冒泡完成率的。
gmv:gross merchandise volume,交易总额;tch: total charge time 总收费时间;这两个貌似是策略的优化目标。
详细框架见动调串讲文档中的两幅图,我们负责的部分在策略中有两处。
对于每一个六边形的cell, 其中的供需关系都是不一样的, ar模型通过建立cell中的dptimes和ar的关系,输出dp倍数,对基础价格进行修正,达到利用不同cell价格调节供需,提升乘客体验的目的。
基准dp倍数小于2时的场景比较常见,数据样本较多,可以使用统计学习模型建立ar-dp倍数的关系; 大于2时,样本较少,通过规则+线性差值近似找出ar-dp倍数的关系。
同样对于cell中,每一个cell中会有多个可能潜在的od需求,称为一个bubble,complete/bubble 表示完单率.对于每一个bubble进行optsolve,这是一个凸优化问题,目标函数是最大化gmv,在松弛的时候需要用完单率作为参数。和ar模型类似,都是算对dp倍数的弹性。
``` INPUT: dp_candidate, ar_hat, realtimeAR, realtimeDSR, ArSetpoint
dp_candidate < 2: dpc , ar_hat = [dpc_i],[ar_hat_i] # 外部传入 ar_hat是统计学习模型预测得出 elas = d(ar_hat)/d(dpc) # 用 model.LeastSquares 算出弹性 elas *= defactor # 乘一个衰减系数
dp_candidate >2: # 样本少所以用规则+线性差值计算ar的预测值 dpcs = [2.0 : 3.0 : 0.1] for dpc in dpcs: new defactor # 一个不一样的衰减系数,和每一个dp_candidate 对应 elas *= defactor elas = max(elas, elas_lowbound) # 下限 d(ar) = elas * (dpc- 1.9) # dpc-1.9在0,1 ar_hat = ar_1.9 + d(ar) # ar_1.9是上一段模型预测的ar的最后一位,也是这里插值起点
arDiff = ArSetpoint - realtimeAR # 确保上下界的省略 d(dp) = arrDiff / elas dp_times = valid_dp_times + d(dp)
OUTPUT: dp_times ```
因为学校导师线上召开组会,请假一天,无进展。
拉取项目组 /最优化ECR-AR模型.ipynb 并且在本地配置环境。本地配置环境拉取包的速度太慢,线上使用已有的env运行代码发现总是报内核正忙的错误。接下来需要找出原因。
没有成功,只能读取,尝试修改ssh配置,还是不行,遂放弃,ide不一样不影响写代码,习惯了就行。
第一周主要工作量: