Files
Neo-ZQYY/docs/prd/SPI 消费力指数.md

20 KiB
Raw Blame History

PRDSPI 消费力指数Spending Power Index建设方案MD

  • 文档版本v1.0
  • 状态:定稿(可进入研发设计/排期)
  • 适用范围:门店客户运营(新客转化、老客召回、增值推荐、资源分配)
  • 相关指数体系NCIWBIRSOSMSMLSPI 为新增客户级指数)

1. 背景与目标

1.1 背景

当前体系中:

  • NCI 用于新客欢迎与转化优先级
  • WBI 用于老客召回优先级
  • RS/OS/MS/ML 用于关系强度、归属、动量、付费关联(助教-客户关系对粒度)

但尚缺少一个客户级的“消费能力/消费层级”指数,导致以下问题:

  • 高价值客户与普通客户在运营动作上难以区分投入强度
  • 增值服务推荐缺少“消费能力层级”依据
  • 资源分配容易只看“紧急程度”忽略“投入产出比ROI

1.2 目标

新增 SPISpending Power Index消费力指数,评估客户在门店场景内的“消费力代理值”,重点基于:

  • 消费水平Level
  • 消费速度Speed
  • 消费稳定性Stability可选修正项

说明:稳定性窗口最长只使用 90 天,不使用 180 天(按本次需求明确要求)。

1.3 非目标

  • 不评估金融/征信意义上的“信用能力”
  • 不直接替代 NCI/WBI紧迫度
  • 不直接替代 RS/OS/MS/ML关系归属与执行人选择

2. 设计原则与方法依据

  1. 行为数据驱动:使用消费/充值明细作为消费力代理信号(门店经营场景可解释、可落地)。
  2. 稳健统计金额类数据长尾明显展示分采用分位截断Winsorize降低极端值影响。Winsorization 本质是用指定分位数限制极端值影响,适合交易金额数据。
  3. 时间敏感:近期行为更有参考价值,采用指数衰减与 EWMA 平滑近期更高权重来处理速度与展示分稳定性。指数衰减与半衰期是标准时间权重形式EWMA 则是常见的时间序列平滑方法。
  4. 与现有体系兼容:沿用现有 BaseIndexTask 的映射逻辑P5/P95 → 压缩 → MinMax 010 → 可选 EWMA
  5. 运营闭环导向SPI 不是单独使用,需与 NCI/WBI/RS/OS/MS/ML 组合使用。

补充说明RFMRecency/Frequency/Monetary是成熟的客户价值/客户分层框架SPI 在其基础上强化“消费速度”与门店场景的可执行性。


3. 指数定义

3.1 指数名称

  • 中文:消费力指数
  • 英文:Spending Power Index
  • 缩写:SPI

3.2 粒度

  • 客户级member
  • 主键建议:(site_id, member_id)

3.3 业务含义

SPI 用于衡量客户在门店体系内的综合消费力层级,回答:

  • 这个客户整体消费能力在门店内属于什么层级?
  • 近期消费推进速度是否明显变快?
  • 是稳定高消费,还是偶发冲高?

4. 数据来源与口径

4.1 数据来源(建议)

A. 消费订单明细(核心)

  • 来源:结算/订单主表及明细表(按现有 DWD 口径)

  • 字段(至少):

    • site_id
    • member_id
    • pay_time
    • pay_amount(实付)
    • settle_type(必要时过滤)
    • 明细项分类(台费、商品、服务等)

B. 充值订单明细(辅助)

  • 来源:dwd_recharge_order

  • 字段(至少):

    • site_id
    • member_id
    • pay_time
    • pay_amount
    • settle_type = 5

C. 可选增强

  • 储值卡余额(用于解释)

4.2 时间窗口(定稿)

稳定性最长只用 90 天。

  • 短窗口30 天(近期消费速度)
  • 中窗口90 天(消费层级、速度基线、稳定性)

4.3 统计口径(建议)

  • 消费金额:使用 pay_amount(实付)
  • 按天去重的消费日:用于计算消费日密度
  • 若同一天多笔消费:计入总额,消费日数仅计 1 天
  • 充值金额:使用充值订单 pay_amount
  • 金额单位:与现有系统保持一致(元)

