21个数据科学家面试必须知道的问题和答案

21个数据科学家面试必须知道的问题和答案

转载请注明! 
KDnuggets 编辑提供了用以斟辨“假”数据科学家之二十问的答案,包括什么是正则化(regularization),我们喜爱的数据科学家,模型验证等等。

作者:Gregory Piatetsky,KDnuggets

近期发布在KDnuggets上的一篇文章:《检测“假”数据科学家的二十问》非常热门,获得了1月阅读排行榜第一名。然而,这些问题并没有附上答案,因此KDnuggets的编辑们聚在一起,针对这些问题撰写了答案。笔者还另加了一个非常重要的问题,凑成第21问。下面就是这些问题的答案。


问题一:解释一下正则化是什么,它为什么非常有用? ▼

回答者:Matthew Mayo 
正则化就是为模型添加调整参数的过程,目的是为了防止过拟合(overfit),增加平滑度。通常会以向现有的权向量(weight vector)添加常倍数的方式来完成。这个常数一般为L1(Lasso)或者L2(ridge),但实际上可以是任何形式的。 
在修改后的模型中,从正则化训练集得出的损失函数,平均值应当降至最低。 Xavier Amatriain向感兴趣的人提供了很好的L1与L2正则化比对。 


问题二:你最欣赏哪位数据科学家和哪家创业公司?▼

回答者:Gregory Piatetsky 
这个问题没有标准答案,下面列出了我个人最喜欢的12位数据科学家,顺序随机。

  • Geoff Hinton、Yann LeCun和Yoshua Bengio:他们在深度学习方面坚持神经网络的研究,并推动了深度学习革命。
  • Demis Hassabis:他在DeepMind的工作成绩优异,在Atari游戏与Go上(最近)还获得了超人的成就。
  • DataKind的Jake Porway与芝加哥大学DSSG项目的Rayid Ghani,他们将数据科学方面的贡献变成了社会福利。
  • DJ Patil:第一位美国的首席数据科学家,通过数据科学改善美国政府的工作。
  • Kirk D. Borne:他在社交媒体方面有着很大影响与领导力。
  • Claudia Perlich:他在广告生态环境方面作出了卓越贡献,并在KDD-2014上做出重要贡献。
  • Hilary Mason:他在Bitly成就斐然,并做为大数据方面的摇滚明星激励着其他人。
  • Usama Fayyad:他有很强的领导力,并在KDD与数据科学上设定了很高的目标,这些都激励着千万个跟我一样的人努力做出最大贡献。
  • Hadley Wickham:他在数据科学和数据可视化(R语言:包括dplyr、ggplot2和Rstudio)方面成就斐然。 
    在数据科学领域的优秀创业公司也很众多,不过为了防止利益冲突,我不会在这里一一列出。这里有一些我们之前关于创业公司的报道。


问题三:如何验证自己所创建的、用来通过多重回归的定量结果变量生成预测模型的模型?▼

回答者:Matthew Mayo 
模型验证的建议方法:

  • 1、如果该模型预测的值远不在响应变量范围之内,立即可以得出预测或模型有误。
  • 2、如果结果看起来很合理,请检查参数;下面这些代表着预测欠佳或是具有多重共线性:有预测结果相反的迹象、值异常大或异常小、或者在模型填入新数据时发现结果不一致。
  • 3、通过填入新数据、使用模型来进行预测,以及使用确定系数(R平方)作为模型有效性衡量。
  • 4、使用数据分割的方式,为预测模型参数作出一个单独的数据集与一个验证预测的数据集。
  • 5、如果数据集包含少量实例,使用刀切法重采样;并使用R平方和均方误差(MSE)来衡量有效性。

问题四:解释一下查准率与查全率的概念。它们与ROC曲线有什么关系?▼

回答者:Gregory Piatetsky 
下面内容来自KDnuggets问答:查准率和查全率(Precision and Recall): 计算查准率与查全率实际上非常简单。想象一下在1万个案例中,有100个阳性案例。想要知道哪些是阳性案例,选出200个在其中选择,可以确保找到这100个阳性案例的机会更大。记录预测的ID,在拿到实际结果时,总结一下判断正确与错误的总次数。关于正确和错误共有四种判断方式:

    1. TN(真阴性):本来是负样例的案例被分类成负样例。
    1. TP(真阳性):本来是正样例的案例被分类成正样例。
    1. FN(伪阳性):本来是正样例的案例,被错分成负样例,又称误报、误判。
    1. FP(伪阴性):本来是负样例的案例,被错分成正样例,又称漏报、漏判。 
      这样清楚了吗?现在清点一下在1万个案例中,每个bucket中有多少,比如:

