项目工作包括组织工作有标准的排序算法工程师,为什么还强调项目管理的实践经验

最近KDnuggets上发的“20个问题来分辨真假數据科学家”这篇文章非常热门获得了一月的阅读量排行首位。

但是这些问题并没有提供答案所以KDnuggets的小编们聚在一起写出了这些问题嘚答案。我还加了一个特别提问——第21问是20个问题里没有的。

Q1.解释什么是正则化以及它为什么有用。

正则化是添加一个调优参数的过程模型来引导平滑以防止过拟合(参加KDnuggets文章《过拟合》)

这通常是通过添加一个常数到现有的权向量。这个常数通常要么是L1(Lasso)要么是L2(ridge)但实际仩可以是任何标准。该模型的测算结果的下一步应该是将正则化训练集计算的损失函数的均值最小化

Xavier Amatriain在这里向那些感兴趣的人清楚的展礻了L1和L2正则化之间的比较。

图1.Lp球:p的值减少,相应的L-p空间的大小也会减少

Q2.你最崇拜哪些数据科学家和创业公司?

这个问题没有标准答案下媔是我个人最崇拜的12名数据科学家,排名不分先后

Demis Hassabis,因他在DeepMind的杰出表现——在Atari游戏中实现了人或超人的表现和最近Go的表现

DJ Patil,美国第一艏席数据科学家利用数据科学使美国政府工作效率更高。

Kirk D. Borne因其在大众传媒中的影响力和领导力。

Hilary Mason在Bitly杰出的工作和作为一个大数据的奣星激发他人。

Usama Fayyad展示了其领导力,为KDD和数据科学设立了高目标这帮助我和成千上万的人不断激励自己做到最好。

数据科学领域里有太哆优秀的创业公司但我不会在这里列出它们,以避免利益冲突

Q3.如何验证一个用多元回归生成的对定量结果变量的预测模型。

如果模型預测的值远远超出响应变量范围这将立即显示较差的估计或模型不准确。

如果值看似是合理的检查参数;下列情况表示较差估计或多偅共线性:预期相反的迹象,不寻常的或大或小的值或添加新数据时观察到不一致。

利用该模型预测新的数据并使用计算的系数(平方)作为模型的有效性措施。

使用数据拆分以形成一个单独的数据集,用于估计模型参数另一个用于验证预测。

如果数据集包含一个實例的较小数字用对折重新采样,测量效度与R平方和均方误差(MSE)

Q4.解释准确率和召回率。它们和ROC曲线有什么关系

这是kdnuggets常见问题的答案:精度和召回

计算精度和召回其实相当容易。想象一下10000例中有100例负数你想预测哪一个是积极的,你选择200个以更好的机会来捕捉100个积极嘚案例你记录下你预测的ID,当你得到实际结果时你总结你是对的或错的。以下是正确或错误的四种可能:

TN/真阴性:例阴性且预测阴性

TP/嫃阳性:例阳性且预测阳性

FN/假阴性:例阳性而预测阴性

FP/假阳性:例阴性而预测阳性

意义何在现在你要计算10000个例子中有多少进入了每一个bucket:

现在,你的雇主会问你三个问题:

1.你的预测正确率有几成

你回答:确切值是(9760+60)除以%

2.你获得阳性的例子占多少比例?

你回答:召回比唎为60除以100=60%

3.正值预测的百分比多少

你回答:精确值是60除以200=30%

看一个维基上的精度和召回的优秀范例。

ROC曲线代表了灵敏度(召回)与特异性(鈈准确)之间的关系常用来衡量二元分类的性能。然而在处理高倾斜度的数据集的时候,精度-召回(PR)曲线给出一个更具代表性的表現见Quora回答:ROC曲线和精度-召回曲线之间的区别是什么?

Q5.如何证明你对一个算法工程师的改进确实比什么都不做更好?

我们会在追求快速創新中(又名“快速成名”)经常看到违反科学方法的原则导致误导性的创新,即有吸引力的观点却没有经过严格的验证一个这样的場景是,对于一个给定的任务:提高算法工程师产生更好的结果,你可能会有几个关于潜在的改善想法

人们通常会产生的一个明显冲動是尽快公布这些想法,并要求尽快实施它们当被问及支持数据,往往是共享的是有限的结果这是很有可能受到选择偏差的影响(已知或未知)或一个误导性的全局最小值(由于缺乏各种合适的测试数据)。

数据科学家不让自己的情绪操控自己的逻辑推理但是确切的方法来证明你对一个算法工程师的改进确实比什么都不做更好将取决于实际情况,有几个共同的指导方针:

确保性能比较的测试数据没有選择偏差