5. SPI 算法设计v1

v1 采用“主分 + 子分”的结构,保证解释性:

  • Level(消费水平)
  • Speed(消费速度)
  • Stability(消费稳定性,作为修正项;最长 90 天)
  • SPI = f(Level, Speed, Stability)

5.1 基础特征定义(客户级)

设:

  • spend_30近30天消费总额
  • spend_90近90天消费总额
  • recharge_90近90天充值总额
  • orders_30 / orders_90近30/90天消费笔数
  • visit_days_30 / visit_days_90近30/90天有消费的自然日数按天去重
  • avg_ticket_90 = spend_90 / max(orders_90, 1)90天客单
  • weekly_spend_90近90天按周汇总消费额序列约13周
  • daily_spend_series_90近90天按日消费额序列用于 EWMA

5.2 子分一消费水平Level

目的

衡量客户的消费金额层级与客单水平,兼顾充值规模(预算能力代理信号)。

建议公式

[ L = w_{s30}\cdot \ln(1+\frac{spend_{30}}{M30})

  • w_{s90}\cdot \ln(1+\frac{spend_{90}}{M90})
  • w_{ticket}\cdot \ln(1+\frac{avg_ticket_{90}}{T0})
  • w_{r90}\cdot \ln(1+\frac{recharge_{90}}{R90}) ]

说明

  • 使用 log1p 压缩长尾,避免大额客户过度支配排序
  • 30天与90天并用兼顾近期层级与稳定层级
  • 充值是辅助信号,不应压过真实消费金额

5.3 子分二消费速度Speed

目的

衡量“近期消费推进快不快”,体现消费节奏变化。

A. 绝对速度(近期强度)

[ V_{abs} = \ln \left(1+\frac{spend_{30}}{\max(visit_days_{30},1)\cdot V0}\right) ]

含义近30天“每个消费日平均消费强度”。

B. 相对速度(近期 vs 基线)

[ v_{30}=\frac{spend_{30}}{30}, \quad v_{90}=\frac{spend_{90}}{90} ] [ V_{rel} = \ln\left(\frac{v_{30}+\epsilon}{v_{90}+\epsilon}\right) ]

  • V_rel > 0近期消费速度快于90天基线加速
  • V_rel < 0:近期消费速度低于基线(放缓)

C. 平滑速度EWMA可选

daily_spend_series_90 做 EWMA得到 daily_spend_ewma_90 [ V_{ewma}=\ln(1+\frac{daily_spend_ewma_{90}}{E0}) ]

Speed 子分(建议)

[ S = w_{abs}\cdot V_{abs} + w_{rel}\cdot max(0, V_{rel}) + w_{ewma}\cdot V_{ewma} ]

v1 建议仅对“加速”加分(max(0,V_rel)),不对“减速”直接扣分;减速信号已在 WBI 中承担召回压力逻辑。


5.4 子分三消费稳定性Stability最长 90 天)

目的

识别“稳定高消费”与“偶发冲高”,防止单笔大单导致 SPI 虚高。

窗口要求(定稿)

只使用近90天

建议特征v1 可二选一或组合)

[ Stab_{cover} = \frac{#(\text{近90天有消费的周数})}{13} ]

Stability 子分v1 推荐)

[ P = Stab_{cover} ] v1 先采用覆盖率,简单、稳健、工程成本低)


5.5 SPI 总分Raw

建议结构v1

[ SPI_{raw} = w_L \cdot L + w_S \cdot S + w_P \cdot P ]

建议默认权重v1

  • w_L = 0.60
  • w_S = 0.30
  • w_P = 0.10

