本系列文章内容、题目均引自https://datamasked.com/
本系列的文章是我翻译解答后整理所得,主要为了帮助自己梳理所学,温故知新。如果恰好也能帮到你,那也是功德无量了🙏如果对他们的资料感兴趣,请支持原版~
引言
这是一套面向数据科学家的产品案例分析面试套题。问题业务场景出自FB,AirBnB,Uber等互联网公司,主题包括统计分析,机器学习,产品思维。
以下是一些会在解答中反复出现的主题,也是作者凝练出的几个分析方向:
-
在案例分析中,几乎很少有问题会明确地告诉你需要优化哪个指标(metric)。绝大多数问题会向你提出一个商业目标(business goal),比如提高老留存,促进用户增长等。你首先要做的是运用数学思维,将商业目标量化成一个具体的指标。这是非常关键的一步,确定好你的框架,那么这个问题就已经解决了9成。如果不这么做,嘿嘿嘿,你大概率会凉!
-
当被要求为一个新功能、新产品、甚至是新部门选择一个衡量指标时,请从大处着手,考虑公司宏观的目标。拿业务增长(growth)来说,大多数公司都将增长当作要务之一,然后,这个目标需要再被细化,比如:1.通过提高留存(retention)或者获取更多新用户(acquisition)来实现增长。2.通过提高用户的使用度(engagement)来实现增长。3.找到一个与使用度正相关的指标X,如果我可以增加X,用户使用度或许就能提高,这样也就可以实现增长啦。额,有时候回头想想,如果你的指标无法与公司业绩增长联系起来,那要小心了,因为你选的指标可能并没啥卵用。
-
绝大多数的指标的衡量需要一个时间框架(time threshold),这样才能衡量大小和比较优劣。so,请告诉我:你可以衡量“人均点赞数”嘛?当然不能!“上周内人均点赞数”才是一个明确的,可量化的指标。指标是相对,确定时间范围,这一点hin重要!
-
当被问及如何改善一个产品时,有个小技巧:帮助用户“偷懒”。有些功能已经在被用户们反复使用,然而用户可能要经过好几个步骤才能完成这个功能。设计一个精简过的流程,通常,这样的一个改善既容易被比较(因为之前用户已经在执行这个动作,你只是帮助他们“偷懒”)又容易得到用户的好评。(谁不爱偷懒呢?)
-
如果被问及“我们应该改变X功能”或者“如何改善Z功能”时,你应该从问题出发,步步引导到你的结论,尤其问题中如果包含了数据集时,你需要一个结构化地推演过程,而不是泛泛地告诉面试官你对该产品有多少远见。
-
当被要求如何优化一个长期的指标时,比如说一年的用户留存或者用户价值(lifetime value),言下之意是要你找一个能预测长期的短期指标,然后花功夫优化它。
-
当被要求选择一个特征变量(variable)时候,选择一个组合特征,用户行为(behavioral data)和用户属性(characteristic data)的组合特征。
以上“套路”能帮助我们更快地结构问题,get到题目的精神,以及搭建出自己的解答体系!
接下来我将一天更新一个问题的解析=。=;欢迎围观。
Q1:如何提升用户使用度?
定义指标
以Facebook为例。首先我们将明确定义“用户使用度”这一指标。比如我们可以说“每天在FB App上至少完成两项具体行为(如点赞,上传,发文等)的用户占比”。 注意这个步骤一定要具体,可测。如果你略懂一些SQL,定义一个指标应该像是在做查询,我们添加适当的条件语句,将一个群体不断地细分、过滤,最后得出想要的目标人群。值得注意的是,指标的选取应该和公司的使命愿景或者价值观有一定的联系。FB关注人与人之间的链接,所以我们选择的指标最好能反应用户之间互动。
选择特征
在选取了想要优化的指标后,选择一个最有可能对该指标产生影响的因变量,以便我们进行优化。用相关性矩阵进行粗筛,或者用机器学习模型预估特征重要度(feature importance)都可以实现这一点。如果单一变量并没有十分理想的相关度,可以尝试组合变量,并且同时考虑两大类数据:用户属性和行为记录。
构建模型
选择一个机器学习模型来模拟变量与目标指标之间的真实关系。通常情况下,不同的业务场景、数据类型、数据规模会有不同的模型选择。你需要具体详实地说明为什么这个模型适合我们当前的业务场景。例如,在上述的FB场景下,我们可以选择随机森林算法(random forest),不但因为RF容易实现,有较好的解释性,而且能够处理高维特征空间(FB有大量用户属性),善于处理类型变量,善于处理异常值等等。
场景分析
在跑完模型后,我们根据模型输出,再结合具体业务场景,讨论为什么会出现如此低(或高)使用度。比如“阿根廷的用户使用度低于其他南美国家的用户”,“印度年龄高于30岁的用户使用度不及其他年龄段用户的一半”。这一步是为了让我们从数据中发现隐藏的问题,进而思考如何解决以及作出数据驱动的决策。
改进方案
发现了问题,我们就可以和产品部门反映,设计一些改进方案。如“造成阿根廷用户使用度低,可能是因为语言版本不够本土化,我们是否可以做一些改进?”,“营销团队是否可以针对印度高于30岁的群体设计专门的广告方案,来吸引他们的注意?”。到此,案例研究的方案框架就大致清晰了。
Q2:如何判断新版本UI是否更好?请简述一个测试方案
问题:
为了增加订单量,从而提高司机收入,某网约车出行公司计划发布一版新UI。请简述一个测试方案判断新版本是否优于旧版本。
要点:A/B测试,假设检验,新颖效应
以下是该问题回答的天真解答:
首先确定几个具有代表性的城市,将每个城市的司机随机划分成对照组(control group)和实验组(test group)。然后对目标指标进行假设检验,观察新版本是否有显著变化。
以上答案忽视了假设检验一个非常重要的前提:对照组和实验组应是互相独立的。而实际上,在同一城市的前提下,该假设是不成立的。举个例子,假设另S城市50%的司机使用新版本,另外50%使用旧版本,如果新版本实测有效好用,势必将让实验组的50%司机更具有竞争力,获得更多订单,反之,实验组则会失去订单。这种情况告诉我们:设计一个实验组与对照组完全独立的A/B测试是有难度的。
那么如何判断某个场景是否能将测试目标随机划分?这里可以采用取特殊情况(extreme case)的思想。极端情况像“如果新版本bug多到让app根本无法使用” 。如果有如上情况发生,对照组用户会因此受到实验组用户的影响嘛吗?在同一城市的网约车场景下,“极端好”和“极端差”都可能会导致一半的司机订单暴增,另一半却接不到订单。因为样本之间存在着明显的竞争性,他们之间的关系不是独立的,所以,我们不可以天真地随机划分用户。
搞清楚了为什么不能随机划分,就抓住了这个问题的要害。接下来我们就需要依据业务场景,设计一个更公平合理的划分方式。我们可以一个城市为单位,将相似可比的城市两两配对进行假设检验。相似可比并不意味着方方面面都必须保持一致,这其实也不现实,我们只要确保两个城市在我们在乎的方面有较强可比性就好。
接下来的工作就是t-test假设检验:选择样本数量即城市对(sample size),显著水平(significant level),p值(p-value),标准差(Std)等。有关各种假设检验,这里提供介绍。最后我们根据检验结果,得出新版本是否有效的结论。
另外,为了优化假设检验,使其结论更可靠,我们还可以做新颖效应(novelty effect)的检测。喜新是一个很常见的心理,很多时候人们喜欢一件东西,未必是因为它更好,可能是因为它够新,对新版本真实的好恶可能会被这阵热乎劲给掩盖。所以,如果假设检验的时间跨度不够长,一个“新优于旧”的结论有可能是有偏差的。除了增加测试的时间跨度,这里提供另一个解决方案:用新用户群体再做一个平行比较的测试。新用户刚入坑,不管是旧版还是新版,在他看来都是第一次见到,对版本变化不敏感的,因此更能真实地反映出孰优孰劣。
Q3:举例说明测试结果成功却不执行改变的场景
问题ÿ