机器学习算法

最近,机器学习岗位越来越火爆,那么自然对算法的一些能力要求也是越来越高,想要在求职者中脱颖而出,起步自然非常重要。

 

我和小伙伴们一起研讨了 2019 年校招的一些算法面试,有些是亲自经历的,也有伙伴分享的。总结了在所做过的项目中大家应该能牢记于心的点、在机器学习算法、数据结构和代码中出现频率最高的问题。希望大家能通过该调研报告,对自己的情况查漏补缺,了解自己需要提升的方向。

 

友情提示:本文文字内容过多,可能引发视觉不适,敬请见谅。

 

 

 

项目

 

介绍机器学习项目的时候,项目中的损失函数、如何优化、怎么训练模型的、用的什么数据集能够十分清晰的描述出来。对自己做过的项目要自信一些,在讲解的过程中不要自己有一些疑惑或者模棱两可的说法。以下是几个在介绍自己项目时需要注意的点。

 

准备细节:一旦被问倒了,面试官在心里就认为你没做过。在面试前,应当适当的准备项目描述的一些说辞。很多同学在准备的过程中,会局限于项目具体完成了哪些业务,以及代码实现中的各种细节。事实上,这并不是一个非常好的回答,这相当于把后继提问权直接交给面试官,很可能在中间环节被面试官直接打断,提问中间他感兴趣的某些细节。因此,建议大家按照以下的方式进行介绍:

  1. 讲述项目的基本情况,项目的背景、规模、用时、用到的技术以及各个模块。重点突出自己比较熟悉的技术,防止在面试官打断的提问的时候,问到自己最薄弱的环节。

  2. 主动说出自己做了哪些事情,这部分的描述要尽量和自己的技术背景一致,描述自己在项目中的角色。

  3. 描述模块中用到的技术细节,这部分一定要注意,一定要把话题到自己最熟悉模块的技术细节。自己说出口的技术,一定要是自己会的,宁可少说,不要夸大。

  4. 注意面试官提问的问题,不要太过于简单的回答,尽量把自己知道的相关的部分都说出来。

  5. 注意不要说得太流利,让面试官感觉自己是在背答案。要一遍思考一遍说。

 

 

展现自己在技术和项目上的思考,表现自己的工程能力,下面列出几点:

  1. 能考虑到代码的扩展性,有框架设计的意识;

  2. 有调优意识,能通过监控发现问题点,然后解决;

  3. 动手能力很强,肯干活,会的东西比较多,团队合作精神比较好;

  4. 有主见,能不断探索新的知识。

 

一定要主动:作为面试者,应该能够主动并且逻辑清晰的说出自己的项目中有哪些亮点,能够主动的把自己的闪光点在短短几十分钟的面试中都展现出来。

 

 

机器学习算法问题

 

这里给出了调研中,问到的频率最高的算法问题。

  1. L1 L2 正则化的区别,为什么 L1 产生稀疏矩阵,L2 可以防止过拟合 (0.5);

  2. 梯度消失和梯度爆炸 (0.4);

  3. LR 的数学原理 (0.4);

  4. SVM 推导 (0.35);

  5. SVM 核函数 (0.35);

  6. 算法评估指标 ROC曲线,AUC值 (0.3);

  7. bagging 和 boosting 区别 (0.3);

  8. RF、Adaboost、GBDT、XGBoost 的区别和联系 (0.3)。

     

 

 

大家可以看到,这些基础的细节问题还是很容易被问到的,具体到概念和公司,自己知道的,一定要保证可以准确的写出来,而不能只记住个大概,这样会显得非常的不专业。

 

总结:对每个算法,尽量能够做到可以手推其损失函数、清晰讲解如何求解损失函数,同时,了解该算法的应用场景和优缺点。并将应用场景类似的算法进行比较。还有一点需要注意的是,针对每个问题,要尽可能了解的深入,例如,L1,L2 正则化,除了以上的问题,还有 L1,L2 的先验分布是什么,正则化的参数选择问题等等。

 

 

数据结构问题

 

这里给出了调研中,问到的频率最高的代码问题。

  1. 快排 (0.4)

  2. 归并排序 (0.3)

  3. 10 万个数中找 TopK(0.3)

  4. 最长回文子串 (0.2)

  5. 反序字符串 (0.2)

  6. 链表反转 (0.2)

 

 

总结:《剑指 offer》基本是要过一遍的,面试中有很多同学指出很多是来自这本书的原题。另外,总结题目类型以及对应的解题方法也是很有必要的,题目场景多种多样,但其本质的问题总的来说只有那么几种。如果有余力,可以多多练习 LeetCode。建议大家刷题的时候,最好用 Java 或者 C++,很多面试官不太喜欢大家做题的时候使用 Python。

 

 

概率题

 

面试中考到的问题中,几乎 80% 的问题都是条件概率题,贝叶斯公式一定要牢记于心。因此,大家在准备的过程中,需要重点准备条件概率问题。下面是面经中出现频率最高的面试题,希望给大家的面试准备上提供一点线索。

 