若你希望先简化上线,也可 v1.0 不启用稳定性(w_P=0v1.1 再开启。 但本需求已明确“稳定性最长 90 天即可”,建议直接纳入 v1权重先低配。


6. 展示分映射Raw → Display 010

SPI 与子分Level/Speed/Stability展示分均建议复用现有统一逻辑

  1. 收集全体 Raw 分数
  2. 计算 P5/P95
  3. Winsorize 截断到 [P5, P95]
  4. 可选压缩(none/log1p/asinh
  5. MinMax 映射到 [0,10]
  6. 可选 EWMA 平滑分位点
  7. 展示分保留 2 位小数

该映射适合金额类/长尾分布指标,可降低极端值造成的排序失真。


7. 输出表设计(新增)

7.1 表名建议

billiards_dws.dws_member_spending_power_index

7.2 主键

  • (site_id, member_id)

7.3 字段建议v1

基础特征(解释与排查)

  • spend_30
  • spend_90
  • recharge_90
  • orders_30
  • orders_90
  • visit_days_30
  • visit_days_90
  • avg_ticket_90
  • active_weeks_90
  • daily_spend_ewma_90(若启用)

子分

  • score_level_raw
  • score_level_display
  • score_speed_raw
  • score_speed_display
  • score_stability_raw
  • score_stability_display

总分

  • raw_scoreSPI_raw
  • display_scoreSPI_display

元数据

  • calc_time
  • created_at
  • updated_at

8. 配置体系cfg_index_parameters新增项

8.1 index_type

新增:

  • SPI

8.2 参数清单(建议默认值)

窗口与平滑

参数 默认值 说明
spend_window_short_days 30 短窗口(速度)
spend_window_long_days 90 长窗口(层级/稳定性上限)
ewma_alpha_daily_spend 0.3 日消费 EWMA 平滑系数

金额压缩基数

参数 默认值 说明
amount_base_spend_30 按门店分布校准 30天消费压缩基数
amount_base_spend_90 按门店分布校准 90天消费压缩基数
amount_base_ticket_90 按门店分布校准 90天客单压缩基数
amount_base_recharge_90 按门店分布校准 90天充值压缩基数
amount_base_speed_abs 按门店分布校准 绝对速度压缩基数
amount_base_ewma_90 按门店分布校准 EWMA速度压缩基数

权重(总分)

参数 默认值 说明
weight_level 0.60 Level 权重
weight_speed 0.30 Speed 权重
weight_stability 0.10 Stability 权重

权重Level 子分)

参数 默认值 说明
w_level_spend_30 0.30 Level 中 30天消费项
w_level_spend_90 0.35 Level 中 90天消费项
w_level_ticket_90 0.20 Level 中 90天客单项
w_level_recharge_90 0.15 Level 中 90天充值项

权重Speed 子分)

参数 默认值 说明
w_speed_abs 0.50 绝对速度项
w_speed_rel 0.30 相对速度项(加速)
w_speed_ewma 0.20 EWMA速度项

稳定性参数90天上限

参数 默认值 说明
stability_window_days 90 稳定性窗口固定上限90
use_stability 1 是否启用稳定性子分
stability_mode 1 1=周覆盖率v1推荐

映射与平滑(复用 BaseIndexTask

参数 默认值 说明
percentile_lower 5 下分位
percentile_upper 95 上分位
compression_mode 1 0=none, 1=log1p, 2=asinh
use_smoothing 1 是否启用分位平滑
ewma_alpha 0.2 分位 EWMA 平滑系数

9. 任务与计算策略(建议)

9.1 任务形态

  • 新增客户级任务:SpendingPowerIndexTask
  • 粒度:(site_id, member_id)
  • 建议频率:每日(与 NCI/WBI 接近,便于客户级看板统一刷新)

9.2 计算流程

  1. 抽取消费订单明细近90天
  2. 抽取充值订单明细近90天
  3. 聚合客户级特征30天/90天
  4. 计算 Level/Speed/Stability 子分 Raw
  5. 计算 SPI_raw
  6. 映射为展示分010
  7. 写入 dws_member_spending_power_indexdelete-before-insert 或 upsert

10. SPI 参与的所有相关运营场景(完整清单)

原则:SPI 不单独决定“要不要触达”,而是与 NCI/WBI紧急度+ RS/OS/MS/ML执行关系组合使用。


10.1 新客运营NCI 场景)

