如何为“机票价格”节点设计半衰期衰减函数?

解读

在机票动态定价 Agent 中,“机票价格”节点既是状态变量也是奖励信号的一部分。面试官想考察的是:

  1. 你能否把业务语义(价格随起飞临近而衰减或波动)抽象成数学形式;
  2. 你能否让衰减函数可在线学习可解释对齐收益目标
  3. 你能否兼顾冷启动异常值实时性等工程约束。
    因此,回答必须给出可落地的半衰期衰减函数表达式参数估计方法以及在 Agent 里的嵌入方式

知识点

  1. 半衰期衰减本质
    价格敏感度随“距起飞时间”指数下降,形式为 P(t)=P₀·e^(–λt),其中λ=ln2/T½,T½ 为业务定义的半衰期(如7天)。
  2. 国内机票业务约束
    • T+0 出票:价格刷新粒度 5~15 min,函数必须单趟航班 24 h 内计算耗时 <50 ms
    • 舱位嵌套:经济舱多子舱位,需对每个舱位独立拟合 λ
    • 节假日反转:春运、国庆等需求反而上升,需引入需求强度因子 I(d)∈[–1,1]方向修正
  3. 在线学习机制
    使用指数加权移动平均(EWMA) 更新 λ:
    λₙ = α·(ln2/T½_observed) + (1–α)·λₙ₋₁,其中 α 由强化学习策略梯度自动调节,目标为最大化长期收益 G=Σγᵗ·Rₜ
  4. 安全对齐
    • 设置λ_min、λ_max硬阈值,防止价格崩溃;
    • 引入差分隐私噪声 ε=0.1对外输出,满足《个人信息保护法》对行程数据的要求。
  5. 可解释输出
    把 λ 转换成人话
    “该航班价格记忆半衰期为 5.2 天,意味着每 5 天价格影响力减半,当前剩余 37%。”

答案

给面试官一个可直接写入代码的完整设计:

  1. 衰减函数
    P_decay(t)=P₀·exp(–λ·t·(1+I(d)))
    其中

    • t:距起飞天数,t≥0;
    • I(d):基于搜索量、客座率、节假日标签的 XGBoost 输出的需求强度,范围 [–1,1];
    • λ:初始值 ln2/7≈0.099 d⁻¹,在线更新。
  2. 参数更新
    每条订单或搜索日志到达后,用时序差分误差 δ指导 λ 调整:
    λ ← λ + η·δ·(–t)·P_decay(t)
    η 取 1e-4,保证24 h 内收敛方差可控

  3. 工程实现

    • Flink CEP实时流,按航班号 keyBy,维护状态 λ_state
    • 设置checkpoint 5 s,故障恢复后重放 Kafka 队列,Exactly-Once
    • 对外 RPC 接口返回P_decay 与置信区间[P_low, P_high],区间由 λ 的 95% 置信方差计算。
  4. 效果验证

    • 离线:用过去 90 天数据做滚动回测,MAPE 目标 <6%;
    • 在线:A/B 桶对比原系统,GMV 提升 ≥3%投诉率下降 ≥1 pp即通过。

拓展思考

  1. 多 Agent 协同
    把“价格衰减”节点升级为多 Agent 博弈
    • 本公司 Agent 与竞对爬虫 Agent模拟舱中对打,用MADDPG学习最优 λ;
    • 引入** regulator Agent** 模拟民航局限价政策,确保λ 不突破政府指导价红线
  2. 因果推断
    双重机器学习(DML) 分离需求自然波动与价格衰减效应,避免混淆偏差导致 λ 过拟合。
  3. 跨模态
    微博舆情情感向量接入 I(d),发现“航班延误”热搜时,半衰期可动态拉长 30%,减少负面舆情下的收益损失。