费米估算 | 产品面试中的估算问题解法
费米估算可以解决产品面试中的估算问题。本文介绍了费米估算的起源、原理、方法和案例,与大家分享!
前言:前段时间在分析大厂产品面试题,发现估算题目出现的概率蛮大。比如估算北京一年出租出去的房子数量,估算一个城市的加油站等,这类问题(Market Sizing)貌似没有已知条件。
查找相关资料后,才知道费米给出了一套解决这类问题的方法论。
费米问题的本质在于将未知问题逐步拆解成已知问题,通过建模和生活经验给出毛估。这篇文章会介绍下费米估算和如何解决这类Market Sizing估算问题。
大纲:
- 费米估算:起源
- 费米估算的原理
- 如何用费米估算Market Sizing问题
- 案例分析
- 总结
一、费米估算:起源
有这样的一个故事:
在一次芝加哥大学课堂上,费米问学生。芝加哥市有多少调琴师,学生们一脸茫然。费米提示把这个问题“分解成一些便于操作的小问题,然后鼓起勇气作猜测和假设”。
芝加哥有多少居民?可靠的估算是300万;平均每个家庭有多少人?4人;多少家庭有钢琴?大概三分之一,那么全市大约就有25万架钢琴;一架钢琴隔多长时间需要调音?平均5年,那么芝加哥平均每年有5万架次的钢琴需要调音;每个调音师每天能为多少架钢琴调音?4架;假设他一年工作250天,那么他每年约为1000架钢琴调音。
由此,费米和学生们推测,芝加哥市大概有50位钢琴调音师。
事后有人用电话号码簿加以验证,实际统计的结果与费米的猜测十分接近。
二、费米估算的原理
1. 费米估算的概念
费米估算指的是解决未知结果的估算问题,将复杂的问题拆解成小的、可知结果的部分。
将拆解出来的简单部分赋予实际意义,如果还不能得出结果,那就继续再拆解,直到拆解后的所有部分问题变成一个常识问题或者是比较容易解决的,从而将一个未知结果的问题逐步变得清晰。
2. 平均律
在将复杂的问题拆解成小的、可知结果的部分过程中,可能会存在估算,那么这样的估算会不会给最终结果带来很大的误差呢?
比如前面例子中,费米估算芝加哥有1/3家庭有钢琴,如果当时估算的是1/4,那结果就会不准确了吗?
其实在费米估算过程中,我们不是只有一次估算,我们会产生一系列的估算。比如估算芝加哥有1/3家庭有钢琴,同时也会估算一架钢琴平均5年调一次音。这些估算有的过高有的过低,相乘之后会相互抵消,回归到较为准确的平均值。
费米估算不是万能的,有个很重要的前提,我们的估算值是有实际数据或者生活经验支撑的。估算值不能偏离实际结果太远,要从实际结果、常识出发。比如费米在估算芝加哥每个家庭有4个人,换成我们来估算的话,我们不能拍脑袋直接估算芝加哥每个家庭有10个人。
这种脱离实际常识、数据的估算其实是瞎猜,瞎猜怎么能对呢?
三、如何用费米估算Market Sizing问题
最近在分析些产品面试题,发现一些大厂喜欢出这样的估算题目,比如:
估算杭州每年奶茶店的规模大小?
估算杭州一家奶茶店一天卖多少杯奶茶?
估算杭州有多少家奶茶店?
这类问题称为Market Sizing问题,有些同学在面试时碰到这类问题,如果没有提前了解这类题型,难以找到比较好的回答思路。
这类Market Sizing题型正好可以通过费米估算的法则来解决,将未知的数逐步拆解成已知的部分,从而将一个未知结果的问题逐步变得清晰。
Market Sizing问题在运用费米估算时,主要是通过需求端、供给端两个角度切入将问题拆解。这两个角度可以解决80%的Market Sizing问题,当然有些不涉及商品的规模、数量的问题,这两个角度可能解决不了。
那就需要对这个问题进行数学分析,列出公式,从而拆解。
费米估算步骤:
- 明确问题
- 分析是需求端问题还是供给端问题,或者两个角度都不是
- 问题拆解,列公式
- 计算
对问题进行拆解时,我们提倡按照不重不漏(MECE,Mutually Exclusive Collectively Exhausted)的原则 ,将问题层层拆解成子问题,从而找到问题的根源。
在对问题进行拆解的时候,我们需要注意两个问题。
1)避免把未知数拆解成新的未知数,而应该使得拆解后的元素变得可解决
举个例子,在“估算杭州一家奶茶店一天卖多少杯奶茶?”中,我们从需求端出发,先是估算杭州常住人口为1000万,接着估算
每天喝奶茶的人=常住人口*渗透率
假设渗透率是1%,估出每天喝奶茶的人是10万,每人每天喝一杯。然后估算杭州有1000家奶茶店,最终得出每家奶茶店一天卖100杯奶茶。
问题来了,我们刚刚拆解杭州奶茶店这个元素,我们估算是1000家,其实这是个特别关键的值。这个值直接影响到了每家奶茶店平均卖多少杯奶茶。但杭州有多少家奶茶店这个值其实也是个未知数(并不能通过常识或者数据得知,别跟我说去百度一下)。从一个未知数继续推出一系列未知数,这样
所以拆解后的元素不能还是未知数,如果还是未知数则需要继续拆解,使得拆解后的元素变得可解决。
2)对拆解后的部分赋予数值时,避免改变数值真实范围
不改变数值真实范围指的是在赋予计算公式中各元素以实际意义的时候,不扩大或者缩小范围,按照数据或者经验来赋予较为准确的范围。
前文也谈论到,比如费米在估算芝加哥每个家庭有4个人,换成我们来估算的话,我们不能拍脑袋直接估算芝加哥每个家庭有10个人。我们的估算值应该是有实际数据或者生活经验支撑的。
在面试的时候碰到这类估算问题,千万别直接说可以百度查找等这类回答,或者转牛角尖死磕某一数据的准确性。
面试官通过这类题目考察的其实是面试者的分析方法和逻辑,对于问题拆解的边界考虑,答案可能并不是那么重要,这个思考过程才是面试官想要的。
四、案例分析
1. 估算杭州每年奶茶店的规模大小?
4.1.1 明确问题
Q:问的是杭州每年奶茶店的规模大小,规模大小具体指的是什么?
A:规模大小指的是奶茶店的销售额大小
Q:奶茶店的销售额是指仅仅销售奶茶的收入,还是包括奶茶店里别的饮料和面包等食品?
A:奶茶店的销售额指的是所有饮品(不统计面包这类食品)
4.1.2 分析需求端问题还是供给端问题,或者两个角度都不是
这个问题问的是杭州每年奶茶店的规模,是一个地域的市场规模,这类问题一般可从需求端(消费者)切入,因为杭州常住人口是一个可知的数字。初步判定可从需求端出发。
4.1.3 问题拆解,列公式
杭州每年奶茶店的规模大小=杭州常住人口*渗透率*50*饮品单价*每人每周续购杯数
从需求端将未知问题拆解成元素后,我们发现:
杭州常住人口:杭州常住人口数是已知的,这属于常识,目前是1000万左右。
渗透率:渗透率指的是有多少比例的人会选择喝奶茶,这个比例需要我们估算。估算的时候要避免改变数值真实范围,不能估算的太离谱。
这里主要是考察边界问题,我们在回答的时候可以说通过样本估算。比如我随机选择100位朋友,看100位朋友中有多少人是符合条件的,从而估算出渗透率。
这里还有一个关键问题,不同年龄段的人喝奶茶的频率是不一样的。根据生活经验,年轻人喝奶茶次数会比中年人喝老年人高,所以我们可以通过MECE法则将杭州常住人口分为小孩、年轻人、中年人和老年人,计算公式依然没有变,最终相加各类型的规模大小即可。
- 每人每周续购杯数:解决办法同上。
- 52:指的是一年约有52周,是已知数。
- 饮品单价:根据我们的生活常识,蜜雪冰城的奶茶均价8元,喜茶的奶茶均价在30元一杯。所以饮品单价我们可取15元一杯。
4.1.4 计算
杭州每年奶茶店规模大小=(150*0.1*15*1*52)+(300*0.4*15*1.5*52)+(400*0.1*15*0.5*52)+(150*0.05*15*0.5*52)=170625万
估算出杭州每年奶茶店的规模大小约为17亿。
2. 估算杭州一家奶茶店一天卖多少杯奶茶
4.2.1 明确问题
Q:奶茶指的是店里所有饮品?
A:是的
4.2.2 分析需求端问题还是供给端问题,或者两个角度都不是
这个问题如果也从需求端出发,会发现很难拆解出有意义的元素,因为店里的顾客人流是不确定。所以一般这种要从供给端出发,看奶茶店能提供多少杯奶茶。因为一般情况下,供给需求是平衡的。
4.2.3 问题拆解,列公式
杭州一家奶茶店一天卖出奶茶杯数=工作时长*一窗口每小时卖出多少杯*售卖窗口
从供给端将未知问题拆解成元素后,我们发现:
- 工作时长:早上9点到晚上9点,一共12小时,已知数。
- 一窗口每小时卖出多少杯:以天为单位,存在高峰和低峰期。根据生活经验,估算高峰期为12-14点和18-21点,低峰期为9-12点和14-18点。同时根据生活经验,制作一杯奶茶需要3分钟,高峰期一窗口每小时卖出15杯,低峰期一窗口每小时卖出5杯。
- 售卖窗口:预估一个奶茶店有售卖窗口(制作机器)有3个。
4.2.4 计算
杭州一家奶茶店一天卖多少杯奶茶=(5*15*3)+(7*5*3)=330
估算出杭州一家奶茶店一天能卖330杯奶茶。
五、总结
面试的时候碰上这类问题,可以从上面总结的四个步骤来分析:
- 明确问题
- 分析是需求端问题还是供给端问题,或者两个角度都不是
- 问题拆解,列公式
- 计算
面试官考察点不会是我们最终的答案准不准确,而是看我们对问题进行拆解时合不合理,看我们能不能对我们的估算给出合理的解释。这类题型不必太在意细节和纠结于数字的精准度。
当然啦,如果是面试时第一次碰到这类问题还是很难快速找到思路,所以日常的时候可以刻意分析下这类题型,学会费米估算对我们来说受益匪浅。
费米估算在极其有限的条件下,通过拆解未知并利用身边的信息来求解出结果。
费米估算也给到了我一些启发,即便有些事情看上去无法确定,但可以通过分析拆解,逐步逼近结果。面对不确定性,我们不应停滞不前,而是要懂得抓住身边有价值信息,快速决策。
作者:苏Eddie,微信公众号:苏Eddies
本文由 @苏Eddie 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
外卖订单上面不是可以估算么,比如外卖订单占全部订单的60%,不就算出来了
杭州常驻人口1000万,接着估算
每天喝奶茶的人=常住人口*渗透率
假设渗透率是1%,估出每天喝奶茶的人是10万。。。。。
1000W的百分之一,是10万吧?
一个奶茶店一天卖多少杯还是应该从需求端入手更合理吧。因为从供给端入手的话,一小时一个窗口卖多少杯不能这么简单的直接给值吧。
从需求端入手会更难吧,毕竟一点点的人流量和小牌子的人流量差别很大也很难估算
最开始就是从需求段入手,计算到杭州有多少家奶茶店的时候,你会发现估算不下去了
我也觉得从需求端入手比较合适
如果问的是一个细节的问题,比如,现在有一款产品日活20万,我想设计一个A功能(例如签到),那么如何估算该功能对日活的促进程度?
即,我上线了签到之后,日活会涨/降多少?
类似这样的细节问题,是不是就不适用这个费米估算了呢?
这类问题不存在适不适用的问题,费米问题本质上是考察对于问题的拆解,偏思维方式和方法论层面,如果要考业务理解这种细节问题肯定不会是以这种方式。
咨询里最常见的case——******ing size,最出名的应用是美国原子弹爆炸的时候,费米用一页纸撕碎之后,往空中撒,在气浪的作用下,碎片飞出一定距离,根据这个估算出了原子弹爆炸当量,一个月后科学小组计算了精确值,发现两者相似
太厉害了