场景 A1新客欢迎优先级欢迎建联

  • 主用指数NCI_welcome

  • SPI 作用:决定欢迎动作投入强度(轻触达/强服务)

  • 策略

    • NCI_welcome 高 + SPI 高:优先人工建联、安排更高质量接待与后续方案
    • NCI_welcome 高 + SPI 中低:标准欢迎流程,重点推动二访而非高价增值

场景 A2新客二访转化

  • 主用指数NCI_convert

  • SPI 作用:判断适合推“基础二访”还是“升级体验包/储值方案”

  • 配合指数

    • OS:谁负责触达
    • ML:若涉及充值/储值,由谁推更容易成交

场景 A3新客近期活跃避免过度打扰

  • 主用指数NCI(内置活跃抑制)

  • SPI 作用:不用于提高打扰频率,而用于现场服务策略分层

  • 运营建议

    • 高 SPI 新客:现场体验升级、服务深度设计
    • 低 SPI 新客:降低销售压力,先建立习惯

10.2 老客召回WBI 场景)

场景 B1老客召回名单排序

  • 主用指数WBI

  • SPI 作用:决定召回资源优先级(投入强度/人工优先)

  • 策略

    • WBI 高 + SPI 高:优先人工召回、重点维护
    • WBI 高 + SPI 中低:先低成本触达(消息/轻优惠)

场景 B2充值未回访专项召回

  • 主用指数WBI(充值未回访压力)

  • SPI 作用:判断值得投入多大召回成本

  • 配合指数

    • ML:选执行人(谁推更容易成)
    • OS:定责(避免撞单)

场景 B3高消费力沉默客户价值保全

  • 触发逻辑SPI 高WBI 进入召回区间
  • 运营重点:不是纯促销,而是“关系修复/体验恢复/高价值保留”

10.3 活跃客户跟进与升温承接MS 场景)

场景 C1近期消费/来店升温客户承接

  • 主用指数MS(关系动量)

  • SPI 作用:判断承接动作的强度与档位

  • 配合指数

    • OS:由谁跟进
    • RS:关系强弱决定话术深浅
    • ML:如涉及储值推荐,决定由谁推

场景 C2关系强但消费层级下滑潜在降档预警

  • 组合信号RS 高 + SPI_speed 下降(或 SPI 总分下滑)
  • 运营动作:先做需求确认/体验诊断,再决定促销或产品调整

10.4 增值服务与储值推荐ML + SPI 场景)

场景 D1筛选“值得重点推增值”的客户

  • 主用指数SPI

  • 配合指数MS(时机)、RS(关系)、WBI/NCI(是否当前应触达)

  • 策略

    • SPI 高 + MS 高:优先推增值(最佳时机)
    • SPI 高 + WBI 高:先召回再推,不要直接硬销
    • SPI 低 + RS 高:可做低门槛增值尝试,不推高价方案

场景 D2确定“由谁来推更可能成功”

  • 主用指数ML

  • SPI 作用:决定是否值得高成本人力投入

  • 配合指数

    • OS:责任边界
    • RS:关系基础
    • MS:时机窗口

10.5 客户分层与运营资源配置(门店/店长视角)

场景 E1客户池分层高/中/低消费力)

  • 主用指数SPI_display

  • 作用:作为全店客户分层基础维度(可与活跃度、风险度交叉)

  • 建议分层

    • 高消费力Top 1020%
    • 中消费力
    • 低消费力

场景 E2人力资源分配助教时间预算

  • 组合指数

    • 客户优先级:NCI/WBI
    • 客户消费力:SPI
    • 执行人选择:OS/ML
  • 规则示例

    • 高 NCI/WBI + 高 SPI优先人工跟进
    • 高 NCI/WBI + 低 SPI半自动/标准化触达
    • 低 NCI/WBI + 高 SPI低频但重点维系

场景 E3活动名单筛选

  • SPI 作用:筛选活动档位与名单

  • 示例

    • 高 SPI 客户:高阶体验/高客单活动
    • 中低 SPI 客户:入门体验/拉频次活动