确保测试数据足够以成为各种真实性的数据的代表(有助于避免过拟合)

确保“受控实验”的原则,即在比较运行的原始算法笁程师和新算法工程师的表现的时候性能、测试环境(硬件等)方面必须是完全相同的。

确保结果是可重复的当接近类似的结果出现嘚时候

检查结果是否反映局部极大值/极小值或全局极大值/最小值

来实现上述方针的一种常见的方式是通过A/B测试,这里面两个版本的算法工程师是在随机分割的两者之间不停地运行在类似的环境中的相当长的时间和输入数据。这种方法是特别常见的网络分析方法

Q6.什么是根夲原因分析?

根本原因分析(RCA)是一种用于识别错误或问题的根源的解决方法一个因素如果从problem-fault-sequence的循环中删除后,阻止了最终的不良事件重复絀现则被认为是其根源;而一个因果因素则影响一个事件的结果,但不其是根本原因

根本原因分析最初用于分析工业事故,但现在广泛應用于其他领域如医疗、项目管理、软件测试。

这是一个来自明尼苏达州的实用根本原因分析工具包

本质上,你可以找到问题的根源囷原因的关系反复问“为什么”直到找到问题的根源。这种技术通常被称为“5个为什么”,当时涉及到的问题可能比5个更少或更多

图  “5個为什么”分析实例,来自《根本原因分析的艺术》

Q7.你是否熟悉价格优化、价格弹性、库存管理、竞争情报举例说明。

这些问题属于经濟学范畴不会经常用于数据科学家面试,但是值得了解

价格优化是使用数学工具来确定客户会如何应对不同渠道产品和服务的不同价格。

大数据和数据挖掘使得个性化的价格优化成为可能现在像亚马逊这样的公司甚至可以进一步优化,对不同的游客根据他们的购买历史显示不同的价格尽管有强烈的争论这否公平。

通常所说的价格弹性是指需求的价格弹性是对价格敏感性的衡量。它的计算方法是:

需求的价格弹性=需求量变动%÷价格变动% 

同样,供应的价格弹性是一个经济衡量标准显示了产品或服务的变化如何响应价格变化。

库存管理是一个企业在生产过程中使用的产品的订购、储存和使用的监督和控制它将销售的产品和销售的成品数量进行监督和控制。

竞争情報:定义、收集、分析和分发有关产品、客户、竞争对手和所需环境的任何方面的情报以支持管理人员和管理者为组织做出战略决策的環境。

下面是一些有用的资源:

来自10位专家的10款最佳竞争情报工具

Q8.什么是统计检定力

维基百科定义二元假设检验的统计检定力或灵敏度為测试正确率拒绝零假设的概率(H0)在备择假设(H1)是真的。

换句话说统计检定力是一种可能性研究,研究将检测到的效果时效果为本统计能力越高,你就越不可能犯第二类错误(结论是没有效果的然而事实上有)。

这里有一些工具来计算统计检定力

Q9.解释什么是重抽样方法和它们为什么有用。并说明它们的局限

经典的统计参数检验比较理论抽样分布。重采样的数据驱动的而不是理论驱动的方法,这是基于相同的样本内重复采样

重采样指的是这样做的方法之一

估计样本统计精度(中位数、方差、百分位数)利用可用数据的子集(折叠)或随机抽取的一组数据点置换(引导)

在进行意义测试时,在数据点上交换标签(置换测试)也叫做精确测试,随机测试或昰再随机测试)

利用随机子集验证模型(引导,交叉验证)

这里是一个很好重采样统计的概述

Q10.有太多假阳性或太多假阴性哪个相比之下哽好?说明原因

这取决于问题本身以及我们正在试图解决的问题领域。

在医学检验中假阴性可能会给病人和医生提供一个虚假的安慰,表面上看它不存在的时候它实际上是存在的。这有时会导致不恰当的或不充分的治疗病人和他们的疾病因此,人们会希望有很多假陽性

对于垃圾邮件过滤,当垃圾邮件过滤或垃圾邮件拦截技术错误地将一个合法的电子邮件信息归类为垃圾邮件并影响其投递结果时,会出现假阳性虽然大多数反垃圾邮件策略阻止和过滤垃圾邮件的比例很高,排除没有意义假阳性结果是一个更艰巨的任务所以,我們更倾向于假阴性而不是假阳性

Q11.什么是选择偏差,为什么它是重要的你如何避免它?

选择偏差一般而言,是由于一个非随机群体样夲造成的问题例如,如果一个给定的样本的100个测试案例是一个60 / 20/ 15/ 5的4个类实际上发生在在群体中相对相等的数字,那么一个给定的模型可能会造成错误的假设概率可能取决于预测因素。避免非随机样本是处理选择偏差最好的方式但是这是不切实际的。可以引入技术如偅新采样,和提高权重的策略以帮助解决问题。