一、随机数发生器 这类题目在解决的过程中要注意:最后产生的随机数中,可以存在没有用的随机数,但必须保证所有要用到的随机数产生的概率必须是相同的。

 

已知一随机发生器,产生 0 的概率是 p,产生 1 的概率是 1-p,现在要你构造一个发生器,使得它产生 0 和 1 的概率均为 1/2。

 

求解:让该随机数生成器生成两个数,那么序列是 00,01,10,11 概率分别为 pp,p(1-p),(1-p)p,(1-p)(1-p)。我们发现产生序列 01 以及 10 的概率是相等的,那么我们把 01 看作为 0,把 10 看作是 1,则他们产生的概论均为 p(1-p),其他情况舍弃不用,这样就得到了0和 1 均等生成的随机器了。

 

已知有个 rand7() 的函数,返回 1 到 7 随机自然数,怎样利用这个 rand7() 构造 rand10(),随机产生出 1 到 10 的自然数。

 

求解:如果能够得到一组等概率的数,不管是什么数,只要等概率而且个数大于 10,那么问题就可以解决了。事实上,解决方案是有无数种的,只要保证产生的结果映射到 1 到 10 的自然数后,是等概率的独立事件即可。例如, (rand7() - 1) * 7 + rand7(),可以等概率的生成 1 到 49,那么,只要把 11-49 去掉就可以了。不过这样的做法在实际使用过程中毕竟低效。因此可以去掉 41-49,然后在把 1-40 映射到 1-10 (每四个数映射为 1 个数),那么问题也就解决了。

 

二、掷筛子的期望 商家发明一种扔筛子游戏,顾客扔到多少点就得到多少钱,但扔筛子之前顾客需要付一定数量的钱 x,假设商家和顾客都足够聪明:

  1. 顾客付一次钱可以扔一次的情况下,顾客能接受的最大 x 是多少?

  2. 现在规则改为顾客付一次钱可以扔两次,顾客扔了第一次之后可以选择是否继续扔第二次,如果扔了第二次则以第二次的结果为准,如果没有扔第二次就以第一次的结果为准,这时顾客能接受的最大 x 为多少?

 

求解:题目本质上是问掷一次筛子的期望以及掷两次筛子的期望。 

  1. 1/6(1+2+3+4+5+6)=3.5。

  2. 考虑顾客什么情况下会扔第二次,就是扔第二次得到钱变多的概率相对较大的时候,那么当顾客第一次扔到 1,2,3 的时候他会选择继续扔第二次,则这时候期望变为 1/6 (4+5+6) + 1/2 (1/6 (1+2+3+4+5+6)) = 4.25。

 

 

其他

  • 为什么学算法

  • 觉得自己是什么样的人

  • 性格介绍

  • 优缺点介绍

 

这些问题主要在于一方面尽量展示自己对该方向的热情,另一方面展示自己的学习能力、毅力等软实力。

转载于:https://www.cnblogs.com/williamjie/p/10275113.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度强化学习在智能城市领域应用介绍

来源:海豚数据科学实验室深度强化学习是近年来热起来的一项技术。深度强化学习的控制与决策流程必须包含状态,动作,奖励是三要素。在建模过程中,智能体根据环境的当前状态信息输出动作作用于环境,然后接收到下一时刻状…

Tensorflow深度学习应用(进阶篇)-回归(函数拟合训练)-可视化

#codinggbk进阶篇:多元回归:建模问题:Yx1xx1x2xw2x3xw3...xnxwnb,矩阵简化表示YXWbnumpy库基础:整型的一个数字, 不能取得其shape(维度),通过np.array()可以将其转换成一个标量&…

Tensorflow深度学习应用(进阶篇)-1

#codinggbk 逻辑回归:逻辑回归需要将输出控制在[0,1]之间,可以使用函数将值映射在[0,1]之间Sigmod函数,逻辑回归一般采用对数损失函数;from pylab import mpl mpl.rcParams[font.sans-serif] [SimHei] #设置显示绘图显示中文 mp…

​20210716未来智能实验室收录资料

20210716未来智能实验室收录资料特别推荐:置顶收录未来智能实验室在人民日报《学术前沿》发表的城市大脑最新综述研究论文和报告《城市大脑的起源、发展与未来趋势》。本期收录前沿科技进展材料52篇1.《科学》:媲美AlphaFold2的蛋白质结构预测新工具问世…

元宇宙深度研究报告:元宇宙是互联网的终极形态?

报告出品方:华安证券作者:尹沿技、张天、姚天航1 元宇宙:剑指互联网的“终极形态”1.1 元宇宙指向互联网的终极形态元宇宙(Metaverse)概念起源于科幻小说,或指向互联网的“终极形态”。Metaverse 一词来源于…

Unity基础