现在如果老板问起下面这三个问题:

  1. 预测的正确率是百分之多少? 
    你可以回答:“正确率”为1万分之(9,760+60),也就是98.2%。
  2. 查出的阳性案例占实际的多大比例? 
    你可以回答:“查全率”是100分之60,也就是60%。
  3. 预测为阳性的案例正确率是多少? 
    你可以回答:“查准率”是200分之60,也就是30%。

关于查准率和查全率,在Wiki上可以查到很好的解释。 
ROC曲线表现了敏感性(查全率)与特异性(不准确)之间的关系,通常用于衡量二值分类器(binary classifiers)的性能。但是,在处理高度倾斜的数据集时,PR曲线(Precision-Recall)更能代表性能。可以参考Quora 的回答:ROC曲线和RP曲线之间的区别 


问题五:如何证明你对一个算法作出的改进确实算是改进,而没有其他作用?▼

回答者:Anmol Rajpurohit 
通常在追求快速创新(也就是“快速成名”)时,人们发现违反数据科学原则会导致误导性的创新,也就是说吸引人的见解却被证实没有经过严格的验证。有这样的一个场景,在接到任务需要改进算法提高结果正确率时,你可能会有很多潜在的改进想法。 人类倾向于尽快宣布这些想法,要求实现。 
在索要支持数据时,通常获得共享的结果都很有限,很可能被选择性偏差影响,或者误导致全局最小值(由于缺少合适种类的测试数据)。 数据科学家不会让自己身上的人类情感压过逻辑理性。尽管想要证明得出的算法确实是改进,而没有其他作用的具体办法需要取决于手边的实际案例,下面有一些通用的指导准则:

  • 确保在选择用作性能对比的测试数据时,不带入选择性偏差。
  • 确保测试数据的种类充足,以代表真实情况下的数据(剔除过拟合)。
  • 确保遵守“可控实验”准则,也就是说在对比性能时,运行初始算法与新算法的测试环境(硬件等)必须相同。
  • 确保在使用类似的结果时,所得出的结论是可重复的。
  • 检查结果是否反映了本地最大值/最小值,或者全局最大值/最小值。

实现上述指导方针的一个常见办法就是通过A/B测试,确保两种版本的算法都运行在类似的环境中,并且运行了相当长的时间,并将实际数据随机投入这两种算法中。这种方法在网络分析中尤为常见。


问题六:根本原因分析是什么?▼

回答者:Gregory Piatetsky 
据Wiki的解释,

根本原因分析(RCA)是一种解决问题的办法,用于分辨错误或问题的根本原因。如果从防止最终不良事件再次发生的problem-fault-sequence中删除,则这个因素被视为根本原因;而因果因素则是影响事件结果的因素,但并不是根本因素。

根本原因分析一开始是在分析行业事故时出现的,不过现在广泛用于其他领域,比如医疗保健、项目管理或者软件测试领域。 
这里有一个明尼苏达州的根本原因分析工具包,非常有用。 
本质上来说,找出问题的根本原因并在找到问题的根本原因前重复询问“为什么”,就能发现原因之间的关系。 这门技术一般被称为“5个为什么”,尽管实际上涉及的问题远不止5个。


问题七:你是否熟悉价格最优化、价格弹性、库存管理与竞争情报?举例说明。▼

回答者:Gregory Piatetsky 
这些都是经济学术语,对于数据科学家来说不会经常被问到,不过了解它们非常有用。 
价格最优化是通过数学工具来确定消费者在不同的渠道中,对产品与服务的不同价格作何反应。 
大数据与数据挖掘允许我们使用个性化定制的价格最优化。现在像亚马逊这样的公司甚至能够进一步优化,根据历史访问记录向不同的访问者展示不同的价格,虽然关于这个做法是否公平还有很大争议。

价格弹性通常特别用在:

1、需求的价格弹性,衡量价格敏感度。算法如下: 
2、需求的价格弹性 = 需求量变化百分比/价格变化百分比。 
同样,供给的价格弹性是一个经济衡量措施,展示了商品或服务的供给量如何应对价格变化。 库存管理监督与控制订单、库存与公司会用于生产商品的部件使用情况,还有监督与控制销售成品的数量情况。

根据Wiki的定义:

竞争情报:是关于产品、消费者、竞争对手还有支持高管与管理者为公司作出战略决策时需要的各个方面环境,所采取的定义、收集、分析与情报分发等手段。 像Google Trends、Alexa与Compete等工具可用于确定一般趋势,并分析网络中的竞争对手。

下面有一些有用的资源:

1、竞争情报指标(Competitive Intelligence Metrics, Reports),报告作者Avinash Kaushik。 
2、监视竞争对手的37个最佳推广工具(37 Best Marketing Tools to Spy on Your Competitors),作者Kissmetrics 
3、来自十位专家的十佳竞争情报工具(10 best competitive intelligence tools from 10 experts


问题八:统计功效是什么?▼

回答者:Gregory Piatetsky 
Wiki这样定义:二元假设检验的统计功效或敏感性就是在测试中,在备择假设 (H1)为真时,正确拒绝零假设(H0)的概率。 
换句话说,统计功效就像是在影响出现时,检测到影响的研究。统计功效越高,犯Type II错误(结论表示没有影响,但实际上有影响)的可能性的就越低。 
下面是计算统计功效的一些工具


问题九:解释一下重采样方法是什么,它为什么很有用?再解释一下其局限。▼

回答者:Gregory Piatetsky 
在经典的统计参数测试中,会对观察到的统计进行对比,得出理论抽样分布结果。重采样方法是面向数据的方法,而不是基于相同样本、进行重复采样的理论方法。 重采样方法指的是执行下面的方式之一:

1、通过可用数据的子集(刀切法)估算样本统计的精度(中位数、方差、百分位数),或者通过替换一组数据点,随机获取(bootstrapping算法)。 
2、在执行重大测试是,交换数据点的标签(排列测试,也被称为精确检验、随机测试或者重新随机测试)。 
3、通过使用随机子集(bootstrapping算法、交叉验证)来验证模型。 
关于bootstrapping算法刀切法请参见Wiki的概念,还可以参考如何通过Bootstrap和Apache Spark验证假定一文。


问题十:误报很多比较好,还是漏报很多比较好?解释一下原因。▼

回答者:Devendra Desale 
这取决于我们希望解决的问题所在的领域。 在医学检测领域,漏报可能因为让病人和医生误以为疾病不存在,而错误地感到放心,但实际上病症是存在的。有时候,这会导致病人缺乏足够或充分的治疗。因此在这个领域,误报更多会比较好。 
对于垃圾邮件过滤机制,误报会导致在垃圾邮件过滤时,错误地拦截邮件,将正确的邮件消息误判成垃圾邮件,从而导致邮件无法正确到达目标者手中。尽管大多反垃圾邮件的战略能够拦截或筛选出很大一部分不必要的邮件,但不引入重大的误判对相应机制的要求更高。因此,我们希望多些漏判,而不是误判。


问题十一:选择性偏差是什么?为什么很重要,又要如何避免?▼

回答者:Matthew Mayo 
一般来讲,选择性偏差是一种有问题的情况,由于样本数量随机不够而导致引入错误。举个例子:针对给定100个测试样本的案例,其中在分类时按照60/20/15/5 分为四类,但各类实际上来讲数量应当是平均的,那么给定模型就有可能在确定预测因素作出错误的假设。避免样本不够随机是解决偏差的最佳方式;不过在不起作用时,可以借助类似重采样boosting和加权等方式,来解决这一问题。


奖励问题:解释什么是过拟合,你如何控制它?▼

这个问题不是原来20个问题的一部分,但是可能是区别真假数据科学家的重要的一项. 
回答者:Gregory Piatetsky 
过拟合是由于偶然的,并且不能在后续的研究中复制而发现的虚假的结果. 
我们经常看到关于研究的新闻报道推翻了之前的发现,比如鸡蛋不再对健康有害,或者饱和脂肪不再和心脏病有联系.这个问题,我们的看法是,许多研究人员,尤其社会科学家或医学家,经常犯数据挖掘的大错–数据过拟合. 
研究人员在没有适当的统计控制情况下做了太多假设测试,直到他们发现一些有趣的东西并发表.不足为奇的是,下一次的结果因为偶然或多或少的会小很多或缺失. 
这些实践研究的错误是由John P. A. Ioannidis鉴定并在其里程碑式论文中<<为什么大多数发表的研究结果都是假的>>(PLoS Medicine, 2005)发表的.Ioannidis发现很多时候结果是夸大的或者发现不能够再次复制的. 在他的论文中,他提出了大多数生成研究结果的结果都是虚假的统计证据. 
Ioannidis 注意到,为了让研究结果是可靠的,它应该是:

  • 大样本以及大的影响
  • 更多的数量和更少测试关系的选择
  • 在设计,定义,结果和分析模式中有更大的灵活性
  • 基于金融或其他因素最小化偏差

遗憾的是,往往这些规则受到侵犯,产生不能复制的结果.例如 S&P 500指数发现与孟加拉国黄油产量强相关(1989.1-1993). 

查看更多有趣的(完全虚假)的结果,你可以使用如同Tyler Vigen开发的Google correlate or Spurious correlations工具发现. 
有几种方法可以避免过拟合:

  • 尝试寻找最简单的可能假设
  • 正则化(增加模型复杂度惩罚)
  • 随机测试(随机类变量,对此 数据试试你的方法-如果你发现一样的结果,那么出错了)
  • 嵌套交叉验证(在一个水平上选择特征,然后在外层交叉验证中运行整个方法)
  • 调整错误发现率
  • 使用可重复使用抵抗方法-2015年提出的一种突破性方法

有效的数据科学在世界科学认识的前沿,避免过拟合数据,教育公众和媒体糟糕数据分析的危险是数据科学家的责任. 
也可以看看


问题十二:给出你如何使用试验设计回答用户行文的问题?▼

回答者:Bhavya Geethika 
第一步:制定研究问题: 
什么是页面加载时间对用户满意评分的影响? 
第二步:识别变量: 
我们确定因果.独立变量-网页加载时间,依赖变量-用户满意评分 
第三步:生成假设: 
较低的网页下载时间对网页的用户满意评分产生较高的影响.下面是我们分析的网页加载时间因素.

第四步:确定试验设计 
我们认为试验的复杂度,即在同一时间一个因素变化或同一时间多个因素变化情况下,我们使用析因设计(2^K设计).基于客观(比较,筛选,响应面)类型和因子数量被选择的设计. 
我们同时也识别Within-participants设计,Between-participants设计 ,以及混合模型.有两个版本的页面,一个在左边带有Buy按钮(称为行为),另一个在右边有这个按钮. 
Within-participants设计-用户组看到的两个版本 . 
Between-participants设计-一个用户组看到版本A,另一个用户组看到版本B. 
第五步:制定试验任务和步骤: 
这步的细节描述包含,实践中使用衡量用户行,目标的工具;成功指标需要界定.收集关于用户参与的定性数据用于统计分析. 
第六步:决定操作和测量:

操作:因子水平之一,将得到控制,其他的将被操作.我们还确定行为测量: 
延时-提示和行为发生间的时间(用户在呈现物品后多久会购买) 
频数-行为发生的次数(时间内特定网页用户点击的次数) 
持续时间-特定行为的持续时间(添加所有产品的时间) 
强度-行为发生的动力(用户购买产品有多快)

第七步:分析结果: 
根据观测结果,如相比网页加载时间有多用户满意度评分,识别用户行为数据,并支持假设或矛盾.


问题十三:”长”(“高”)格式数据与”宽”个是数据之前异同?▼

回答者:Gregory Piatetsky. 
在大多数数据挖掘/数据科学应用中记录(行)多过特征(列),这样淑娟在一些时候称为”高”(“长”)数据. 
在一些应用中,如基因组学或生物信息学中,你可能只有小量的记录(病人),比如100,但是每个病人可能有20,000的观测.对于高数据的标准方法会导致过拟合,所以需要特殊方法. 
Jieping Yeah展示稀疏筛选用于减少精确数据 
这个问题不仅仅是重塑数据(这里有一些有用的R包),而是通过减少特征数量避免误判来发现最相关的. 
稀疏统计学习:Lasso和正则化中包含lasso等降维方法.作者Hastie, Tibshirani, and Wainwright.


问题十四:你用什么方法确定发表论文中的统计信息(或新闻媒体中出现)要么是错的要么支持作者观点,而不是对的,理解特定主题的真实信息?▼

回答者:Zack Lipton, Anmol Rajpurohit 
前者提出简单的猜想,如果统计信息发表于新闻,那么就是错的. 
后者给出了更严谨的回答. 
每个媒体组织都有目标观众.这种选择影响了许多决定,比如文章发布,文章语法表达,文章中哪部分要突出,如何讲述给定故事等等. 
决定有效的统计信息发表于文章中,第一部要审查发表机构和他的目标读者.即使是在同一个新闻故事中涉及到统计信息,你会发现华尔街日报和福克斯新闻以及ACM/IEEE期刊完全不同.因此数据科学家聪明之处在于从哪获取新闻(多大程度基于源信息.)

 
 
5种方法避免被统计信息欺骗 
通常情况下,作业试图通过精明的故事以及忽略重要细节跳转到提出的诱人假设来掩盖他们论文中的不足.因此,确定带有误导性统计推断文章的经验法则是,检查文章在研究方法后是否包含细节,以及相关研究方法中是否含有感知选择限制.寻找诸如”样本大小”,”错误分割区域”等等.虽然没有什么样的样本大小或错误分个区域合适的完美答案,但是这些属性在阅读结束肯定会被牢记. 
报告不稳定的另一个常见情况是,匮乏数据教育的记者从1到2个已发表的的研究论文中选取见解,而忽略论文其他内容,只是为了支持他们的意见的情况.所以,在这告诉你如何避免被这样的文章愚弄:首先,一个可靠的文章必须不能包含任何未经证实的陈述.所有断言必须有过去研究的支持.否则必须区分为意见而不是断言.第二,仅仅因为这篇文章是著名的研究论文,不代表使用这篇论文的见解就是合适的.这可以通过阅读这些参考研究论文验证,并且独立判断论文的相关性.最后最然最终结果可能是看起来最有趣的部分,通常来说跳过研究方法细节是致命的. 
理想情况下,我希望所有文章发表他们的基本研究数据和方法.这种情况下,文章才是真正可信的,每个人都可以自由分析数据,并应用研究方法来查看结果.


问题十五:解释Edward Tufte的”图标垃圾”的概念▼

回答者: Gregory Piatetsky 
Chartjunk是指图标中所有可视化信息对于理解图标展示的信息不是必须的,或从信息中分散观察者注意力的. 
Chartjunk术语是由Edward Tufte在他1983年出版的书中The Visual Display of Quantitative Information创造的.

 
塔夫特写道:“无意Necker视觉,因为两个后面的平面翻转到前面.一些金字塔隐藏其他信息;以及(愚蠢的金字塔的堆叠深度)没有标签或规模的变量.”

 
下面是Excel用户的现代例子,因为工人和吊车混淆了图标,让人难以理解. 
这样修改的问题是强迫读者难以发现数据含义.


问题十六:你会如何筛选离群值,如果你找到了你应该怎么办?▼

回答者:Bhavya Geethika 
一些方法可以用于筛选离群值,例如Z-scores,修正Z-scores,箱线图,Grubb测试,Tietjen-Moore测试指数平滑,Kimber测试指数分布窗口移动过滤算法( Kimber test for exponential distribution and moving window filter algorithm)等等.然而两个健壮的方法是:

四分位距

那么对于给定数据集,一个数据点是离群值,那么其1.5IQR低于第一四分位数(Q1)高于第三四分位数(Q3).

  • High=(Q3)+1.5IQR
  • Low=(Q1)-1.5IQR

杜克方法

它采用四分位距过滤非常大或非常小的数字.和上述方法实际上是相同方法,不同之处是他采用隔离的概念.两个隔离的值是:

  • Low outliers = Q1 - 1.5(Q3 - Q1) = Q1 - 1.5(IQR)
  • High outliers = Q3 + 1.5(Q3 - Q1) = Q3 + 1.5(IQR)

任何一个超过隔离的是离群值. 
当你发现异常值,你不应该在没有定性评估移除它,因为这样你改变了数据,使其不在纯.理解分析和”为什么问题-为什么一个离群点和其他数据点是不同的”重要性是非常重要的. 
原因是至关重要的.如果离群值归因于误差,你可以扔掉,但是如果他们以为一种新趋势,模式或透露宝贵信息的数据,你需要保留.


问题十七:你将如何使用极值理论,蒙特卡洛模拟或数理统计(或其他东西)正确估计一个非常罕见的事件的机会呢?▼

回答者: Matthew Mayo 
极值理论(EVT)重点是罕见事件或极端事件,而不是传统方法统计平均信息.EVT指数由三种分布需要从一些分布中建模随机观测集合的极端数据点:Gumble,Frechet和Weibull分布,也成为极值分布. 
EVT指出,如果你从给定分布生成N个数据集,然后创建一个包含这N个数据集中最大值的新数据集,这个新数据集将被EVD分布中的一个精确描述:Gumbel,Frechet,或Weibull.广义极值分布(GEV)是结合三个EVT模型的EVD模型. 
了解如果对数据建模,我们可以使用模型拟合数据并评估.一旦最优拟合模型发现,可以分析性能,包括计算可能性.


问题十八:什么是推荐引擎? 它是如何工作的?▼

回答者:Gregory Piatetsky 
我们都熟悉Netflix的推荐系统-“其他你可能喜欢的电影”,或亚马逊-用户X还购买了Y. 

这样的系统被称为推荐引擎或更广泛的推荐系统. 
他们通常以两种方式产生推荐:协同过滤或基于内容过滤. 
协同过滤算法基于用户过去行为(之前购买物品,观看电影,评分等等)建立模型,对当前或其他用户做决策.模型用于预测用户可能喜欢的物品(物品评分). 
基于内容过滤方法使用一个物品特征推荐额外具有相似属性的物品.这些方法通常在混合推荐系统中组合使用. 
这是两种方法用于流行音乐推荐系统-Last.fm和Pandora Radio的比较.

  • Last.fm通过观察用户顶起听什么频道和独立音轨,和其他用户行为比较推荐歌曲.Last.fm会播放没有在用户库中出现过,但其他相似兴趣用户经常听的可取.作为这种方法利用用户行为,这是协同过滤技术的例子.
  • Pandora 利用歌曲或艺术家的属性(Music Genome Project提供的400个属性)创建播放相似属性的站.用户反馈用户重定义站的结果,淡化用户不喜欢特定歌曲的属性,并且强化用户喜欢其他歌曲的属性.这是基于内容过滤的例子.

Dataconomy的 Introduction to Recommendation Engines 和Toptal的 building a Collaborative Filtering Recommendation Engine是非常好的书.对于最新推荐系统的研究,查看 ACM RecSys conference.


问题十九:解释什么是假阳性和假阴性.为什么要强调区分它们?▼

回答者: Gregory Piatetsky 
在二元分类(医疗测试)中,假阳性是当一个算法(测试)明确条件存在,而实际上是不存在的.假阴性是当一个算法(测试)明确没有一个条件,但是实际中存在. 
统计假设检验假阳性称为第一类错误,假阴性-第二类错误. 
区分和处理假阳性和假阴性的不同显然是非常重要的.因为这样错误的成本显然是不同的. 
例如,如果对严重疾病测试为假阳性(测试结果为疾病,但人是健康的),那么一个额外的测试都将做正确的诊断.然而,如果一个测试是假阴性,(测试结果健康,但是人是病的),人可能因为结果而死亡.


问题二十:你使用的可视化工具?你怎么看Tableau?R?SAS?如何在图表有效地展现五维数据?

回答者:Gregory Piatetsky 
有许多优秀的数据可视化工具.R,Python ,Tableau和Excel是数据科学家最常用的. 
这是KDnuggets有用的资源:

有许多方式在图表中展现超过两维数据.第三维可以用3D散点图旋转显示得到.你可以使用颜色,阴影,形状,大小.动画可以用时间维度有效的显示. 
 
对于超过五维数据,一个方法是平行坐标 

可以参阅:

当然,如果你有了大量维度,最好是减少维度和特征数量.

猜你喜欢

转载自blog.csdn.net/Lollipop66/article/details/80995189