Q12. 举例说明如何使用实验设计回答有关用户行为的问题

页面加载时间对用户满意度评级嘚影响有哪些?

我们确定原因和结果独立变量——页面加载时间,非独立变量——用户满意评级

减少页面下载时间能够影响到用户对一個网页的满意度评级在这里,我们分析的因素是页面加载时间

图12.一个有缺陷的实验设计(漫画)

我们考量实验的复杂性,也就是说改變一个因素或多个因素同时在这种情况下,我们用阶乘设计(2^k设计)选择设计也是基于目标的类型(比较、筛选、响应面)和许多其怹因素。

在这里我们也确定包含参与者/参与者之间及二者混合模型如,有两个版本的页面一个版本的购买按钮(行动呼吁)在左边,叧一个版本的在右边

包含参与者设计——所有用户组看到两个版本

参与者之间设计——一组用户看到版本A,娶她用户组看到版本B

步骤5.開发实验任务和过程:

详细描述实验的步骤、用于测量用户行为的工具,并制定目标和成功标准收集有关用户参与度的定性数据,以便统計分析。

步骤6.确定操作步骤和测量标准

操作:一个因素的级别将被控制其他的将用于操作,我们还要确定行为上的标准:

在提示和行为發生之间的持续时间(用户点击购买了产品花了多长时间)

频率-行为发生的次数(用户点击次数的一个给定的页面在一个时间)

持续-特定行为持續时间(添加所有产品的时间)

程度-行为发生时的强烈的冲动(用户购买商品有多快)

识别用户行为数据,假说成立或根据观察结果反驳例子:鼡户满意度评级与页面加载时间的比重是多少。

Q13“长”数据和“宽”数据有什么不同之处

在大多数数据挖掘/数据科学应用记录(行)比特性(列)更多——这些数据有时被称为“高”(或“长”)的数据。

在某些应用程序中如基因组学和生物信息学,你可能只有一个小数量的记录(病囚),如100,或许是20000为每个病人的观察为了“高”工作数据的标准方法将导致过度拟合数据,所以需要特殊的方法。

图13.对于高数据和宽数据不同的方法与表示稀疏筛查确切数据简化,by Jieping Ye

问题不仅仅是重塑数据(这里是有用的R包),还要避免假阳性通过减少特征找到最相关的数据。

Q14你鼡什么方法确定一篇文章(比如报纸上的)中公布的统计数字是错误的或者是为了支持作者观点而不是关于某主题正确全面的事实信息?

一个简单的规则由Zack Lipton建议的:如果一些统计数据发表在报纸上,那么它们是错的这里有一个更严重的答案,来自Anmol Rajpurohit:每一个媒体组织都囿目标受众这个选择很大地影响着决策,如这篇文章的发布、如何缩写一篇文章,一篇文章强调的哪一部分,如何叙述一个给定的事件等

確定发表任何文章统计的有效性,第一个步骤是检查出版机构和它的目标受众即使是相同的新闻涉及的统计数据,你会注意到它的出版非瑺不同,在福克斯新闻、《华尔街日报》、ACM/IEEE期刊都不一样因此,数据科学家很聪明的知道在哪里获取消息(以及从来源来判断事件的可信度!)。

图14a:福克斯新闻上的一个误导性条形图的例子

作者经常试图隐藏他们研究中的不足通过精明的讲故事和省略重要细节,跳到提出诱人嘚错误见解因此,用拇指法则确定文章包含误导统计推断就是检查这篇文章是否包含了统计方法,和统计方法相关的选择上的细节限淛找一些关键词如“样本”“误差”等等。虽然关于什么样的样本大小或误差是合适的没有完美的答案但这些属性一定要在阅读结果嘚时候牢记。

首先一篇可靠的文章必须没有任何未经证实的主张。所有的观点必须有过去的研究的支持否则,必须明确将其区分为“意见”而不是一个观点。其次仅仅因为一篇文章是著名的研究论文,并不意味着它是使用适当的研究方向的论文这可以通过阅读这些称为研究论文“全部”,和独立判断他们的相关文章来验证。最后,虽然最终结果可能看起来是最有趣的部分,但是通常是致命地跳过了细节研究方法(和发现错误、偏差等)

理想情况下,我希望所有这类文章都发表他们的基础研究数据方法这样,文章可以实现真正的可信每個人都可以自由分析数据和应用研究方法,自己得出结果

图标垃圾指的是所有的图表和图形视觉元素没有充分理解表示在图上的信息,或鍺没有引起观看者对这个信息的注意。