Unity3D 游戏开发 第一章 基础知识 Unity是一个用于创建游戏和三维互动内容的开发工具,是一个专业游戏引擎。 2D游戏:视角锁定,二维坐标。 3D游戏:任意视角,三维坐标。 虚拟现实(VR)&#x…

英特尔史上最大收购!英特尔拟300亿美元收购GF,审批成关键!

来源:EETOP据《华尔街日报》报道,知情人士称,英特尔打算斥资约300 亿美元收购晶圆代工大厂格罗方德(GlobalFoundries),以加速生产更多芯片,如果收购成功,这将是英特尔有史以来最大的…

Unity 基本操作

基本操作 物体的组合 1.从需要的组合的物体中选择一个作为父对象,其他的物体作为子对象,即把子对象拖拽到父对象里,操作父对象即可实现整体操作,效果如下。 2.在组合物体中,父对象的坐标是该组合体的坐标&#xff0c…

OpenAI雄心勃勃的机器人计划失败了:强化学习没法用?

来源:机器之心曾经训练出单手解魔方机器人的 OpenAI,眼下已经解散了机器人团队。这家执着于实现通用人工智能(AGI)的公司现在放弃了机器人研究,理由是「数据不够丰富」。近期,OpenAI 公司联合创始人 Wojcie…

Unity-游戏小地图实战(前述知识点回顾与运用)

阶段知识回顾与运用---游戏中小地图实战 对于多个摄像机,每个摄像机都带有音频监听器,会出现错误,因为我们只需要一个音频监听器,为了消除错误,需要移除其他摄像机的音频监听器,只保留主摄像机的音频监听器…

NTT高级科学家:光子是深度学习的未来!光子有望替代电子计算机加速神经网络计算...

来源:AI科技评论作者:Ryan Hamerly编译:陈彩娴近日,来自日本 NTT 研究所的高级科学家 Ryan Hamerly 在 IEEE Spectrum 上发表了一篇文章(“The Future of Deep Learning Is Photonic”),谈论了光…

Unity3D-InstantOC遮挡剔除

InstantOC(插件) 渲染管线 图形数据在GPU上经过运算处理,最后输出到屏幕的过程。对于显示出来的图形,CPU与GPU的分工 CPU判断需要显示的图形图像调用图形API;绘制调用(Draw Call):每…

WCF系列(一)BasicHttpBinding 和 WsHttpBinding 的不同点

aaaaaaaaaaaaaaaaaa WCF系列(一)【翻译】BasicHttpBinding 和 WsHttpBinding 的不同点 2010-02-21 12:23 by Virus-BeautyCode, 20206 阅读, 7 评论, 收藏, 编辑 原文地址:Difference between BasicHttpBinding and WsHttpBinding 1、简介 WC…

Unity3D-光照系统

光照系统 1. Global Illumination(全局光照) GI,能够计算直接光,间接光,环境光以及反射光的光照系统。通过GI算法,渲染出光照效果更为真实的场景。 2. 直接光 从光源直接放出的光,通过Light组件实现。 …

Tomaso A.Poggio教授丨人工智能的下一个突破点在何处?

来源:图灵人工智能AI的成功故事在过去的25年中,尤其是在刚刚过去的十年中,AI,特别是机器学习,已经拥有了十足可观的进展。两个主要的成功故事第一个是AlphaGo。在虚拟的游戏世界中,AI绝对已经战胜了人类。A…

Unity3D-声音系统

声音 1.Unity3D支持的音频文件 mp3、ogg、wav、aif、mod、it、s3m、xm。 2.声音分为2D,3D两种 3D声音:有空间感,近大远小;2D声音:适合做背景音乐。 3.在场景中产生声音,主要有两个总要的组件: Audio …

当可解释人工智能遇上知识图谱

来源:知乎—机器学习小谈地址:https://zhuanlan.zhihu.com/p/386458680本文按照以下章节进行组织:1. 背景意义2. 基于路径的方法3. 基于嵌入的方法4. 总结与展望01背景意义1.1 什么是可解释性?首先,什么是可解释性。由…

Unity3D-C#脚本介绍

Unity3D脚本介绍 脚本就是附加在游戏物体上用于定义游戏对象行为的指令代码。Unity支持C#高级编程语言。 1.语法结构 using 命名空间; public class 类名:Monobehaviour {void 方法名(){Debug.Log("调试信息.");print("调用…

JConsole连接远程linux服务器配置

1.在远程机的tomcat的catalina.sh中加入配置 (catalina.sh路径在tomcat/bin下面 如/usr/local/tomcat/bin) 1 if [ "$1" "start" ];then 2 JAVA_OPTS"$JAVA_OPTS -Djava.rmi.server.hostname192.168.10.98 -Dcom.sun.management.jmxremote"…

缺缺缺!IoT行业的“芯”选择是什么?

来源:北京物联网智能技术应用协会“最初,没有人在意这场灾难,直到这场灾难和每个人息息相关。”这是电影《流浪地球》的开头,预示着一场即将来临的危机。如今,这句话正在现实中应验,不过,这次遭…