程序员数学:如何用贝叶斯定理和产品经历吵架

134 阅读6分钟

本文是一个程序员利用自己的数学知识, 偷偷测量产品经理的顽固程度, 最终赢得胜利的故事...

第一回合 新来了一个产品经理

公司新来了一个十年经验的产品经理, 上来就对产品一通指点:

image-20240403223334239.png

作为上班五年, 却有十年工作经验的老开发, 我并不认同她的观点:

  • 用户已经习惯了
  • 系统各个地方都是这个规范
  • 不是影响用户关注的主要因素
  • 更重要的是, 我懒得改了!!!

于是我据理力争:

image-20240403225522453.png

好吧, 我实在争吵不过, 就先上线灰度一部分用户, 给产品看看效果, 让她好输得明白点。

第二回合 和产品赌二十块钱

为了让产品输得明白点, 我熬了一个通宵把需求干上线。灰度了一部分用户, 第一天共有一百个用户访问了弹窗, 其中 53 个点击了关注, 另外 47 个点击取消。

这个数据是否足够说服产品了呢? 作为严谨的理工男, 我要先做一些计算说服我自己。

根据我十年经验, 之前的版本用户点关注的概率大约是 50%。产品既然认为新版本更好, 那么关注率至少要达到 60% 吧, 所以我们这里就有两个假设, 分别记为 H1, H2:

  • H1: 新版本弹窗用户的关注率为 50% (维持不变, 我胜)
  • H2: 新版本弹窗用户的关注率为 60% (有所提升, 产品胜)

"新版本弹窗目前已经有 53 个用户点击了关注, 另外 47 个点击取消", 这个是事实。而 "新版本弹窗用户的关注率为 50%" 这个是假设。如果假设为真, 事实发生的概率就叫做 似然, 衡量的是假设对这个事实的解释性有多强。

  • 如果 H1 是对的, 那么用户点关注与取消的概率就都是 0.5, 事实发生的概率就为 0.5^100, 计算得 H1 的似然为 7.89e-31(保留了三位有效数字), 可以记为 P(D|H1), 表示 H1 为真时, 事实 D 发生的概率
  • 同理, H2 的似然为 (0.6^53)*(0.4^47), 计算得 3.46e-31, 记为 P(D|H2)

将 H1 的似然除以 H2, 我们就知道 H1 对事实的解释性比 H2 强多少了, 这个比值叫做 似然比, 又叫 贝叶斯因子

image-20240404001422910.png

如果大于1就说明 H1 的解释性更强, 越大就越强。我们计算一下, 发现结果为 2.28, 比 1 大了不少。这就去找产品经理掰回一局:

image-20240404003007930.png

产品坚决认为, 过去十年的经历都印证了他的想法, 这点数据不足以推翻。

为什么面对同样的数据, 产品经理和程序员的看法不同呢? 因为在测试真实数据前, 我们脑中其实就已经有了先入为主的想法, 这个就是 先验信念。产品经理的先验信念就是认为新版本效果会更好, 而程序员认为会维持不变, 即使他们都还没有拿到任何数据。

所以产品经理的看法不仅受到似然比的影响, 还受到她自己先验信念的影响。产品先验地认为 H1 比 H2 强多少倍, 这个就是 先验胜率。用先验胜率乘以似然比, 得到 后验胜率, 才是产品看到数据后的真正想法:

image-20240404005019901.png

先验胜率又要怎么知道呢? 只要用一个问题就能套出来:

image-20240404005215980.png

这就说明产品先验地认为 H2 要比 H1 强 20 倍, 所以 H1 对于 H2 的先验胜率就是 1/20

根据之前的似然比, 计算一下后验胜率为 (1/20)*2.28=0.114 , 远小于 1, 怪不得产品不信。

我们还需要提高下似然比, 如何提高呢? 似然比有个特点, 随着数据量越大, 它的值就会越极端。假如我后来获得 1000 条数据, 其中有 530 人点了关注。它相比 100 条数据, 53 人点了关注, 似然比会大很多, 虽然同样是 0.53 比例的人点了关注。这也比较符合人的直觉, 在见过大量吻合的数据后, 人们会更加确信他的假设, 这就是所谓的 "经验"。

假设一直是 0.53 比例的人点了关注, 我们可以画一张似然比和数据量的关系图:

image-20240404105824360.png

从图中可以看到, 为了能打破产品经理 20 的先验信念, 我们至少要收集 400 的数据量。(这里假设了收集的数据一直能维持 0.53 的关注率, 如果不能维持, 可能我们自己的信念都要改变了)。

不幸的是, 我遇到了一个赖皮产品经理, 她在得知我的计算方法后开始耍赖:

image-20240404111524077.png

每当我给出新的数据, 她总是耍赖提升先验信念, 这样下去永无止境啊。

不行, 我必须自己量化她的顽固程度(先验信念), 而不是靠她口述。

第三回合 顽固程度为 6520 的产品经理

我回忆了一下和她合作的上一个需求, 虽然没跟她赌钱, 但是最终用了1000 条数据, 其中只有 523 个用户满意, 才勉强说服她不要做新版本。依据这个, 我们可以计算下她真实的顽固程度到底是多少。

既然最终说服了她, 说明我们后验胜率肯定是大于 1 的, 具体是多少呢? 可以根据她当时的态度大概评估下:

后验胜率数据的强度
1~3有意思,但不能得出结论
3~20看起来我们有发现了
20~150支持假设的有力数据
>150支持假设的强有力数据

本表来源于参考书目

她上次只是 "勉强" 接受, 那后验胜率也不会过于乐观, 估计就在 3~20 之间, 假设就是 10。

同时可以根据数据算出似然比: 0.5^1000/(0.6^523*0.4^477)=65205.54

根据之前的后验胜率公式就可以算出后验胜率了:

image-20240404114108379.png

可以看出先验胜率大约为 1/6520, 产品先入为主地认为 H2 比 H1 要强 6520 倍。

果然比她口述得要大不少啊。

为什么这次能吵赢, 我们需要多少数据量, 继续画一张图:

image-20240404115553142.png

大概需要 1100 的数据量, 也还行。

不过, 人可能也是多变的, 有可能她前一段时间心情好, 顽固程度就是 6250, 最近天气不好, 就变成了 10000。有可能面对上一个问题时, 顽固程度是 6250, 而面对这个问题时, 就变成了 10000......

参考书籍

本文其实是一篇将贝叶斯假设检验应用于日常产品迭代的科普文, 灵感来源于书籍 《趣学贝叶斯统计》

s34245459.jpg

书中用很多贴近生活中的案例诠释了条件概率, 参数估计与假设检验的算法与思想。可以作为进一步阅读其他贝叶斯统计著作的启蒙。

参考文章

作者:元青

微信公众号 「技乐书香」