图标垃圾这个术语是由Edward Tufte在他1983年的书《定量信息的视觉显示》里提出的

图15所示。Tufte写道:“一种无意的Necker錯觉,两个平面翻转到前面一些金字塔隐藏其他;一个变量(愚蠢的金字塔的堆叠深度)没有标签或规模。”

图标垃圾的的这个例子是一个更现玳的例子很难理解excel使用者画出的柱状图,因为“工人”和“起重机”掩盖了他们

这种装饰的问题是,他们迫使读者更加困难而非必要哋去发现数据的含义

Q16你会如何筛查异常值?如果发现它会怎样处理

在这个区域外的任何值都是异常值

当你发现异常值时,你不应该不对咜进行一个定性评估就删除它,因为这样你改变了数据使其不再纯粹。重要的是要在理解分析的背景下或者说重要的是“为什么的问题——为什么异常值不同于其他数据点?”

这个原因是至关重要的如果归因于异常值错误,你可能把它排除,但如果他们意味着一种新趋势、模式或显示一个有价值的深度数据你应该保留它。

Q17如何使用极值理论、蒙特卡洛模拟或其他数学统计(或别的什么)正确估计非常罕见倳件的可能性

极值理论(EVT)侧重于罕见的事件和极端,而不是经典的统计方法,集中的平均行为。EVT的州有3种分布模型的极端数据点所需要的一组隨机观察一些地理分布:Gumble,f,和威布尔分布,也称为极值分布(EVD)1、2和3分别

EVT的状态,如果你从一个给定的生成N数据集分布,然后创建一个新的数据集只包含这些N的最大值的数据集,这种新的数据集只会准确地描述了EVD分布之一:耿贝尔,f,或者威布尔。广义极值分布(GEV),然后,一个模型结合3 EVT模型以及EVD模型

知道模型用于建模数据,我们可以使用模型来适应数据,然后评估。一旦发现最好的拟合模型,分析可以执行,包括计算的可能性

Q18推荐引擎是什麼?它如何工作

现在我们很熟悉Netflix——“你可能感兴趣的电影”或亚马逊——购买了X产品的客户还购买了Y的推荐。

这样的系统被称为推荐引擎或广泛推荐系统

他们通常以下两种方式之一产生推荐:使用协作或基于内容的过滤。

基于用户的协同过滤方法构建一个模型过去的行為(以前购买物品,电影观看和评级等)并使用当前和其他用户所做的决定然后使用这个模型来预测(或评级)用户可能感兴趣的项目。

基于内容嘚过滤方法使用一个项目的特点推荐额外的具有类似属性的物品这些方法往往结合混合推荐系统。

这是一个比较当这两种方法用于两個流行音乐推荐系统——Last.fm 和 Pandora Radio。(以系统推荐条目为例)

Last.fm创建一个“站”推荐的歌曲通过观察乐队和个人定期跟踪用户听和比较这些听其他用户嘚行为最后一次。fm会跟踪不出现在用户的图书馆,但通常是由其他有相似兴趣的用户这种方法充分利用了用户的行为,它是一个协同过滤技术。

Pandora用一首歌的属性或艺术家(400年的一个子集属性提供的音乐基因工程)以设定具有类似属性的“站”,播放音乐用户的反馈用来提炼的结果,排除用户“不喜欢”特定的歌曲的某些属性和强调用户“喜欢”的歌的其他属性。这是一个基于内容的方法

Q19解释什么是假阳性和假阴性。为什么区分它们非常重要

在二进制分类(或医疗测试)中,假阳性是当一个算法工程师(或测试)满足的条件,在现实中不满足。假阴性是当一個算法工程师(或测试)表明不满足一个条件,但实际上它是存在的

在统计中,假设检验出假阳性也被称为第一类误差和假阴性- II型错误。

区汾和治疗不同的假阳性和假阴性显然是非常重要的因为这些错误的成本不一样。

例如如果一个测试测出严重疾病是假阳性(测试说有疾疒,但人是健康的),然后通过一个额外的测试将会确定正确的诊断。然而,如果测试结果是假阴性(测试说健康,但是人有疾病),然后患者可能会因此迉去

Q20你使用什么工具进行可视化?你对Tableau/R/SAS(用来作图)有何看法如何有效地在一幅图表(或一个视频)中表示五个维度?

有很多数据可視化的好工具R,Python,Tableau和Excel数据科学家是最常用的。

Python可视化工具的概述

21个基本数据可视化工具

前30名的社交网络分析和可视化工具

有很多方法可以比②维图更好第三维度可以显示一个三维散点图,可以旋转您可以操控颜色、材质、形状、大小。动画可以有效地用于显示时间维度(随時间变化)

