章节 01
正文
MCP协议赋能经典营销模型:将Bass扩散与BTYD模型变为AI可调用的统计工具
本文介绍一个MCP服务器实现,将经典的Bass产品扩散模型和BG/NBD、Pareto/NBD客户行为模型封装为AI代理可直接调用的工具,实现营销分析的智能化工作流。
MCP营销模型Bass扩散模型BG/NBDPareto/NBD客户行为分析AI代理统计建模客户终身价值
正文
本文介绍一个MCP服务器实现,将经典的Bass产品扩散模型和BG/NBD、Pareto/NBD客户行为模型封装为AI代理可直接调用的工具,实现营销分析的智能化工作流。
章节 01
fit_bass_diffusion | 拟合Bass扩散模型 | 累积采用时间序列 | 参数p, q, m及拟合曲线 |\n| fit_bg_nbd | 拟合BG/NBD模型 | RFM客户汇总表 | 参数r, α, a, b及客户级P(活跃) |\n| fit_pareto_nbd | 拟合Pareto/NBD模型 | RFM客户汇总表 | 参数r, α, s, β及客户级预测 |\n| score_model | 模型评分 | 模型名称、拟合参数、留出数据 | MAPE、BIC、对数似然 |\n\n## 技术实现:从数学公式到可调用工具\n\n### Bass扩散模型\n\nBass模型描述了新产品在市场的扩散过程,假设潜在客户分为两类:\n- 创新者:受外部影响采用产品(系数p)\n- 模仿者:受已采用者影响采用产品(系数q)\n\n累积采用曲线的微分方程为:\n\n$$S(t) = m \cdot \frac{1 - e^{-(p+q)t}}{1 + \frac{q}{p}e^{-(p+q)t}}$$\n\n其中 $m$ 是市场规模,$p$ 是创新系数,$q$ 是模仿系数。\n\n实现中使用非线性最小二乘法(NLLS)拟合累积采用数据,并通过高斯残差假设计算BIC。\n\n### BG/NBD模型\n\nBG/NBD(Beta-Geometric/Negative Binomial Distribution)模型假设:\n- 每个客户的交易率 $\lambda$ 服从Gamma分布\n- 每个客户在每次交易后以概率 $p$ 流失,$p$ 服从Beta分布\n- 客户只要未流失就会继续交易\n\n模型的关键输出包括:\n- P(活跃):给定观测历史后客户仍然活跃的概率\n- E[Y(t)]:未来t个时间单位的预期交易次数\n\n实现中使用最大似然估计(MLE)在log参数空间进行优化,确保参数正数约束。\n\n### Pareto/NBD模型\n\nPareto/NBD是BG/NBD的前身,同样使用Gamma-Poisson混合建模交易率,但用Pareto分布建模客户生命周期。\n\n这个模型的似然函数涉及超几何函数 $_2F_1$,实现中使用了Fader-Hardie技术笔记中的闭式表达式,并在log空间进行数值计算以保证稳定性。\n\n关键数值技巧:\n- 使用 log1mexp 处理两个相近正数相减的数值稳定性问题\n- 在log参数空间使用L-BFGS-B优化\n- 多起点优化避免局部最优\n\n## 代码结构与设计哲学\n\n### 项目结构\n\n\nsrc/diffusion_models_mcp/\n├── bass.py # Bass NLLS拟合 + 闭式累积函数\n├── bgnbd.py # BG/NBD MLE、P(活跃)、E[Y(t)]\n├── pareto_nbd.py # Pareto/NBD MLE,稳定的2F1似然\n├── rfm.py # RFM表验证\n├── scoring.py # MAPE、BIC、留出对数似然\n├── server.py # FastMCP服务器,四个工具\n└── simulate.py # 测试用的前向模拟\n\nscripts/\n└── demo.py # 端到端CDNOW演示\n\ntests/ # pytest:参数恢复 + schema验证\n\n\n### 设计决策\n\n项目作者明确说明了为何不直接使用现有的lifetimes或BTYD库:\n\n> "lifetimes和BTYD是优秀的库,但实习作品集不是。这里的重点是证明我能够阅读经典论文、推导每个客户的对数似然、进行数值实现(log空间、log-sum-exp、Pareto/NBD A0差值的log1mexp、log参数空间的多起点L-BFGS-B),并在模拟和真实数据上验证参数恢复——而不是包装第三方库并称之为项目。"\n\n这种"从零实现"的方法虽然工作量更大,但确保了:\n- 对模型数学的深入理解\n- 数值实现的稳定性\n- 结果的可验证性\n\n## 验证:参数恢复与基准测试\n\n### CDNOW数据集验证\n\n项目使用经典的CDNOW数据集(23,570名客户)进行验证,这是Fader-Hardie-Lee论文中使用的标准基准。\n\nBG/NBD参数对比:\n\n| 参数 | 实现结果 | FHL 2005论文 |\n|------|----------|--------------|\n| r | 0.241 | 0.243 |\n| α | 4.34 | 4.41 |\n| a | 0.73 | 0.79 |\n| b | 2.18 | 2.43 |\n\nPareto/NBD参数对比:\n\n| 参数 | 实现结果 | SMC 1987论文 |\n|------|----------|--------------|\n| r | 0.55 | 0.553 |\n| α | 10.30 | 10.58 |\n| s | 0.56 | 0.606 |\n| β | 10.04 | 11.66 |\n\n结果与经典文献报告的值在小数点后两位一致,验证了实现的正确性。\n\n### 演示脚本\n\nscripts/demo.py提供了完整的端到端演示:\n\n1. 在合成采用曲线上拟合Bass模型\n2. 从brucehardie.com下载CDNOW主数据集\n3. 按标准FHL基准分割:1997年Q1-Q3为校准期,Q4-1998年Q2为留出期\n4. 分别拟合BG/NBD和Pareto/NBD\n5. 报告各模型的留出MAPE和BIC\n\n如果网络下载失败,演示会自动回退到合成数据。\n\n## 使用方式:集成到AI工作流\n\n### 作为独立服务器运行\n\nbash\n# 使用uv(推荐)\nuv venv\nuv pip install -e \".[dev]\"\n\n# 运行服务器(stdio传输)\npython -m diffusion_models_mcp\n# 或\ndiffusion-models-mcp\n\n\n### 集成到Claude Code\n\nbash\nclaude mcp add diffusion-models-mcp -- python -m diffusion_models_mcp\n\n\n### 在任何MCP客户端中使用\n\n配置客户端指向相同的命令,服务器会发布四个工具并使用标准stdio传输。\n\n## 应用场景示例\n\n### 场景1:新产品上市预测\n\nAI代理可以调用fit_bass_diffusion分析历史类似产品的采用曲线,预测新产品的市场渗透轨迹,为库存规划和营销策略提供数据支持。\n\n### 场景2:客户细分与营销资源分配\n\n通过fit_bg_nbd分析交易数据,AI可以识别高价值客户群体,预测哪些客户可能流失,并建议针对性的留存策略。\n\n### 场景3:客户终身价值评估\n\nfit_pareto_nbd提供的P(活跃)和预期交易次数,可以帮助AI代理计算客户终身价值(CLV),优化获客成本(CAC)决策。\n\n### 场景4:自动化营销报告\n\nAI代理可以自动拟合模型、生成可视化、计算关键指标,并撰写包含统计洞察的营销分析报告。\n\n## 局限性与未来方向\n\n### 当前局限\n\n项目明确列出了当前未实现的功能:\n\n- 无协变量:不支持时间变化或客户级别的协变量(如客户年龄、渠道等)\n- 无时间变化参数:不支持非平稳Bass模型或GG/NBD\n- 无层次或完全贝叶斯拟合:仅提供点估计(MLE/NLLS),不提供后验分布\n- Bass的BIC计算:基于高斯残差拟似然(因为Bass用NLLS而非MLE拟合)\n- Pareto/NBD识别问题:在小样本中(s, β)山脊上的识别较松\n\n### 可能的扩展\n\n- 添加协变量支持(如季节效应、营销支出)\n- 实现贝叶斯版本(PyMC或NumPyro)\n- 添加更多模型(如GG/NBD、Gamma-Gamma spend模型)\n- 提供可视化工具(采用曲线、P(活跃)随时间变化等)\n\n## 结语\n\ndiffusion-models-mcp项目展示了如何将经典的营销科学模型与现代AI基础设施结合。通过MCP协议,这些经过数十年验证的统计工具变得可以被AI代理直接调用,实现了"经典方法+现代接口"的有趣组合。\n\n对于营销分析师和数据科学家,这意味着可以构建更智能的自动化工作流;对于学习这些经典模型的学生,这是一个从零实现、验证参数恢复的绝佳参考实现。\n\n---\n\n参考资源\n\n- 项目代码:https://github.com/narvix/diffusion-models-mcp\n- Bass, F. M. (1969). "A New Product Growth for Model Consumer Durables." Management Science\n- Fader, P. S., Hardie, B. G. S., & Lee, K. L. (2005). "'Counting Your Customers' the Easy Way..." Marketing Science\n- Schmittlein, D. C., Morrison, D. G., & Colombo, R. (1987). "Counting Your Customers..." Management Science