⚠️ 需注意:此过滤会排除所有飞行 1-2 次的旅客,包括高价值首乘新客(首次公务舱但未复购)——这批人是“新客流失预警”的核心目标。建议改为两套样本并行:频次≥3 用于 CRC 计算 + 频次 1-2 的高客单价旅客单独标记。
核心思路
不以固定的 90 天为阈值,而是基于每个旅客自身的历史出行节奏来判定是否“变心”。一个习惯每月飞行的商旅人士,60 天不飞已是严重异常;而一个每季度才飞一次的旅客,90 天不飞未必是流失。
本文整合两个视角:Gemini 提出的 CRC(流失风险系数)行为模型与喜乐君的价值分层框架,形成完整的流失预警决策矩阵。
一、Gemini 方案:CRC 流失风险系数模型
第一步:选择高置信度样本
信噪比过滤:剔除数据库中约 90% 的“一面之缘”过客。仅选取历史飞行频次 ≥ 3 次的旅客纳入分析,确保计算结果具备统计学意义上的行为规律。
第二步:流失风险系数(CRC)定义
采用双维坐标衡量旅客是否变心,比“一刀切”的 90 天更科学:
CRC = 距最后出行天数 (REC) / 平均出行间隔| 变量 | 定义 | 说明 |
|---|---|---|
| REC | `DATEDIFF(CURRENT_DATE, last_flight_dt)` | 最近一次出行距今天数,捕捉即时活跃度 |
| 平均出行间隔 | `总跨度天数 / (飞行频次 - 1)` | 基于旅客个人历史节奏,反映“正常”出行频率 |
示例:某旅客 3 次飞行跨度 200 天 → 平均间隔 = 200/(3-1) = 100 天。若 REC = 250 天 → CRC = 2.5,说明已超过其正常节奏 2.5 倍,属于高风险。
⚠️ 需注意:“总跨度天数”需明确定义——是 last_flight_dt - first_flight_dt 还是分析窗口内的跨度?前者会受早期历史影响,建议限定在近 12 或 24 个月内计算。第三步:旅客流失风险定级规则
系统按以下优先级自动判定旅客状态(优先级从上到下,命中即停止):
| 优先级 | 风险等级 | 定级逻辑 | 营销策略 | 业务含义 |
|---|---|---|---|---|
| 1 | 无风险 | REC ≤ 45 天(保护期) | 常规关怀 | 活跃旅客,仍在正常出行节奏中 |
| 2 | 已流失 | REC > 360 天 或 CRC ≥ 5.0 | 深度唤醒 | 严重偏离个人节奏,基本可视为流失 |
| 3 | 高风险 | CRC ≥ 2.0 | 精准挽回 | 出行间隔已达正常 2 倍以上,高风险信号 |
| 4 | 低风险 | CRC ≥ 1.2 | 轻量促活 | 略超正常节奏,低强度提醒即可 |
⚠️ 两处可商榷: ① 保护期 45 天偏短——航空出行周期比零售长,商务客月均 1-2 次已是高频,建议改为 60-90 天并区分商务/休闲客群; ② 此分级完全未纳入价值维度——一个 CRC=1.5 的高价值核心客户,和一个 CRC=3.0 的低价值临时旅客,优先召回谁?答案取决于价值,不是 CRC 绝对值。
graph TD
INPUT["输入:旅客 REC & 平均间隔"] --> P1{"保护期检查<br/>REC ≤ 45天?"}
P1 -->|"✅ 是"| SAFE["🟢 无风险<br/>刚飞过,正常间歇"]
P1 -->|"否"| P2{"自然休眠<br/>REC > 360天?"}
P2 -->|"✅ 是"| SLEEP["🔵 已流失<br/>断档超一年,沉睡池"]
P2 -->|"否"| CALC["计算 CRC<br/>= REC / 平均间隔"]
CALC --> P3{"CRC ≥ 1.2?"}
P3 -->|"否"| LOW["🟢 无风险<br/>节奏正常"]
P3 -->|"是"| P4{"CRC ≥ 2.0?"}
P4 -->|"否"| MID["🟡 低风险<br/>轻量促活"]
P4 -->|"是"| P5{"CRC ≥ 5.0?"}
P5 -->|"否"| HIGH["🔴 高风险<br/>精准挽回"]
P5 -->|"是"| DEAD["⚫ 已流失<br/>业务死亡·全面挽回"]
style SAFE fill:#dcfce7,stroke:#22c55e
style LOW fill:#dcfce7,stroke:#22c55e
style MID fill:#fef3c7,stroke:#d97706
style HIGH fill:#fee2e2,stroke:#ef4444
style SLEEP fill:#dbeafe,stroke:#2563eb
style DEAD fill:#e0e7ff,stroke:#4338ca第四步:运营洞察与执行建议
| 运营动作 | 具体建议 |
|---|---|
| 识别波峰 | 利用仪表板查看“最后出行月份”分布,锁定制定的抢救窗口期 |
| 差异化跟进 | 高价值高风险旅客优先分配人工座席跟进,普通风险旅客通过自动化推送权益 |
| 闭环追踪 | 下载明细时,优先按**常旅客等级**和**历史贡献价值**排序 |
二、框架对比:Gemini CRC 模型 vs 价值分层框架
graph TD
subgraph Gemini["🤖 Gemini CRC 模型"]
G1["维度:纯行为时间节奏"]
G2["样本:仅频次≥3旅客"]
G3["阈值:个人定制CRC倍数"]
G4["✅ 个性化,避免一刀切"]
G5["❌ 排除新客,忽略价值差异"]
G6["适用:中高频旅客行为监控"]
G1 --> G2 --> G3 --> G4
G3 --> G5 --> G6
end
subgraph Ours["📊 价值分层框架(喜乐君)"]
O1["维度:价值+忠诚度+体验信号"]
O2["样本:全量旅客分类处理"]
O3["阈值:固定+分群差异化"]
O4["✅ 覆盖全面,优先级明确"]
O5["❌ 固定阈值不够个性化"]
O6["适用:全客群分层运营"]
O1 --> O2 --> O3 --> O4
O3 --> O5 --> O6
end
Gemini --> MERGE["🔀 互补融合"]
Ours --> MERGE
MERGE --> RESULT["CRC×价值分层<br/>二维预警矩阵"]
style Gemini fill:#dbeafe,stroke:#2563eb
style Ours fill:#fef3c7,stroke:#d97706
style MERGE fill:#fce7f3,stroke:#db2777
style RESULT fill:#bbf7d0,stroke:#22c55e| 维度 | Gemini CRC 模型 | 价值分层框架(喜乐君) |
|---|---|---|
| 分析维度 | 纯行为(时间节奏) | 价值 + 忠诚度 + 体验信号 |
| 样本范围 | 仅频次≥3 旅客 | 全量旅客(分类处理) |
| 阈值方式 | 个人定制(CRC 倍数) | 固定 + 分群差异化 |
| 核心优势 | 个性化,避免一刀切 | 覆盖全面,决策优先级明确 |
| 主要短板 | 排除新客,忽略价值差异 | 固定阈值不够个性化 |
| 适用场景 | 中高频旅客的行为监控 | 全客群分层运营 |
三、融合方案:CRC × 价值分层二维预警矩阵
CRC 模型解决“谁在偏离自己的节奏”,价值分层解决“偏离的这个人值不值得花资源召回”。两者结合,用二维矩阵做流失预警决策:
CRC 风险等级 × 价值分层 二维预警矩阵
| CRC 风险 | 核心客户(高价值+高忠诚) | 机会客户(高价值+低忠诚) | 潜力客户(低价值+高忠诚) | 一般客户(低价值+低忠诚) |
|---|---|---|---|---|
| **高风险**(CRC ≥ 2.0) | **🔴 P0 最高优先级** 专属坐席,一对一挽回 | **🔴 P0 紧急唤醒** 定向优惠+服务升级 | P1 批量促活 低成本触达 | P2 可放弃 或自动化推送 |
| **低风险**(1.2 ≤ CRC < 2.0) | **P1 重点关注** 预警通知,提前关怀 | P1 轻度激活 推送优惠券 | P2 提醒即可 自动化消息 | P3 暂不干预 |
| **安全**(CRC < 1.2) | 常规维护 专属权益推送 | 关注进展 引导提升忠诚度 | 培养计划 价值提升引导 | 常规运营 |
注:频次<3 无法计算 CRC 的旅客(含高价值首乘新客),单独用 REC 判定并标记为“新客流失风险”,按客票金额排序优先处理。此即“新客流失预警”的分支逻辑。
四、典型场景演练
场景 A:商旅高管即将流失(高价值核心客户)
月均飞行 2 次,近 5 年高频出行。但最近一次飞行距今 210 天。平均间隔 25 天 → CRC = 8.4(远超 5.0)。
📌 行动:人工专属坐席深度跟进,核查是否投诉/竞品/换工作,提供 VIP 专属回归礼遇。
场景 B:公务舱首乘后沉寂(高价值首乘新客)
仅飞行 1 次(公务舱,客单价 8,000 元),距今 130 天。无法计算 CRC(频次不足),但 REC=130 天,客单价高。
📌 行动:新客流失预警分支介入,分析首乘航线是否已取消/调整,推送同航线优惠券。
场景 C:老客节奏放缓(忠诚低频客户)
过去 2 年飞行 6 次(每季度 1 次),平均间隔 120 天。最近一次距今 200 天 → CRC = 1.67(高风险)。
📌 行动:中等优先级,批量推送升舱体验券,观察是否促成复购。
场景 D:低频低价过客(临时低价值)
飞行 2 次(均为特价经济舱),距今 200 天。无法计算 CRC,且客单价低,无投诉等异常信号。
📌 行动:放弃主动召回,仅纳入常规自动化推送列表,不分配人工资源。
graph TD
subgraph 四象限行动矩阵["📋 四类场景行动矩阵"]
direction LR
A["场景A<br/>商旅高管<br/>🔴 P0 一对一"]
B["场景B<br/>公务舱首乘<br/>🔴 P0 紧急唤醒"]
C["场景C<br/>老客放缓<br/>🟡 P1 批量促活"]
D["场景D<br/>低频过客<br/>⚪ P3 放弃召回"]
end
四象限行动矩阵 --> OUT["按 CRC×价值<br/>自动分级调度"]
style A fill:#fee2e2,stroke:#ef4444,color:#991b1b
style B fill:#fee2e2,stroke:#ef4444,color:#991b1b
style C fill:#fef3c7,stroke:#d97706,color:#92400e
style D fill:#f1f5f9,stroke:#94a3b8,color:#64748b
style OUT fill:#dbeafe,stroke:#2563eb,color:#1e40af五、技术实施要点
SQL 核心字段映射
| 计算变量 | 来源表/字段 | 公式 |
|---|---|---|
| REC | `last_flight_dt` | `DATEDIFF(CURRENT_DATE, last_flight_dt)` |
| 总跨度 | `first_flight_dt` + `last_flight_dt` | `DATEDIFF(last_flight_dt, first_flight_dt)` |
| 飞行频次 | `domestic_flight_cnt_12m + intl_flight_cnt_12m` | 直接求和 |
| 平均间隔 | 计算字段 | `总跨度 / NULLIF(频次 - 1, 0)` |
| CRC | 计算字段 | `REC / NULLIF(平均间隔, 0)` |
| 价值分层 | `lifecycle_phase` + `lr_fmc_segment` | 按现有 LRFMC 模型 + 生命周期标签 |
CRC 模型的三项工程注意事项
| # | 风险 | 防范措施 |
|---|---|---|
| 1 | **除零异常**——频次=1 时平均间隔分母为 0 | 频次<3 不计算 CRC,单独走 REC 判定分支 |
| 2 | **极短间隔旅客的 CRC 失真**——短期内高频出行者(如差旅季),平均间隔仅 7 天,REC=60 天即 CRC=8.6,被误判为“已流失” | 增加最小间隔门槛(如平均间隔<15 天时用 15 天替代),或叠加“近 30 天航班时刻波动”校验 |
| 3 | **first_flight_dt 远早导致总跨度虚高**——若旅客 5 年前首次飞行,最近 1 年高频但被 5 年跨度稀释 | 总跨度限定为近 12 或 24 个月,避免历史数据干扰 |
作者:喜乐君 · v1.1 · 2026-06-13
No comments yet