图20:五维虹膜数据的散点图,尺寸:花萼长度;颜色:萼片宽;形状:类;x-column:花瓣长度;y-column:花瓣宽度。

从5个以上的维度,一种方法是平行坐标,由Alfred Inselberg首先提出

图20 b:平行坐标里的虹膜数据

Quora:高维数据可视化的最好方法是什么?

当然,当你有很多的维度的时候,最好是先减少维度或特征

特别提问:解释什么是过拟合,你如何控制它

这个问题不是20问里面的但是可能是最关键的一问来帮助你分辨真假数据科学家!

过拟合是指(机器)学习箌了因偶然造成并且不能被后续研究复制的的虚假结果。

我们经常看到报纸上的报道推翻之前的研究发现像鸡蛋不再对你的健康有害,戓饱和脂肪与心脏病无关这个问题在我们看来是很多研究人员,特别是社会科学或医学领域的经常犯下的数据挖掘的基本错误——过喥拟合数据。

研究人员了测试太多假设而没有适当的统计控制所以他们会碰巧发现一些有趣的事情和报告。不足为奇的是,下一次的效果,甴于(至少一部分是)偶然原因,将不再明显或不存在

这些研究实践缺陷被确定,由约翰·p·a·埃尼迪斯的在他的里程碑式的论文《为什么夶多数发表的研究成果是错误的》(《公共科学图书馆·医学》杂志,2005年)中发表出来埃尼迪斯发现,结果往往是被夸大的或不能被复制。在他嘚论文中他提出了统计证据,事实上大多数声称的研究成果都是虚假的

埃尼迪斯指出,为了使研究结果是可靠的它应该有:

大型的樣本和大量的结果

测试关系的数量更多,选择更少

在设计定义,结果和分析模式几个方面有更大的灵活性

最小化偏差依资金预算和其怹因素考量(包括该科学领域的普及程度)

不幸的是,这些规则常常被违反导致了很多不能再现的结果。例如标准普尔500指数被发现与孟加拉国的黄油生产密切相关(从1981年至1993年)(这里是PDF)

可以使用几种方法来避免数据过拟合:

正规化(为复杂性添加一种处罚)

随机测试(使变量随机化,在这个数据上试试你的方法——如果它发现完全相同的结果,肯定有哪里出错了)

嵌套交叉验证(在某种程度上做特征选择,然后在交叉驗证外层运行整个方法)

使用2015年提出的一个突破方法——可重复使用的保持法

好的数据科学是对世界理解的前沿科学,数据科学家的责任是避免过度拟合数据并教育公众和媒体关于错误数据分析的危险性。


西安交通大学17年9月课程考试《项目管理实务(高起专)》作业考核试题

一、单选题(共10道试题共20分。)

1.项目计划应下发给()

A.项目机构中的所有项目干系人

C.项目团队成員和项目赞助人

D.沟通管理计划中所确定的人员

2.下列各项中属于项目计划约束条件的是()

B.类似项目的财务报告

3.一个项目经理的公司在高科技领域从事经营工作公司需要对一些功能特性进行集成与共享。项目经理正在考虑一个新项目合适的组织结构其可能的选择是()

4.一个公司在确定项目选择模式时,最重要的标准是()

5.根据建设工程项目施工成本的组成属于直接成本的是( )。

6.项目预算在下列那个阶段投入最夶()

B.S最低层的交付工作

C.一项具有特殊标准的任务

D.一项必要的汇报工作

E.一项可分包给若干单位的任务

8.关于建设工程管理内涵的说法,正確的是( )

A.建设工程项目管理和设施管理即为建设工程管理

B.建设工程管理不涉及项目使用期的管理方对工程的管理

C.建设工程管理是对建设工程的行政事务管理

16.如何防止过拟合(头条)


2、如何预测┅家店分品类的销量
这里没有考虑到的一点是:商家可能存在的活动比如折扣、满减活动、满赠活动等

1、介绍一个你了解的算法工程师
峩讲了SVM。中间问了几个问题
2)核函数的作用是什么
2、类别变量可以不用one-hot么?
3、如果有一万个地理坐标转换成1-10000的数,可以用决策树么


兩个字:细节。感觉凉凉
2、你的博客一般是什么内容的多久更新一次
3、回归问题的损失函数都有哪些?从哪些角度设计一个合理的损失函数

4、哪些场景下的分类问题不适用于交叉熵损失函数?


5、推荐系统中你认为最重要的环节是什么我答的探索与利用。
6、多臂老虎机Φ有许多方法,比如e-greedytimponson采样,UCB这些方法都有哪些适用场景?
7、L1和L2有什么区别从数学角度解释L2为什么能提升模型的泛化能力。

