决策科学交互式教学 Notebooks —— 19 个端到端行业实战场景¶
一句话总结¶
19 个 Jupyter Notebooks 覆盖了金融风控、营销分析、运营优化、战略决策和风险评估五大领域——每一个 Notebook 都是独立可运行的端到端案例,从模拟数据生成到模型评估到业务建议的完整闭环。
设计哲学¶
这 19 个 Notebooks 与 /workspace/code-examples/ 下的生产级代码形成 教学↔生产 的双层结构:
教学层 (Notebooks) 生产层 (code-examples)
───────────────────── ─────────────────────
模拟数据 + 简化模型 真实数据 + 完整 Pipeline
教学友好,逐行解释 模块化架构,可部署
概念验证 工程实践
───────────────────── ─────────────────────
↕ 交叉引用:Notebooks 指向 code-examples 获取更深实现
逐域 Notebook 映射¶
域 1: 金融风控 (4 个 Notebooks)¶
| Notebook | 核心方法 | 对应生产实践笔记 |
|---|---|---|
01-credit-scorecard |
WoE + IV + Logistic 回归评分卡 | → 「信用风险与客户流失建模实战」 |
02-churn-prediction |
Kaplan-Meier + Cox PH 生存分析 | → 「因果推断与贝叶斯建模工具链」(lifelines) |
03-fraud-detection |
SMOTE 过采样 + LightGBM | → 「信用风险与客户流失建模实战」 |
04-portfolio-optimization |
Monte Carlo + Markowitz 有效前沿 | → 「量化金融与投资组合工具链」 |
重点 Notebook 分析:
01-credit-scorecard — 信用评分卡标准流程¶
- 业务场景:消费金融公司日均 5000+ 贷款申请,人工审批 2-3 天,坏账率 8.5%
- 建模过程:数据探索 → WoE 分箱 → IV 筛选 (>0.02) → 逻辑回归 → 评分刻度转换 (PDO=20)
- 业务目标:坏账率 < 6%,审批时效 < 5 分钟
- 核心收获:评分卡的 WoE 编码使类别变量可被线性模型使用,IV 筛选避免了"垃圾桶建模"(把所有变量丢进模型)
02-churn-prediction — 生存分析入门¶
- 关键输出:按合同类型(月付/年付/两年)分组的 Kaplan-Meier 生存曲线 + Cox PH 风险比
- 核心假设检查:比例风险假设——年付客户的流失风险是月付客户的 0.45 倍(且这个风险比在时间上恒定)
域 2: 营销分析 (4 个 Notebooks)¶
| Notebook | 核心方法 | 对应生产实践笔记 |
|---|---|---|
05-clv-modeling |
BG/NBD + Gamma-Gamma | → 「营销科学与客户分析工具链」 |
06-mmm |
线性回归 MMM + ROI | → 「营销科学与客户分析工具链」 |
07-pricing-negotiation |
对数回归 + 价格弹性 | → 「营销科学与客户分析工具链」 |
08-customer-segmentation |
RFM + K-Means + PCA | → 同上 |
重点 Notebook 分析:
06-mmm — 营销组合建模入门¶
- 简化版 MMM:
Sales = β₀ + β₁×TV + β₂×Digital + β₃×Social + ε - 输出:每个渠道的 ROI(TV: 340%, Digital: 520%, Social: 280%)、收入贡献占比
- 局限提示:这个简化版没有 Adstock 和饱和效应——实际的 MMM 需要非线性变换(如 LightweightMMM 的 Hill 函数饱和曲线)。详见「营销科学与客户分析工具链」
- → 概念笔记「关联不等于因果」:线性回归 MMM 估计的是关联,不是因果——"增加 Social 预算 10%,回归说收入增加 3.3%" ≠ "增加 Social 预算导致收入增加 3.3%"
07-pricing-negotiation — 定价科学¶
- 价格弹性:ε = %ΔQ / %ΔP = -1.8(价格每上涨 1%,需求下降 1.8%——弹性需求)
- 最优价格:P* = MC × ε/(1+ε) = 成本 × 加价因子
- → 概念笔记「博弈论基础」:定价不是单方优化——竞争对手的反应会改变你的需求曲线。单方优化的最优价格在竞争环境中是次优的(Bertrand 竞争会压到边际成本)
域 3: 运营优化 (4 个 Notebooks)¶
| Notebook | 核心方法 | 对应生产实践笔记 |
|---|---|---|
09-dynamic-pricing |
库存约束 + 动态定价 | → 「运筹优化求解器生态」 |
10-production-planning |
线性规划 (linprog) | → 「运筹优化求解器生态」 |
11-demand-forecasting |
Holt-Winters + 安全库存 | → 「运筹优化求解器生态」 |
12-vehicle-routing |
最近邻 + 2-opt 局部搜索 | → 「运筹优化求解器生态」 |
重点 Notebook 分析:
09-dynamic-pricing — 收益管理¶
- 机制:库存 100 件,时间 100 期。需求 = max(0, 基础需求 - β×价格),动态调价以在库存耗尽前最大化总收入
- 结果:动态定价总收入比固定 $50 定价高 15-25%
- → 概念笔记「自适应实验与多臂老虎机」:动态定价是多臂老虎机的一个变种——每个价格是一个"臂",但需求随库存和时间变化(非平稳 Bandit)。真实在线零售商使用 Thompson Sampling 而非解析最优解,因为需求函数未知且随时间变化
12-vehicle-routing — 启发式优化¶
- 最近邻启发式:从 depot 出发,每次去最近未访问的城市。贪心——不能保证全局最优但 O(n²) 可计算
- 2-opt 改进:遍历所有边对 {A-B, C-D},如果重新连接 {A-C, B-D} 后总距离缩短,执行这个 swap。重复直到无法改进
- 局限:2-opt 只能找到局部最优(无法跳出"深谷")。对于大规模 VRP,需要 OR-Tools 的 CP-SAT 求解器(全局最优)或 DEAP 的遗传算法(近似最优)
域 4: 战略决策 (3 个 Notebooks)¶
| Notebook | 核心方法 | 对应笔记 |
|---|---|---|
13-mcda |
TOPSIS + AHP | → 概念笔记「决策理论三张面孔」 |
14-product-growth |
病毒增长模型 | → 概念笔记「网络科学——从个体交互到集体涌现」 |
15-saas-revenue-governance |
MRR 仪表板 + Rule of 40 | → 概念笔记「度量选择是元决策」 |
重点 Notebook 分析:
13-mcda — 多准则决策¶
- TOPSIS:计算每个供应商到"理想解"(所有指标最好)和"负理想解"(所有指标最差)的加权距离,选择相对最接近理想解的供应商
- AHP:成对比较矩阵("成本比质量重要 3 倍")→ 特征向量法求权重 → 一致性检验(CR < 0.1)
- → 概念笔记「决策理论三张面孔」:MCDA 是规定决策理论在"多目标且目标之间存在权衡"时的操作化——你无法同时最小化成本和最大化质量,MCDA 帮你显式化这个权衡
14-product-growth — 病毒增长引擎¶
- 模型:
新用户_t = 有机增长_t + 病毒系数 × 活跃用户_{t-1} - 病毒系数敏感性:0.05(几乎无病毒增长)→ 0.15(中等增长)→ 0.25(爆发式增长)
- 临界点:病毒系数 > (1 - 留存率) 时,产品自动增长(不需要有机获客)。这就是
R₀ > 1在产品增长中的等价条件 - → 概念笔记「网络科学——从个体交互到集体涌现」:病毒增长 = 网络上的 SIR 传播模型——每个"感染"用户以概率 p 感染邻居,网络拓扑决定传播速度和最终渗透率
15-saas-revenue-governance — SaaS 的健康仪表板¶
- 核心指标:MRR(月经常性收入)、ARPU(每用户平均收入)、Churn Rate、LTV/CAC 比率、Rule of 40
- Rule of 40:增长率% + 利润率% > 40 → "健康"。增长 30% + 利润 15% = 45 → 健康;增长 10% + 利润 25% = 35 → 警告
- MRR 瀑布图:上月 MRR + 新客户 MRR + 扩展 MRR - 流失 MRR - 降级 MRR = 本月 MRR。可视化收入变化的来源
- → 概念笔记「度量选择是元决策」:Rule of 40 是一个度量——它强制平衡增长和利润。如果你只看增长率(不看利润),你会不惜一切代价追求增长(2021年SaaS泡沫);如果你只看利润(不看增长),你会被增长更快的竞争对手吞掉
域 5: 风险评估 (3 个 Notebooks)¶
| Notebook | 核心方法 | 对应笔记 |
|---|---|---|
16-bayesian-risk |
Beta-Binomial 更新 + 决策边界 | → 「决策科学与安全风险工具」 |
17-voi |
决策树 + EVPI + 研究价值 | → 「决策科学与安全风险工具」 |
19-security-roi |
Monte Carlo ROI + 组合优化 | → 「决策科学与安全风险工具」 |
重点 Notebook 分析:
16-bayesian-risk — 贝叶斯风险评估的精确教学¶
- 设定:先验 Beta(2,10)——你初始认为风险概率约 16%(2 次成功 / 12 次试验的信息量),观测到 3/100 事件后 → 后验 Beta(5,107)——均值 4.5%,95% 可信区间 [1.8%, 8.5%]
- 决策边界:如果行动成本 < P(失败) × 失败损失 → 采取行动。P(失败) 来自后验分布的尾部概率
- 核心收获:先验信息量(α+β=12)决定了数据需要多少才能压倒先验——如果先验是 Beta(20,100)(很强先验),3/100 的数据几乎不会改变它
- → 概念笔记「贝叶斯与频率学派分歧」:频率学派只能告诉你 p-value("如果真实风险是 10%,观测到 ≤3/100 的概率"),贝叶斯直接告诉你 P(风险 > 10% | 数据) = 后验尾部面积——这是决策者需要的答案
17-voi — 信息价值的完整计算¶
- 决策树:决策节点 → 机会节点(θ 的不确定性)→ 终端节点(payoff)
- EVPI (完美信息价值):
E[完美信息下的收益] - E[当前决策的收益]= $750K - 研究测试价值:灵敏度 80%、特异度 70%、成本 $50K → 净价值 $180K(值得做)
- 敏感性分析:研究成本高于 $230K 时,净价值变负——不做研究更好
- → 概念笔记「决策理论三张面孔」:VoI 计算是规范决策理论的"皇冠"——它不仅告诉你最优行动是什么,还告诉你在采取行动前获取更多信息是否值得
19-security-roi — 安全投资组合选择¶
- Monte Carlo 模拟:对每种安全控制的成本和收益分布做随机采样 → 生成 ROI 分布(而不仅仅是点估计)
- 关键输出:P(ROI > 100%)——安全控制有多大的概率产生正回报?如果最可能 ROI 是 150% 但 40% 概率 ROI < 0%,这个控制风险太大
- 组合优化:在 $150K 预算约束下,枚举所有 5 种控制的 2⁵=32 种组合,找到最大期望 ROI 组合
- → 概念笔记「概率分布选择不是数学偏好」:安全控制的收益分布假设(正态 vs 对数正态)决定了 ROI 尾部——如果真实收益分布是偏态的(少量控制措施产生了不成比例的保护),正态假设低估尾部,对数正态更准确
核心洞察¶
1. "模拟数据"是教学的工具,不是偷懒¶
19 个 Notebooks 全部使用 np.random 生成模拟数据——这不是因为找不到真实数据,而是因为:
- 因果已知:在模拟数据中,你知道"真实"的价格弹性、违约概率、病毒系数——你可以验证方法是否恢复了你设定的参数
- 可复现:任何人运行同一个 Notebook 得到相同的结果(np.random.seed(42))
- 教学清晰:模拟数据没有真实数据的"脏"(缺失值、异常值、标签噪音),让方法本身成为焦点
2. Notebooks → code-examples 的爬升路径¶
Notebook 入门 code-example 进阶
───────────────────── ─────────────────────
06-mmm: 线性回归 MMM LightweightMMM: 贝叶斯分层 MMM
10-production-planning: OR-Tools: CP-SAT 全局最优
linprog 小规模 LP 大规模离散优化
12-vehicle-routing: OR-Tools VRP solver:
最近邻 + 2-opt 10,000+ 节点的精确解
04-portfolio: Monte Carlo skfolio: sklearn API +
Markowitz Copula 分布建模
05-clv: lifetimes 库 PyMC-Marketing: BG/NBD
BG/NBD + Gamma-Gamma + CSA
3. 每个 Notebook 都是一个"决策的故事"¶
这不是 100 个互不相关的代码片段——每个 Notebook 有一个清晰的叙事弧: 1. 业务场景("消费金融公司每天收到 5000+ 贷款申请...") 2. 数据模拟("我们生成 10,000 个借款人的历史数据...") 3. 建模("使用 WoE 编码将类别变量转化为风险信号...") 4. 评估("模型 KS 值 0.35,Gini 系数 0.42...") 5. 决策建议("建议将审批阈值设定为 600 分,预计坏账率 5.5%...")
这个叙事结构将技术 Notebook 转化为决策备忘录——不仅仅是代码,更是支持决策的论证。
跨域链接¶
- → 概念笔记「度量选择是元决策」:多种 Notebook 面临度量选择——Model AUC vs KS vs Gini(信用评分),Accuracy vs Precision-Recall(欺诈检测),Sharpe vs Sortino vs Max Drawdown(组合优化)
- → 概念笔记「概率分布选择不是数学偏好」:模拟数据的选择反映了你对数据生成过程的假设——正态需求假设(动态定价)、对数正态收益(组合优化)、Beta 先验(风险评估)
- → 概念笔记「决策理论三张面孔」:Notebooks 13-17 直接展示了三张面孔——TOPSIS/AHP(规范层:应该怎样决策)、VoI 决策树(规定层:信息不足时怎样决策)、安全 ROI Monte Carlo(描述层:不确定性下怎样评估)
- → 概念笔记「贝叶斯与频率学派分歧」:Notebook 16 (bayesian-risk) vs Notebook 03 (fraud-detection with p-values) ——贝叶斯后验直接回答决策者的"风险超过阈值的概率是多少?",频率学派只能控制 Type I/II 错误率
- → 概念笔记「自适应实验与多臂老虎机」:Notebook 09 (dynamic-pricing) — 动态定价 = 非平稳 Bandit,库存约束 = Bandit 的有限视界
- → 概念笔记「网络科学——从个体交互到集体涌现」:Notebook 14 (product-growth) 的病毒系数是 R₀ 的等价概念——> 1 则自主增长(流行病爆发),< 1 则需要持续外部输入(流行病消退)
- → 概念笔记「关联不等于因果」:Notebook 06 (mmm) 的线性回归 = 关联建模,不是因果建模——"广告支出与销售相关" ≠ "广告支出导致销售"。因果 MMM 需要 Geo-experimentation 或 IV
- → 概念笔记「因果推断方法阵营」:多个 Notebook 的下一步——01-credit-scorecard 的评分卡衡量的是相关(区分好/坏客户),next step: CATE("降低利率对违约概率的因果效应")