10.6 管理与复盘(分析场景)

场景 F1增值策略复盘

  • 组合指标SPI(客户层级) + ML(执行人付费关联)

  • 看什么

    • 高 SPI 客户是否被正确触达
    • 高 SPI 客户的增值转化是否集中在正确助教ML 高者)

场景 F2客户结构变化监控

  • 主用指数SPI

  • 看什么

    • 高 SPI 客户数量变化
    • 各层级客户占比变化
    • 高 SPI 客户的活跃/沉默迁移(结合 WBI

场景 F3门店经营质量诊断非直接派单

  • 组合信号

    • SPI 高 客户群体的 WBI 是否整体抬升(高价值流失预警)
    • SPI 高 客户群体的 MS 是否持续走低(热度下降)

11. 运营使用规则(落地建议)

11.1 统一原则

  • NCI/WBI 决定“要不要优先触达”
  • SPI 决定“投入多大资源、用什么档位策略”
  • OS/RS/MS/ML 决定“谁来做、什么时候做、谁更容易做成”

11.2 一个实用的组合模板

新客转化

  • 选人群:NCI_convert 高
  • 分档:SPI 高/中/低
  • 落人:OS(若已有关系)否则新客官
  • 增值时机:MS 高 再推,执行人选 ML 高

老客召回

  • 选人群:WBI 高
  • 分档:SPI 高 优先人工,SPI 低 低成本触达
  • 落人:OS=MAIN,若无归属则公海召回组
  • 若涉及储值:执行人优先 ML 高

12. 验收标准(数据与业务)

12.1 数据正确性

  • SPI_raw 在新增消费/充值后总体应单调不减(同等其他条件下)
  • score_speed_raw 在近30天消费速度高于近90天基线时应提升
  • score_stability_raw 仅使用近90天数据不引用 180 天)
  • 展示分稳定:在总体分布无大变化时,display_score 不应异常跳变(启用 EWMA

12.2 业务可用性

  • 运营可基于 SPI 完成客户分层(高/中/低)
  • 运营可在 NCI/WBI 队列中使用 SPI 做资源投入分层
  • 增值推荐场景可用 SPI + ML + OS 形成可执行规则

13. 风险与控制

  1. 异常大单抬高 SPI

    • 控制Winsorize + 压缩变换 + 稳定性子分90天覆盖率
  2. 充值替代真实消费导致高估

    • 控制:充值在 Level 子分中权重较低(辅助信号)
  3. 短期活动造成速度异常升高

    • 控制:速度项只部分加权;稳定性项用于修正
  4. 跨门店可比性问题

    • 控制SPI 默认用于门店内排序;如需跨店对比,需后续增加门店标准化层

14. 上线计划(建议)

Phase 1影子跑数12 周)

  • 后台计算 SPI不对运营展示
  • 验证分布、极值、客户样本解释性

Phase 2看板展示与规则试运行24 周)

  • 接入 NCI/WBI 队列的辅助分档
  • 先用于“投入强度分层”,不直接自动派单

Phase 3策略联动

  • 用于活动名单筛选、增值推荐档位
  • ML/OS/MS 联动形成自动建议

15. 研发实现清单(交付物)

  1. 新增任务:SpendingPowerIndexTask

  2. 新增结果表:dws_member_spending_power_index

  3. 新增配置:cfg_index_parametersindex_type='SPI'

  4. 新增看板字段:

    • SPI_display
    • Level/Speed/Stability 子分展示
  5. 新增运营策略读取逻辑(可选):

    • NCI/WBI 队列中读取 SPI 做资源分档

16. 附录:公式与约定(实现参考)

16.1 指数衰减(如后续引入时间衰减特征)

[ decay(d; h)=exp(-ln(2)\cdot d / h) ] (半衰期形式,d=h 时权重降为 0.5([维基百科][2])

16.2 展示分映射(沿用现有 BaseIndexTask

  • P5/P95 Winsorize
  • compression_mode: none / log1p / asinh
  • MinMax → [0,10]
  • 可选 EWMA 分位平滑(ewma_alpha([维基百科][1])