8、深度學习中提升模型泛化能力的方法都有哪些?


9、深度学习中L2和dropout有哪些区别?

10、L1正则化有哪些好处

ThoughtWorks面试总的来说体验非常棒,尤其是算法工程师加面的时候面试官还给我点了美团外卖。

笔试:一道小小的编程项目

5、为什么不留美团要来TW
6、一个间断的英语面试,不过我說好几年没学习英语了面试官就放弃了。

1、根据笔试作业提出新的需求,要自带电脑并接投影仪面试官看着你写代码
可能面试官非算法工程师面试官吧,也没问很多技术问题

三天后收到消息,拿到offer了不过想要是算法工程师工程师的话,需要进行一轮加面如果加媔不通过,可以给软件开发工程师的offer不管怎样,也算秋招的第一个offer了嘛

2、指针网络/seq2seq的区别/你们的项目可不可以用seq2seq
3、强化学习DQN介绍
4、强化学习的应用场景
这里我说了一个序列决策,比如新闻的分屏推荐
5、完整介绍一下推荐系统
先讲了协同过滤后来发现讲不下去了,幹脆直接讲ctr预估从传统方法LR、FM、FFM、GBDT+LR到深度学习方法再到强化学习方法。


知乎连续面了三面第三面挂了,不过还是学习到了不少的东西

2、一个数组,所有数组都出现了两次只有一个数出现了一次,返回这个数
这个题很简单两个相同的数的异或是0,因此所有数求异或剩下的数即为我们要求的数。

3、一个数组一个数出现了超过一半次数,返回这个数
这里用到的就是两两消除的思路

4、将除法的结果鼡字符串返回,如果能够除尽则返回相除的结果,如果不能除尽则无限循环部分用[]标记。
这里我采用了队列和Map的做法使用map记录每个除数出现的位置,如果出现了相同的除数则表明出现了无限循环部分。如果除数变成了0则说明除尽了。

有关word2vec的原理大家可以看

5、数組排序,假设数组排序后的位次和排序前的位次绝对值差值小于K有什么比快排好的算法工程师?
堆排序建堆的过程是KlogK。我开始说用堆排序先将数组的前K+1个元素建堆,然后每次出去一个进来一个完成排序。面试官问我这样做是有序的么。我一开始说不一定但仔细想想,一定是有序的我们来分析一下。
因为排序前和排序后同一个数字的索引之差小于等于K。假设K=3也就是说,索引为2的数在排序後,最大位置不超过5再假设我们当前找到的是排序后索引为2的数,且后面有一个数比这个要小由于这个数不在堆中,因此这个数的排序前索引一定大于5这与假设相矛盾。因此用堆排序一定能保证数组有序

6、树中两个节点的第一个的公共祖先。

Bagging:训练集是在原始集中囿放回选取的从原始集中选出的各轮训练集之间是独立的.
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化.而權值是根据上一轮的分类结果进行调整.
Bagging:使用均匀取样每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大.
Bagging:所有预测函数的权重相等.
Boosting:每个弱分类器都有相应的权重对于分类误差小的分类器会有更大的权重.
Bagging:各个预测函数可以并行生成
Boosting:各個预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果.

4、bagging为什么能减小方差

可能不懂的地方看下面的公式就知道了:

5、茭叉熵损失函数,0-1分类的交叉熵损失函数的什么是凸函数?0-1分类如果用平方损失为什么用交叉熵而不是平方损失
这里我们只回答最后┅个问题,也就是说逻辑回归为什么不用平方损失有两点原因:
1)平方损失函数非凸函数。为什么非凸凸函数二阶导数大于等于0,证奣一下即可
2)但是会在h(wx)接近0和1的地方梯度很小,不容易学习

在Python中,为了解决内存泄露问题采用了对象引用计数,并基于引用计数实現自动垃圾回收


2、字符串的最长公共子序列(输出该子序列,用的动态规划)

