两阶段障碍模型:预测零膨胀结果

为什么一个模型不能完成两项工作《两阶段障碍模型:预测零膨胀结果》一文首先出现在《迈向数据科学》上。

来源:走向数据科学

简介

,我们经常遇到结果具有不寻常分布的预测问题:大量零与正值的连续或计数分布相结合。如果您曾在任何面向客户的领域工作过,那么您几乎肯定遇到过这种情况。考虑预测客户支出。在任何一周内,您平台上的绝大多数用户根本不会购买任何东西,但购买的用户可能会花费 5 美元到 5,000 美元不等。保险索赔遵循类似的模式:大多数保单持有人在特定季度内不会提出任何索赔,但索赔的规模却相差很大。您会在贷款预付款、员工流动时间、广告点击收入和无数其他业务成果中看到相同的结构。

大多数团队的本能是寻求标准回归模型并尝试使其发挥作用。我已经多次看到这种情况了。有人拟合了 OLS 模型,对一半的客户群进行了负面预测,将下限增加为零,然后就到此为止了。或者他们尝试对数转换,遇到 $\log(0)$ 问题,添加 $+1$ 偏移量,并希望得到最好的结果。这些解决方法可能有效,但它们掩盖了一个基本问题:数据中的零值和正值通常是由完全不同的过程生成的。永远不会购买你的产品的客户与偶尔购买但本周没有购买的客户有着根本的不同。在单个模型中以相同的方式对待它们会迫使算法在两个组上做出妥协,而且通常在每个组上都表现不佳。

在本文中,我将介绍障碍模型背后的理论,提供有效的 Python 实现,并讨论在生产中部署这些模型时需要考虑的实际注意事项。

已经熟悉动机的感兴趣的读者可以直接跳到实现部分。

标准方法的问题

两阶段跨栏模型

实施常见陷阱