【转载】23个DS问题

本系列文章内容、题目均引自https://datamasked.com/
本系列的文章是我翻译解答后整理所得,主要为了帮助自己梳理所学,温故知新。如果恰好也能帮到你,那也是功德无量了🙏

如果对他们的资料感兴趣,请支持原版~

引言
这是一套面向数据科学家的产品案例分析面试套题。问题业务场景出自FB,AirBnB,Uber等互联网公司,主题包括统计分析,机器学习,产品思维。

以下是一些会在解答中反复出现的主题,也是作者凝练出的几个分析方向:

  1. 在案例分析中,几乎很少有问题会明确地告诉你需要优化哪个指标(metric)。绝大多数问题会向你提出一个商业目标(business goal),比如提高老留存,促进用户增长等。你首先要做的是运用数学思维,将商业目标量化成一个具体的指标。这是非常关键的一步,确定好你的框架,那么这个问题就已经解决了9成。如果不这么做,嘿嘿嘿,你大概率会凉!

  2. 当被要求为一个新功能、新产品、甚至是新部门选择一个衡量指标时,请从大处着手,考虑公司宏观的目标。拿业务增长(growth)来说,大多数公司都将增长当作要务之一,然后,这个目标需要再被细化,比如:1.通过提高留存(retention)或者获取更多新用户(acquisition)来实现增长。2.通过提高用户的使用度(engagement)来实现增长。3.找到一个与使用度正相关的指标X,如果我可以增加X,用户使用度或许就能提高,这样也就可以实现增长啦。额,有时候回头想想,如果你的指标无法与公司业绩增长联系起来,那要小心了,因为你选的指标可能并没啥卵用。

  3. 绝大多数的指标的衡量需要一个时间框架(time threshold),这样才能衡量大小和比较优劣。so,请告诉我:你可以衡量“人均点赞数”嘛?当然不能!“上周内人均点赞数”才是一个明确的,可量化的指标。指标是相对,确定时间范围,这一点hin重要!

  4. 当被问及如何改善一个产品时,有个小技巧:帮助用户“偷懒”。有些功能已经在被用户们反复使用,然而用户可能要经过好几个步骤才能完成这个功能。设计一个精简过的流程,通常,这样的一个改善既容易被比较(因为之前用户已经在执行这个动作,你只是帮助他们“偷懒”)又容易得到用户的好评。(谁不爱偷懒呢?)

  5. 如果被问及“我们应该改变X功能”或者“如何改善Z功能”时,你应该从问题出发,步步引导到你的结论,尤其问题中如果包含了数据集时,你需要一个结构化地推演过程,而不是泛泛地告诉面试官你对该产品有多少远见。

  6. 当被要求如何优化一个长期的指标时,比如说一年的用户留存或者用户价值(lifetime value),言下之意是要你找一个能预测长期的短期指标,然后花功夫优化它。

  7. 当被要求选择一个特征变量(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:举例说明测试结果成功却不执行改变的场景

问题:
请给出具体场景并说明什么情况下,即使改动通过了A/B测试(P-Value显著)你仍然不应该执行改变。

要点:A/B测试的成本与效益分析(Costs and Benefit of A/B Test)

题目直接从“不作改变”的结论出发,让我们分析为什么,实际上就是暗示我们:这次的改动所需成本超过了收益,就算它通过了显著性测试,我们也不该实施。这样一来我们只要举例说明成本源自哪些方面,这个问题就迎刃而解。(小声bb:关于这点不应该主要由PD考虑的么?况且实际工作中应该先分析成本效益,才会考虑要不要进行A/B测试的吧 - -ll )

人力成本。修改产品是一个牵一发动全身的效应,例如产品团队需要修改产品文档,开发团队需要修改技术实现,运营团队需要更换策略等。从另一个角度说就是机会成本(opportunity cost),团队本可以花时间专注于投入产出比更高的工作上。

技术成本。不论互联网产品如何进化,最终是程序和代码的变更。然而修改代码是有一定出bug的风险的,越是复杂的代码,越容易出bug(开发团队的同学们深知debug的痛苦)。比如,为了添加某个功能而增加了代码的复杂性,这不仅需要花费开发团队更多时间写更多代码,今后维护工作也会增加难度。因此我们估计开发难度时,不能仅考虑短期成本,同样要考虑长期,如果出了bug,技术成本的增加是非线性的。

奥卡姆剃刀法则告诉我们,如无必要,勿增实体。若非十分与产品相关,也就没必要把一份需求纳入变更计划中。虽然大多数时候,把控“何为相关”是产品经理甚至是老板们的事,但为了避免低效,提高产出,分析师还是需要具备一定的产品思维才行。

Q4:对于未留下评论的乘客,他们的乘车体验会比留下评论的乘客更好、一样还是更糟?

问题:
在网约车出行的场景下,会有相当一部分乘客不会留下评论。相比留下评论的乘客,那些不置可否的乘客的真实评价是会更好,一样还是更糟?
要点:缺失值处理

首先直觉上,我们倾向于把不留评论和差的体验关联起来。例如,由于文化,习惯等因素,相比留下差评,有些人们更倾向于不留评论。

我们假设,除去少数技术原因(如因为软件的原因评论无法提交),乘客评论缺失不是完全随机,而是他们自己选择的。选择性偏差(self-selection bias)告诉我们,这些不留评论的乘客往往都有某种同样的共性,为了挖掘这一共性,找出他们“不留评论”背后的隐含意见,我们可以挖掘已经留下评论的用户的数据,从中寻找模式,再来去预测未评论用户的评价。这是一个典型的有监督机器学习预测案例。以旅途数据(等车时间、路上时间、费用、司机信息等)作为输入,评论好坏作为输出。

然而,如果不把预测评论的好坏作为最终目的,而把他看成特征工程中的一个步骤(缺失值处理),我们可以将“有无评论”这个特征编码(encoding),0即无评论,1则有评论。诚然,第一段中的方法能够“猜测”评价,但这是建立在评论和体验有一定联系的基础上的。现实中,缺失评论的原因多种多样,往往未必一定与体验有联系。这时候,简单地进行独热编码(one hot encoding),既不会引入重复信息,又保留了“有无评论”这样一种特征。

Q5:如何估计电商平台上某一品类的供给与需求?

问题:
假如某电商平台上牛仔裤品类的销售停滞。为了分析原因,请设计一种方法估算牛仔裤的供给和需求,看是哪方出了问题。
要点:转换漏斗

设想一下典型的电商平台转换的漏斗:主页->搜索页面->物品页->支付页。从搜索页面到物品页面,反映的是买家的意愿,可以用作近似估算需求。而从物品页到支付业,代表的是成功完成的订单,可以用来近似估算供给。

首先说需求。我们可以通过举办活动(market campaign)来查观察买家对牛仔裤广告的点击率(CTR)。如果点击率不错,证明需求还可以。

其次是供给。我认为,在电商场景下,供给不仅仅代表着牛仔裤卖家的供货多少,也包括了电商公司对该商品的“支持程度”,具体来讲包括了曝光度、排名、搜索优化、推荐优化等技术支持。假设有100个搜索cookie,但只有20个支付了订单,说明有80个cookie的用户在浏览的时候出了问题。比如没有找到合适的尺寸、颜色、款式、牌子等等。这里不论是没货还是有货没优化好,归根到底都是供给出了问题。因此,转化量/搜索量 适合用来估算该电商平台供给端是否给力。

更加具体地定义“具有购买意向的群体”能更准确地帮助我们预估需求和供给。举个例子,在搜索中使用了多层过滤的买家通常有明确的购买意愿;在某个会话时间(session time)停留较长的用户通常有较强的购买意愿。明确定义“购买意向群体”能帮我们在挖掘数据的过程中提升信噪比,得出更准确的推断。在精准定位购买意愿的用户群体之后,如果就连他们中的转化率也不太好,极大可能是因为网站的供给端出了问题。

Q6:用有监督机器学习预测诈骗有什么不足?

问题:如题,假设你手中有一份消费记录数据集,其中有些是诈骗/盗刷的消费记录,标记为1,有些是正常的记录,标记为0。你打算用该数据集来训练诈骗识别模型。
要点:混淆矩阵,样本不均衡

在正常的环境下,诈骗记录数量是远远少于正常记录数量的。于是,如果未经处理就把数据集喂给算法建模,模型会更倾向于把大多数的目标都预测为0,正常。虽然这样的模型看上去会有不错的准确率(precision),但这这貌似没有什么用,因为我们关心的是找出1,而不是找出0。换句话说,在这个场景下,我们更在意模型的召回能力(recall)。

通常我们有几种方法调整模型。比如,调整损失函数(loss function),使模型在出现假阴性(fasle negative)时候受到更多惩罚;采用一个激进的阈值(threshold),如概率得分达到0.1即认为是正样本;或者用重采样的方法,使正样本和负样本在每个训练集合中数量均衡。然而,这些方法有效的前提是正样本有足够的数量。问题是,往往只有大公司才有海量的数据,能为训练模型提供足够的正样本。

另一方面,训练集反映的信息是已经发生了的事件,且需要人为标注(比如,用户打电话反馈受到诈骗),如果人为疏忽了而导致标记错误或者漏标了,模型将错过学习这个案例的机会,以后也发现不了类似的问题,甚至还会将本是诈骗的记录标记为正常。更糟的是,当犯罪分子研究出了新的诈骗手段,在这些新套路的情况被发现、数据被采集、模型被更新并且部署上线之前,又有不少无辜的用户将遭受损失。机器模型只能用已有信息预测诈骗,面对层出不穷的“新玩法”总是会“晚了一步”,这将很难做到保护用户财产安全的职能。这就是有监督机器学习的工作模式,他只从过去的经验里找寻答案,他不会创造新的信息。

想要优化机器学习的这一缺陷,我们还可以结合其他手段。仔细想一想,判别是否是诈骗记录,最核心一点是能否分辨出诈骗与正常的不同。只要找出不同,就能大概知道是否是诈骗。判别目标是否正常的过程叫做异常值检测(anomaly detection)。理论上讲,单独的异常检测并不能决定性地确定目标是否是诈骗,但结合有监督的概率模型,能给出关键的信息做参照。很多时候,只看概率得分并不能很准确地作出判断。如果阈值是0.5,你很难说A记录的0.49和B记录的0.51有什么大的区别。但如果结合异常值检测,观察到A记录的消费金额异常地高,而且登陆ip在常用地区很远的地方,这样,即使概率得分只有0.49,相对于0.51的B,把A分为诈骗记录却是更为合理的决策。

然而异常值检测也有其局限性,那就是当数据有太多特征,就陷入了“维度灾难”的窘境。当维度太多,意味着任意两条记录,在至少一个维度上是非常不同的。因此,在面对高维度的场景下,明确定义什么是不同(哪些维度的差异得关注,又有哪些维度的差异可以忽略)是非常重要的。

综上,将机器学习和异常值检测的方法相结合,能够互相取长补短,让预测模型达到最好的预测效果。

Q7:调查不同平台用户的Instagram使用率

问题:如果在iOS平台有70%Facebook使用Instagram而在Android平台只有35%Facebook用户使用Instagram,请设计实验调查这一现象。
要点:决策树模型,信息增益

将问题目抽象一下:自变量X是不是导致应变量Y变化的因素?如果是,X如何影响Y?如果不是,哪些因素真正影响Y?根据题意,这里的X指的是移动端的操作系统(Operating System),Y指的是Facebook用户中使用Instagram的用户百分比。我们关心的问题是OS是否影响这个百分比。

分类树模型是一个解释性较强的算法模型,它可以帮助我们分析哪一个特征分裂出的节点分类性能更强,或者说信息增益更多。所以我们可以构建决策树模型,然后在模型结果中输出各个特征的重要性。这时候会有两种可能:

1.OS分类能力不强,特征重要性排名低。既然不重要,那么为什么不同OS会有不同的使用率?因为OS仅作为代理特征(proxy),代表了其他特征,如年龄、地区、教育水平、职业。举个例子,北美,本科学历的白领女性,更倾向使用iOS,同时,这样的用户群体更频繁地使用Instagram。从本质上看,是背后的特征主导了使用率的差距。从模型上看,这些被代理的特征会给分类带来更多的信息增益,特征重要性排名也比OS更高。

2.OS特征重要性高。这时候真实主导使用率的因素就是OS。这个结论虽然不能直接找到真正原因,但帮助我们明确了范围——不同OS版本软件本身的差别导致了使用率的差距。收集相关日志数据,一个个排查把。举例来说,可能iOS版的UI设计更好,iOS用户更喜欢使用;或是Android版老是出现顿卡bug,用户弃之等等。

总结一下。通过机器学习,我们可以透过现象看本质。如果OS是一个代理变量,它背后的特征组合才是造成不同的真实原因;如果OS的确是主导因素,那我们就可以进一步排查,直到找出真实原因。

Q8:测试新功能是否提高用户留存

问题:为了提升订阅用户的留存,产品团队添加了新的功能。如何在较短时间内预估改动是否有效?

由于用户存留这个指标通常要在数个月后才能统计出来,显然,跑一个持续数月之久的A/B测试会显得不太合理。这个问题的核心在于如何用一个有效的短期指标近似估计长期指标。这正是机器学习所擅长的,我们可以借助过往数据,找到最具指示性短期指标X,然后借助观察X推测,新功能是否对长期指标带来影响。(做个“三岁看到老”的类比,如果孩子三岁时候已经能每周写一小段钢琴曲了(短期指标),那这孩子到了四十岁说不定就能称为著作等身的钢琴家了(长期展望)。)

首先给订阅用户的留存率下一个明确的定义。比如“过去12个月里不取消订阅的用户占总用户的百分比”。有了明确的定义才有明确的数据,下一步就是收集12个月前的数据,将12个月后依然订阅的用户标为1,取消订阅的用户标为0。

收集反映用户在订阅一定时间后的行为数据,如“用户订阅一周后点赞数量增加的百分比”,“用户订阅一个月后阅读文章的增量”等。这一步要结合对业务的理解,尽可能多开脑洞,多做变量。如果想法用光了,可以把更长时间跨度的同一指标也考虑进去,因为有些用户行为要持续一定时间才会产生影响。

现在可以用你收集到的变量来训练模型了。如果一切顺利,你将得到一个或是几个能较好地预测12个月后用户存留状态的短期指标。如果产品的新功能,在一定程度上提升了短期指标,我们对用户存留的预期自然是十分看好的。

Q9:就广告投放阐述基于人口数据的分析和基于用户行为数据的分析哪个更有效

问题:在google面试中,类似的问题常常以下形式出现:列举所有你认为能够用来预测广告点击的变量,并说明他们之中哪些是最重要的。

在构建特征工程时候,数据科学家们不仅需要找到哪些变量是有效的,也要理解他们是如何产生的,更重要的是他们是如何影响我们想要预测的目标。

在预测广告点击的概率中,通常用到两种数据:基于人口(demographic data)和基于行为(behavioral data)。

在电商购物的场景中,人们购物不仅仅是为了自己,也可能是为他人。基于个人信息的模型或许能很好的拿捏用户的年龄段,性别,职业从而能大致推断出他们可能需要什么产品,但他却不知道用户想为他人买什么。而浏览行为数据能无差别地反映出用户的直接购买需求。在恰当时机投放的广告不仅不会让人反感,反而会让用户有一种“雪中送碳”的感觉。

如果想准确抓住时机,基于人口的数据能给我们提供方向。比如,每年开学季,大学生们往往需要更换电子设备,这时候给他们投放手机,电脑的广告,就会有较好的点击率。

总地来说,基于人口的数据提供的是一个潜在消费群体的划分,他更倾向对一个群体的需求刻画和分析;基于行为的数据提供的是一个稍纵即逝消费意愿,精确反映个人消费需求。我认为随着互联网持续升级,特别是云计算、万物互联的普及,这两种数据将融合趋同化,你很难再分辨出哪些是用户个人属性信息,哪些是行为数据,任何数据都将伴随用户走向各个场景,届时,数据研究的颗粒度必将更细致,广告投放也会更加精准。

Q10:A/B 测试中的新颖效应

问题:某App团队A/B测试新功能,结果显著,于是团队将新功能上线给所有用户。然而在一段时间后,团队发现新版本的App并没有比旧版本在数据是表现更好,请分析原因(假设新版本技术上没有缺陷)

如果产品本身没有技术故障,AB测试的过程也是正确的,那么问题很有可能出现在用户行为上。

   
   
  • 1

新颖效应是测试产品时常见的用户行为。当团队将新功能上线,一开始用户觉得新奇,纷纷尝试,导致app的数据变好看了。当过了一段时间后,好奇心褪去,用户行为又回到了原来的模式。说白了,其实就是新功能还没有很完善,不能抓住用户的心,改变不了用户的使用习惯。

新颖效应会让AB测试的预估会变得不那么可靠,因为AB测试只存在较短的时间,很多时候测试甚至没有跑出“热恋期”,就认为新功能是用户的“真爱”了,这时候如果仓促上线,难免以后会“本性毕露”。

新颖效应会存在,说到底其实是产品的新功能做的不够好,至少没有好到让用户如我们所愿地,长期地改变某些使用习惯。其实,新功能不够好不可怕,找出毛病再花时间慢慢改进就好了,可怕的是因为收到新颖效应的蒙蔽,仓促上线,把一个优秀的功能做砸了。数据科学家的使命就是发现情况不对时候,用数据说话,及时给团队悬崖勒马。下面介绍以下检测AB测试中有没有出现新颖效应的方法。

在AB测试的对照组和控制组中,分别将新用户和老用户分开。如下:

                   控制                对照

   
   
  • 1

新用户 A B

旧用户 C D

比较新用户中的控制组、对照组之间的差异即A和B的大小。

以活跃度为例,一个成功的新功能测试会展示出A+C<B+D的结果,但如果通过比较A和B,发现A>=B,很有可能用户受到了新颖效应的影响,因为活跃度的增长全都仰仗了老用户对产品的“新鲜感”,在新用户看来,新版本并没有比旧版本更优秀。

Q11:设计指标

问题:请为一个全新的简讯类App设计2个指标,用来监控其刚发布一个月内的增长表现。

Your product is either growing or dying。 任何种类的App,在初创阶段,用户增长是生存根本也是第一要义。为了监控增长,我们可以从以下两个方面定义指标:

开源,代表了获取新用户的能力。具体一些,如“每日活跃新用户(注册一天内至少发送3条短消息的用户)的增量”。 为了避免僵尸账号滥竽充数,我们定义的新用户必须具备一定活力,这样才能准确反状况。

节流,代表留住用户的能力。用户使用度越高,被留住的可能性就越大,因此我们可以用使用度来衡量留存。理想的使用度指标存在于产品团队想要用户“反复完成的行为”中。更理想一点,这些“反复完成的行为”最好能构成用户间的互动,形成良性循环。比如“每个用户每天平均发送的消息数量”就是一个简单好用的指标。

虚荣指标(vanity metrics)指的是,过多僵尸账号滥竽充数,导致这个指标不能真实反映情况。这是在选指标同时需要极力避免的。设想一下,如果有一个机器人在不停地新建账号,你的指标会如何受影响。虚荣指标如“注册用户数”会激增,蒙蔽其真实表现,让你以为app大受欢迎,而务实有效的指标如“每人每天发送消息量”则会骤降,提醒着你出现问题,该排查了。所以,谨防无用的虚荣指标。

Q12:为App添加一个新功能

问题:以WhatsApp为例,如果你可以使用所有相关数据(如聊天记录,浏览历史等),请设计一个新功能。
产品经理的核心工作内容之一就是挖掘新用户需求,再把用户需求提炼转化成产品需求,最终实现成产品功能。其实在挖掘需求方面,数据科学家也有其优势,特别是在数据充沛的条件下。

什么样的新功能才是用户喜欢的?据我观察,受欢迎的新功能未必是标新立异的,但一定是让用户觉得贴心,同时如果能为用户省时省力省钱,这样就算是一个细微的调整,也将打动用户。数据科学家善于在用户使用记录中发现规律,我们可以从用户在使用过程中产生的不便入手,改善用户体验。比如,某一个使用环境用户需要重复地进行操作,如果将这个过程缩短和简化,这就是一个好的改善。

对于社交软件WhatsApp,我会如下设计方案来挖掘用户潜在需求:

整理用户聊天记录,使用NLP算法进行话题挖掘、群聚、分类。

将所有话题按频率由高到底排序,寻找最频繁出现的几类话题。

尝试从热门话题中寻找用户面临的潜在问题,设计解决方案。

小范围测试解决方案,观察是否成功。

一些具体的例子如下:

现象:发信人常常问收信人“在吗?”,“收到了吗?” 问题:发信人想知道对方是否在线,有没有阅读消息 方案:向发信人显示收信人已阅的标识

现象:关于地点、时间的话题如“你到哪里了?” “还有多久到?”,“严重堵车”。 问题:双方需要频繁交换地理位置,时间等信息。方案:引入地图、导航的功能并在对话中实时显示。

现象:同一个消息发给不同的用户。问题:用户有群发消息的需求。方案:添加可编辑的用户分组,可将消息群发。

Q13:估计电商网站的客户生命周期价值

问题:如何估计新用户(第一次进入你的电商网站主页)的生命周期价值(Life Time Value)?
首先,我打算将LTV定义为“一个新用户在其第一年内给网站带来的总营收”。值得注意的是,在一些具有社交网络的电商网站上,因为用户行为具有连锁效应,ta能带来的价值可能远不止本身消费的价值。这里我单纯假设该网站是纯粹的电商网站,没有强社交影响力。

不难发现,这又是一个估计长期变量的问题,因为我需要预测一年中产生的消费,而选取数据的对象则是“第一次进入主页的新用户”。

于是,抓取一年前进入,且留存超过一年并产生消费的用户数据。

收集变量。既然对象是新用户,那进入网站的方式显得尤其重要。主要分搜索,广告和链接。如果通过搜索,关键词是什么?如果是广告,广告词是什么?来自于哪个广告商?其他的如用户的地理位置,进入的时间,设备的型号,操作系统,浏览器类型等都是有效的变量。

完成了数据的收集,就可以进行模型搭建。这是一个回归问题,并且有许多类型变量,所以回归树或许是一个不错的选择。

Q14:判断两个用户是否为最佳好友

问题:在Facebook的使用场景下,如何才能识别出某用户关系最好的朋友?
相同问题在电商景下,可能是这样的:给定一个商品和一系列类似商品,找出与该商品相似度最高的。在线上音乐场景下,可能是这样的:给定一首歌曲,从曲库中找出最接近的歌。

按照一贯的步骤,首先需要定义“相似度”。两个人能称为BFF有很多种原因,这里需要我们找出一个可以量化的标准。

所以,我假设两个最要好的朋友应该是“线下时间在一起最多的两个人”。一般情况,查找范围就被缩小到了伴侣、亲戚、同学。

为了简化问题,不附加时间远近的限制(比如比较2年前的最佳好友和5年前的最佳好友), 只考虑全局最佳的情况,那么什么样的指标才能近似表示“线下在一起时间多少”的?

一种方法是观察两者线上活动“重叠”的程度。在Facebook中,大多数线上关系都是线下关系的映射,因此最容易想到的一个指标就是FB共同好友的个数。如果两个人是好朋友,很多情况下,都会互相分享内容,因此,共同点赞数也是个理想的指标。同理,还有共同出现的地点、共同参加的活动、共同被@的次数,照片同框的次数等。

运用更大的数据颗粒度也能衡量两者的相似度。将用户所有的关系进行分类,如高中同学,大学同学,同事等等。再观察是否有跨集群的共同好友,如果有,那极大可能两者就是比较要好的朋友。对应的场景是,只有BFF经常会把自己圈层的好友介绍给对方。

Q15:如何eBay上的虚假陈列?

关于预测诈骗,有以下几点发现:

诈骗者几乎不可能只干一票,一旦找到行之有效的方法,他们疯狂复制,尽可能多做,因此诈骗犯需要频繁地更换和创建账号。任何与唯一ID相关的变量理论上来说是预测诈骗的有效变量。eBay允许追踪来自同一用户的不同账户信息,这些不同的账户都有相同的IP地址,邮寄地址,信用卡号等信息。

因为骗子占总用户中绝对少数,所以从离群值入手的异常检测通常是检测可疑活动的有效方法。

eBay是典型的C2C电商,我将变量的选择划分为两种:有关商品本身的属性和有关卖家的属性(eBay上诈骗常见于卖家):

关于商品本身:

1.图片质量。低质量的图片意味着低可信度,尤其是诈骗者不会花大量时间打磨自己的商品陈列,因此图片大多是从别处截取的。

2.价格偏低。为了提高有人上当受骗的数量,必须用够低价格吸引够多人。简单粗暴,总有人智商不够会被低廉的价格吸引而中招。

3.商品描述。与图片同理,诈骗者不会亲自编写商品描述,极大可能是从正经商品那里一毛一样地复制过来的。

关于卖家:

1.设备型号、IP地址、银行账号。。基本上任何在登陆流程中用到的个人信息,如果相同信息下有大量账号存在,这个用户很有可能是个骗子。

2.使用记录。诈骗分子一般会立刻在建号之后开始制作商品链接,而一般用户需要一定时间熟悉流程,因此上品快得蹊跷的账号很有可能是诈骗账号。另外,诈骗分子不会和普通卖家一样用心经营账号,因此大多数为低评分,评分数少或者没评分。

Q16:衡量客服部门的业务水平

问题:从数据科学的角度设计一个方法来衡量客服部门的业务水准。
每一个成功的企业几乎都会把增长当成各个部门的最终目标。如果问题是估算关于某某部门的业绩,就应该把最终目标导向公司增长上。

实现增长主要靠两种途径:获取新用户和留住现存用户。在各个部门中,员工们的劳动成果无一例外都是为了这两种途径服务。然而,客服部门好像两种都可以做:不是帮助新用户指点迷津,引导完成第一笔消费,就是为老客户提供更好的使用体验,以留住他们继续消费。用一个指标总结一下,归根到底就是最大化用户周期价值LTV。

客服部门在如今的业态中已经变得越来越重要,原因是获取新用户的成本已经日益变得昂贵,客服留住用户的能力很大程度上影响了公司业务是否能长期盈利。

废话不多说,现在问题已经转换成了一个LTV估计问题。LTV是一个长期指标,和前面很多题目一样,长期指标需要短期近似指标来估计。让我们假设时间窗为1年,即某用户接受客户服务一年后,他消费了多少价值。

步骤如下:

获取一年之前的所有客服记录。

LTV估算是一个回归模型,但是为了简化操作我将它转换成了分类模型,即接受客服后用户复购了则为1,没有则为0。

特征工程。可以使用简单的NLP方式(语气分析、主题模型)从对话中中提取出用户的态度,客服的谈话质量等相关信息。另外日志中的对话时长、评分等都是至关重要的特征。

建模预测二变量。

观察特征的重要性,如果出现一个显著特征,那就是我们要找的,可以用来预测长期LTV的短期指标。

如果没有一个特别重要的变量,则可以直接使用模型,输入数据来直接预测结果,好处是可以反馈给客服部门,你目前这样做行或是不行。

Q17:评估用户登陆界面是否需要双重认证

问题:利用数据,分析在用户登陆界面设置双重认证(two-factor authenticator)是否合理

在诈骗预测中常遇到双重认证的问题,本质上是分类模型混淆矩阵相关的问题。如“如何选择模型的门槛” 或是“如何权衡和取舍假阳性和假阴性” 或是”从ROC曲线中选择一个最好的截断点”

门槛值是用来判定预测结果是属于哪一类的标准。假设对于一条记录,你的模型输出大于门槛值x,那么模型判定该记录有盗号风险,反之则通过验证继续登陆。门槛值越低,你允许的登陆越多,真阳性也多,但是混入其中的假阳性也就越多。每次成功抵御了盗号风险,你都帮助客户守护了隐私,提升了公司的价值,相对的每次错误地让盗号者登陆(假阴性)或者错误地将用户判定成盗号者(假阳性),公司都会损失价值。因为同时减少假阴性和假阳性是办不到的,但如果我们知道这两者具体代价是多少,就可以寻找一个平衡点,让损失最小化。双重认实质就是提升门槛值。双重认真可能会导致少部分用户觉得麻烦而流失,但是会更大程度地阻隔盗号风险。具体如下:

1.从商业角度, 量化盗号(假阴性)的损失,记为m,以及一个用户的价值,记为n。

  1. 小范围测试双重认证,记录阻止盗号的比例,记为a,失去用户的比例,记为b。

  2. 如果am>bn,则说明双重认真有存在的价值,反之则没有。

其实并不是每个用户都有必要经历双重认证。如果模型告诉我,小明是盗号者的概率是0.01,那我压根就没必要用双重认证去麻烦他(因为这样做反而会可能失去小明)。因此可以用事先做用户分层的的方法,事先排除一些情况,让双重认证只发生在有必要的登陆者面前。举个例子,如果用户的账号行为稳定、无异常,那就没有必要跳出一个双重认证给他。但是如果他突然在非洲登陆了,或者在另一个设备上登陆,那最好给他弹一个认证,要不然被盗号的风险就太大了。类似的情况在平时使用互联网时候实在太常遇到了,就不一一赘述。

Q18:同时进行多个AB测试
问题:同时进行30个假设检验(或者说AB测试)用来测试不同版本的主页。其中只有一个测试表明新胜过旧,且pvalue为0.04,此时应该做出改版吗?
在假设检验中,当不太可能发生的事件概率显著,则拒绝零假设。

问题是,如果同时进行多个测试,发生小概率事件的可能性就大大增加了。这就好比如果你超速导致发生车祸的概率是5%,如果你经常超速,发生车祸就是早晚的事情。因此,在测试中就需要降低显著水平的最低要求,以平衡多个测试带来的影响。

实践中,最常用的方法是邦费罗尼校正。将原来的显著水平,常用的是alpha=0.05 除以测试的数量即可得到校正过的水平。

因此答案是,不做出改版,除非pvalue小于用邦费罗尼校正过的显著水准。

Q19:维度灾难与MVP

问题:假设某个网站的每个用户能够被100个连续的变量描述,任一用户在任意一个变量上为立群值的概率是多少?从产品的角度考虑这个问题,会有哪些启发?
首先在一个变量中,设有5%的概率我们能取到一个离群值(outlier),假设所有变量间彼此独立,互不影响的。第一个问题是一个简单的概率问题,第二个问题则需要我们以构建产品的角度去回答。

在所有变量中,至少出现一个变量是离群值的概率是在所有变量都中都没有出现离群值的补集。即:

        P(至少出现一个)=1 - P(一个也不出现)
                              = 1- (1-5%)^100

                              这约等于 99% !
  • 1
  • 2
  • 3
  • 4
  • 5

这说明,在维度高的数据中,在某一个维度上出现离群值几乎是必然的。想象一个n维度的空间,所有事件都会聚集在维度边界,而空间的中心几乎是空白的。这也是维度灾难的另一种描述方法。维度灾难在建模中会带来不少的负面影响。

这一现象的延伸也可以用在产品工作上。产品面对的用户是一个庞大的群体,几乎每个人都会在某个维度上远离中间值。因为我们不可能为每个用户都订制一个专属他们的产品,所以满足哪些用户的哪些需求就是产品工作者需要考虑的。一般来说,我们需要明确一个有代表性的用户画像,代表我们用户的平均水平。然而实际上,每个人在某些方面都有可能是不正常的,所以根据这个画像做出来的产品,理论上讲是没法与所有用户完美适配的,没有人是真正所谓的“平均用户”。但是这个产品是有意义的,因为根据平均水平作出的MVP(minimal viable product)整合了大部分人的大部分需求。后续产品的的迭代,可以考虑满足哪些群体的需求以及如何满足。比如说通过推荐系统,实现产品的千人千面,挖掘长尾需求等。

Q20:选择合适的指标衡量客服回复

问题:在Airbnb客服场景中有两个指标,1.16小时内客服回复表单的百分比 2. 16小时内回复的表单中,用户的平均等待时常。讨论哪个用来衡量客服回复更好以及为什么。

指标的价值在于,能够量化并与我们感兴趣的变量产生联系。理想地,我们可以通过优化指标来鼓励一些行为,或者限制指标来限制一些活动。指标帮助我们检测工作是正向发展的还是后退的。警惕虚荣指标,因为它们看上去总是在提升,却并不给你带来任何有价值的信息。

根据经验,基于百分比的指标往往很能反应用户行为的真实情况,更加鲁棒。首先百分比不容易受极端值影响,其次就算在不是所有用户都执行某一行为的情况,百分比依然能被衡量。为了解释清第二点,先来看一个问题:如果并非所有表单都被答复了,这时候求平均,我们只能把16小时内被回复了的表单计算在内。但是如果计算16小时内回复的百分比,我们可以把所有情况包括在哪,无论表单是否已经回答。

在大多数情况中,当被问到选择两个指标时,言下之意是:要么有指标需要花太久计算,不实用,要么有指标与我们想要检测的行为关联度不大。在这里,问题出在求百分比上。假设,16小时内回复的表单平均等待时间是8小时,如果一些效率不高的,需要用12小时才回复的客服,突然不回复了,那这一指标看上去就被优化了,因为分母变小了。但事实是,用户认为晚回复总比没有回复要强。因此优化这一指标会显得没有意义。另一方面,过于关注一定时间内回复率容易滋生形式主义,因为1分钟回复和15小时回复,都属于在16小时内,因此都会被指标认为是可以的。而16小时以外的表单,就可能不被回复,因为就算回复了,也会拉低指标。长此以往,只会鼓励客服只做该做的,不利于他们将服务做到尽善尽美。

在面临这种指标选择时,可以同时尝试多时间门槛的的指标,比如12小时内,10小时内,8小时内,找到效果最好的。或者同时维持两个指标,在一个上升的情况下,确保另一个不会下降,这样比较能保质又保量。

Q21:FB交互提升度案例

问题:假设在FB的场景下,我们发现那些填了个人信息(如年龄、地区、职业等)的用户比那些不填写的用户更爱使用FB,交互度更高。于是,团队使出了一种方法,帮助用户自动填写那些缺失的信息,并希望用户交互度能提升。然而这样做好像没有效果,解释一下原因。

类似这样的情况其实可以简化一下:

给定几个与某指标正相关的用户行为变量,想通过改变某些用户行为进而影响指标。理论上讲是可行的,但是也要注意相关性并不意味着因果关系。如这里的个人信息–>用户交互度。

愿意将个人信息填写完整的用户一般在FB上更活跃,有更高的交互度。但是如果系统自动填写,这就会让原本不活跃但用户变得活跃嘛?显然不太可能。

主动填写信息这一行为本身就是一种交互度的表现。这一行为是用户基于自身的交互度,存在自我选择偏差(self-selection bias),当用户的交互度达到一定高度,用户就会想完善个人信息,以进行体验更好的社交。提升用户填写信息的概率,但是反过来“用户填写信息会提升交互度”,这点是不成立的。

优化的方法,是要认识到“是否填写信息”这一行为只是交互的的一个近似。把“是否填写信息”作为模型输出,输入则是用户行为数据。通过模型来预测这一输出,设法找到最据影响力且可行的变量,围绕这个变量改善用户的行为。比如想办法给用户推送更多感兴趣的信息,这样他阅读数和点赞数会上升,因此他会在FB上更活跃,也就更有理由去完善个人信息。根本上讲,我们是在寻找因果关系,强化某个行为,产生使用户更乐意使用FB这一结果,而不是像问题描述中那样,认为相关即因果。

Q22:游戏公司盈利案例

问题:在一个网络游戏的场景,该公司的人均营收和营收中位数哪个更高?假设这是一款免费游戏,游戏内有氪金内购。

免费游戏(freemium)是常见的商业模式。

最贵的往往是免费的,这点在氪金游戏圈特别正确。

在免费游戏中,大多数玩家会享受免费内容,而只有少部分玩家愿意购买内购,因此,如果画一个用户消费的分布,图像应该是在右侧有长尾。因此,中位数应该小于平均数。

大多数的商业模型的指标其实都服从长尾分布,特别是免费模式。大量用户(至少大于总量50%)仅使用免费内容,少部分用户为该模式制造消费,极少部分铁粉用户会有超高的消费,他们作为极端值,就是长尾的尾部。众所周知,极端值会严重影响平均值,中位数却不易被它们影响。当然,我们这里讨论的极端值是只在中位数的一侧,并不考虑中间数两边都有极端值的情况,因为最小值是0,不可能有极小的负值。

Q23:随机森林中最重要的参数

如题
随机森林是由许多决策数组成的集成算法,每棵数的样本、特征都是随机采样产生的。因此随机森林的鲁棒性优秀。以下使它的几个重要参数:

树的数量:从头开始增加树的数量时,预测的准确度会增加,直到一定程度,准确度会停止提升。这时候就找到了树数量的最佳参数。树越多,训练测试所需时间越长。也可以通过并行计算来减少处理时间。

单棵树样本个数:随机森林单个树越大,意味着但棵树分类能力越强,同时也会时训练更耗费时间。从1开始,逐渐增加单棵树样本个数,直到效果提升不再显著,这样就能找到最佳参数。

采样的特征个数:通常来说,每个分支用sqrt{x} 个特征是最理想的,x为数据集中特征的数量。

原文链接:https://blog.csdn.net/weixin_43961606/article/details/107467574

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值