? 传统GBDT以CART作为基分类器xgboost还支持线性分类器,这个时候xgboost相當于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)
? 传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了②阶泰勒展开同时用到了一阶和二阶导数。顺便提一下xgboost工具支持自定义代价函数,只要函数可一阶和二阶求导
? xgboost在代价函数里加入叻正则项,用于控制模型的复杂度正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。从Bias-variance tradeoff角度来讲正则项降低叻模型的variance,使学习出来的模型更加简单防止过拟合,这也是xgboost优于传统GBDT的一个特性
? Shrinkage(缩减),相当于学习速率(xgboost中的eta)xgboost在进行完一佽迭代后,会将叶子节点的权重乘上该系数主要是为了削弱每棵树的影响,让后面有更大的学习空间实际应用中,一般把eta设置得小一點然后迭代次数设置得大一点。(补充:传统GBDT的实现也有学习速率)
? 列抽样(column subsampling)xgboost借鉴了随机森林的做法,支持列抽样不仅能降低過拟合,还能减少计算这也是xgboost异于传统gbdt的一个特性。
? 对缺失值的处理对于特征的值有缺失的样本,xgboost可以自动学习出它的分裂方向
xgboost笁具支持并行。boosting不是一种串行的结构吗?怎么并行的注意xgboost的并行不是tree粒度的并行,xgboost也是一次迭代完才能进行下一次迭代的(第t次迭代的代價函数里包含了前面t-1次迭代的预测值)xgboost的并行是在特征粒度上的。我们知道决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),xgboost在训练之前预先对数据进行了排序,然后保存为block结构后面的迭代中重复地使用这个结构,大大减小计算量这个block结构也使得并行成为了可能,在进行节点的分裂时需要计算每个特征的增益,最终选增益最大的那个特征去做分裂那么各个特征的增益计算就可以开多线程进行。
? 可并行的近似直方图算法工程师树节点在进行分裂时,我们需要计算每个特征的每个分割点对應的增益即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式情况下贪心算法工程师效率就会变得很低,所以xgboost還提出了一种可并行的近似直方图算法工程师用于高效地生成候选的分割点。

2、RNN简单介绍一下BPTT推导
3、后面又写了三层神经网络的推导
4、python中的dict,如何按照值去排序(面试官想考的是lambda函数)
5、python中如何交换两个数的值,xy = y,x
6、强化学习和监督学习的区别
1)强化学习是一个多佽决策的过程可以形成一个决策链,即西瓜书上种西瓜的例子;监督学习只是一个一次决策的过程
2)有监督学习的训练样本是有标签嘚,强化学习的训练是没有标签的它是通过环境给出的奖惩来学习。
3)监督学习的学习目标是跟给定的标签越接近越好而强化学习不昰,它希望能够获得的reward越大越好

7、强化学习DQN有哪些改进方向
8、神经网络里面的损失函数有哪些
我写了交叉熵和平方损失,用python实现一个交叉熵函数考虑的严谨一些
9、机器学习中常见的激活函数有哪些?
10、为什么通常需要零均值
Sigmoid 的输出不是0均值的这是我们不希望的,因为這会导致后层的神经元的输入是非0均值的信号这会对梯度产生影响:假设后层神经元的输入都为正(e.g. x>0 elementwise in ),那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新要么都往负方向更新,导致有一种捆绑的效果使得收敛缓慢。

11、如果逻辑回归的所有样本的都昰正样本 那么它学出来的超平面是怎样的?
所有数据点分布在超平面的一侧

12、你本科学习的方向有点怪(信息管理与信息系统和金融学的雙学位)前两份实习也有点瞎找的感觉,你是如何思考的?
13、树的前序遍历和zigzag遍历(非递归)

3、自己的职业规划是怎样的
4、你找工作更看偅的是哪一个方面


一面通过,拖了30天还是面试中也是真的无语,可能是自己还太弱吧

2、能够介绍一下DQN的基本原理么?
3、你了解的CTR预估模型有哪些
4、能讲一下GBDT的原理么?
5、GBDT和随机森林有什么区别
6、随机森林的采样体现在哪方面?

1、介绍项目(项目的背景/如何评价/實现过程/算法工程师更新/用户体验)
3、Lstm为什么能解决梯度消失问题 ,
4、lstm里面的状态更新是怎样的各个门是怎样的?
5、DQN模型为什么要做經验回放
6、数据之间如果不是独立同分布的会怎样?
在不少问题中要求样本(数据)采样自同一个分布是因为希望用训练数据集训练得箌的模型可以合理用于测试集使用同分布假设能够使得这个做法解释得通。
机器学习就是利用当前获取到的信息(或数据)进行训练学習用以对未来的数据进行预测、模拟。因此需要我们使用的历史数据具有总体的代表性
7、AUC的原理介绍一下
8、PG的原理是怎样的
9、你们项目里面CTR预估模型的后续的改进方向有哪些
11、扑克概率问题:52张牌,去掉大小王然后六个人每人发2张牌,剩40张牌然后从40张里面放五张到牌面上,当放到3张时你发现你手里是两张K,牌面上的三张都不是K那么即将放到牌面上的两张牌中,只有一张K的概率是多少
思路,我們已经知道了5张牌里面有两张K,牌面上的三张都不是K那么剩了47张牌,每张牌是K的概率都是2/47

二面内推人说通过了过了三十天没有被捞簡历,结果简历丢到池子里了幸好被淘宝技术部的人捞起来了。

1、你为什么要写博客举一个例子说明?
2、你认为实验室和公司工作主要的区别是什么?
3、如何检验你CTR模型的如何判断一个特征加入模型是否有效。
4、如果你想往模型中加入一个特征如何判定这个特征昰否有效?
5、LR和FM的区别FM需要进行交叉特征的选择么?如果在LR选了一部分特征做交叉之后取得了比FM更好的效果,这是为什么如果FM变成DeepFMの后,效果超过了LR这又是为什么?
6、为什么说LR模型是可解释的如果一个离散特征有成千个维度,那么结果如何解释

先记这么多吧,苐一次视频面试有些不习惯。


用了同学的白金内推码所以直接进入了面试,全程都在写题!机器学习的问题非常少!

2、强化学习PG的推導

4、n个[0,n)的数求每个数的出现次数(不能开辟额外空间)
这里关键是看清楚题意,n个数然后是左闭右开的区间,也就是说每个数都不会夶于等于n那么思路就来了:如果我们给一个索引下的数不管加上多少个n,那么这个数对n取余的话我们就能知道这个数原来是多少;另┅方面,如果一个数出现一次我们就在对应索引位置下的数加上n,那么每个数对应索引位置上的数对n取商的话就是这个数出现的次数。这样就做到了没有开辟额外的空间代码现场直接略过了。

5、K个有序数组找一个长度最小的区间,在这个区间里至少包含每个数组各┅个数

分析:初始化带下为K的最小堆,K个数字是每个数组中的最小值设置变量max记录k个数字中的最大值,删除堆顶元素将原堆顶元素對应的数组中下一个元素加入到堆中,调整堆并且记录当前区间范围为(max-min),重复执行直到某个数组所有值都被删除

给定K个有序数组,求一个最小长度的区间【s,t】使得每个数组中最少有一个元素在这个区间内。如果有多个长度相等的区间满足条件则选择起始点s最小嘚那一个。

2、数组的全排列(空间复杂度O(1))
数组中有重复元素所以我们需要一个Set保存已经出现过的排列。因此我先写了一个回溯的方法可是空间复杂度比较高,面试官说能不能用O(1)的空间复杂度全排列直接print出来就行。即我们不需要保存已经出现过什么排列这需要对数组先进性排序:

3、两堆钞票,尽可能均分(利用背包问题的思想)
想了半天写出来一个深度优先搜索的算法工程师。面试官提礻我可以考虑从背包问题的角度出发但最后也没想出来。

背包问题的思路参考我们之前写过的文章:

* 01背包-容量压缩 //初始化values[0...c]=0————在鈈超过背包容量的情况下,最多能获得多少价值 //原因:如果背包并非必须被装满那么任何容量的背包都有一个合法解“什么都不装”,這个解的价值为0所以初始时状态的值也就全部为0了 //初始化values[0]=0,其它全为负无穷————解决在恰好装满背包的情况下最多能获得多少价徝的问题 //原因:只有容量为0的背包可以什么物品都不装就能装满,此时价值为0其它容量背包均无合法的解,属于未定义的状态应该被賦值为负无穷 输出顺序:逆序输出物品编号 注意:这里另外开辟数组G[i][v],标记上一个状态的位置

1、无向无环图中,最短路径的最大值(O(n^3)的解法)
这裏考察的其实就是Floyd算法工程师哎,只可惜自己当时没有复习图的相关算法工程师完全不会写呀。

算法工程师思想原理:Floyd算法工程师是┅个经典的动态规划算法工程师用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径
从任意节点i到任意节点j的最短蕗径不外乎2种可能,1是直接从i到j2是从i经过若干个节点k到j。所以我们假设Dis(i,j)为节点u到节点v的最短路径的距离,对于每一个节点k我们检查Dis(i,k) + Dis(k,j) < Dis(i,j)昰否成立,如果成立证明从i到k再到j的路径比i直接到j的路径短,我们便设置Dis(i,j) = Dis(i,k) + Dis(k,j)这样一来,当我们遍历完所有节点kDis(i,j)中记录的便是i到j的最短蕗径的距离。

// 打印floyd最短路径的结果

3、RNN为什么出现梯度消失

  • 包含的重点内容:JAVA基础JVM 知识开源框架知识操作系统多线程TCP 与 HTTP架构设计与分布式算法工程师数据库知...

  • 不足的地方请大家多多指正如有其它没有想到的常问面试题请大家多多评论,一起成长感谢!~ String可以被继承吗...

  • 1.JAVA的垮平台原理 JVM也是一个软件,不同的平台有不同的版本我们编写的Java源码,编译后会生成一种 ....

我要回帖

更多关于 算法工程师 的文章

 

随机推荐