面试机器学习方面的工作时,在简历的个人项目那块,你会写什么?建模?做机器学习项目?项目数据从哪儿来?在 SharpestMinds 创始人 Edouard Harris 介绍的两个成功例子中,人家是从基础的收集数据开始一步步做项目的:目标明确,做到极致。

我是一名物理学家,在 YC startup 工作。我们的任务是帮应届生找到自己的第一份机器学习工作。

要找到第一份机器学习工作,你要做的一件事就是建立自己的机器学习项目集(portfolio)。现在,我来告诉你答案。

你可能会奇怪为什么这很重要,那是因为招聘经理通常会通过你的履历来了解你,如果你没有履历,个人项目就是最接近的替代品。

因为职业原因,我见过数百份个人项目的案例,有做得极好的,也有做得极差的。我将向你展示两个极好的案例。

全力以赴型

接下来要说的是一件真实的故事,只不过隐私起见我改了主人公的名字。

公司 X 使用 AI 提醒杂货店何时该订购新的库存。我们这边有个学生——Ron,很想去 X 公司工作,所以他建立了个人项目,该项目完全是针对去该公司面试用的。

我们通常不建议这样对着一家公司全力以赴做准备。这有点冒险。不过,像 Ron 这样真的非常想去这家公司就另当别论了。

红色边框标出了缺失项。

  1. Ron 刚开始把手机贴到购物车上。然后,他推着购物车在过道来回走动,同时用相机记录。他在不同的杂货店做了 10 到 12 次。
  2. 回到家后,Ron 开始建立一个机器学习模型。他的模型发现了杂货店货架上的空缺点:货架上缺少玉米片(或其他东西)的位置。
  3. Ron 在 GitHub 上实时建立了他的模型,完全公开。每天,他都会改进他的 repo(提高准确率,并在他的 repo 的 README 中记录项目变化。)
  4. 当 X 公司意识到 Ron 正在这样做时,X 公司很感兴趣,而且不止是感兴趣,事实上,X 公司有点紧张。他们为什么会紧张?因为 Ron 在不知不觉中,在几天内复制了他们专有技术堆栈的一部分。

当然,Ron 所做的远远不够完美:X 公司已经投入了比 Ron 多几个数量级的资源来解决这个问题。但由于太相似,他们很快就叫 Ron 将他的 repo 私有化。

X 公司的技术在同行业中名列前茅。尽管如此,在 4 天内,Ron 的项目得到了 X 公司首席执行官的直接个人关注。

飞行员项目

以下是另一个真实故事:

Alex 是一名历史专业大学生,主修俄语(真的),同时他对机器学习感兴趣。更为不同寻常的是,尽管他从未编写过 Python 代码,但他还是决定学习它。

Alex 选择通过构建实用项目来学习。他决定建立一个分类器,以检测战斗机飞行员是否在飞机上失去意识。Alex 希望通过观察飞行员的视频来发现这一点。他知道一个人很容易通过观察,在一名飞行员失去知觉时告诉他,所以 Alex 认为机器也应该可以做到。

这是 Alex 在几个月中所做的事情:

Alex 的 G-force 诱导失去意识探测器的演示。

  1. Alex 在 YouTube 上下载了从驾驶舱中拍摄的飞行员驾驶飞机的所有视频片段(大约数十个)。
  2. 接下来他开始标记数据。Alex 构建了一个 UI,让他可以滚动浏览数千个视频帧,按一个按钮表示「有意识」,另一个按钮表示「无意识」,并自动将该帧保存在正确标记的文件夹中。这个标记过程非常非常无聊,花了他很多天时间。
  3. Alex 为图像构建了一个数据管道,可以将飞行员从驾驶舱背景中剪裁出来,使他的分类器更容易专注于飞行员。最后,他建立了他的意识丧失分类器。
  4. 在他做所有这些事情的同时,Alex 也在社交活动中向招聘经理展示他的项目快照。每当他拿出他的项目并在手机上展示时,他们会问他是如何做到的,他如何建造管道,以及如何收集数据。但他们从来没有询问他的模型准确率(低于 50%)。

当然,Alex 也计划提高其准确率,但在动手之前就被录用了。结果证明,公司更看重他项目的视觉效果以及他在数据收集过程中表现出的疯狂与智慧,而不是他的模型的准确率。

他们之间的共同点

Ron 和 Alex 为什么如此成功?因为他们做对了以下四件事:

  1. 他们没有在建模上浪费太多精力。我知道这听起来很奇怪,但对于今天的很多用例来说,建模是一个已经解决的问题。在实际工作中,除非你做的是最前沿的研究,否则你的时间 80%~90% 都会花在清洗数据上。你的个人项目又怎能例外?
  2. 他们自己收集数据。正因为如此,他们得到的最终数据比 Kaggle 或 UCI 数据库中的数据更混乱。但也正是这些混乱的数据提高了他们处理混乱数据的能力。比起从学术服务器上下载数据,这种做法让他们能够更好地理解自己的数据。
  3. 他们将做出的东西可视化。所谓面试,并不是说由一位无所不知的裁判对你的能力做出客观的评估,而是将你自己推销给另一个人。人是视觉动物。如果你掏出手机向面试官展示你的作品,那么你要确保自己做的东西看起来有趣,这点非常值得。
  4. 他们的所作所为看起来确实有点疯狂。正常人不会用胶带把自己的手机绑在购物车上。正常人也不会花那么长时间从 YouTube 上裁剪飞行员视频。什么人才会做这种事?那些不顾一切完成目标的人才会这么干。公司最想雇佣的就是这种人。

Ron 和 Alex 的所作所为可能看起来太夸张,但实际上,这和你在真正的工作中要做的事差不多。这就是要点:当你没有做某事的工作经验时,招聘经理会看你做过的和某事相类似的经历。

幸运的是,这种程度的项目你只要做一两次就好——Ron 和 Alex 就在所有的面试中重复使用之前准备的项目。

因此,如果用一句话来概括伟大 ML 项目的秘密的话,那就是:用一个有趣的数据集来构建一个项目,这个数据集需要很大的努力来收集,并且尽可能地在视觉上有影响力。

举两个栗子:如何正确建立个人的机器学习项目集相关推荐

  1. mysql 数据索引使用_mysql数据库正确建立索引及使用

    普通mysql运行,数据量和访问量不大的话,是足够快的,但是当数据量和访问量剧增的时候,那么就会明显发现MySQL很慢,甚至down掉,那么就要考虑优化我们的mysql了.其中优化mysql的一个重要 ...

  2. mysql 建索引_mysql数据库正确建立索引及使用

    普通mysql运行,数据量和访问量不大的话,是足够快的,但是当数据量和访问量剧增的时候,那么就会明显发现MySQL很慢,甚至down掉,那么就要考虑优化我们的mysql了.其中优化mysql的一个重要 ...

  3. 数据库正确建立索引以及最左前缀原则

    数据库正确建立索引以及最左前缀原则 转自:https://blog.csdn.net/zhanglu0223/article/details/8713149 1. 索引建立的原则 用于索引的最好的备选 ...

  4. Identity Server 4 原理和实战(完结)_建立Identity Server 4项目,Client Credentials 授权实例...

    创建项目 dotnet new -i IdentityServer4.Templates 多出来的这些模板 adminUI用来测试,想要用再生产环境,需要交钱 结合core的 Identity来使用 ...

  5. Python学习教程(Python学习路线):如何正确使用Pandas库提升项目的运行速度?...

    Python学习教程:如何正确使用Pandas库提升项目的运行速度? 如果你从事大数据工作,用Python的Pandas库时会发现很多惊喜.Pandas在数据科学和分析领域扮演越来越重要的角色,尤其是 ...

  6. angular搭建项目步骤_建立健康的Angular项目应采取的步骤

    angular搭建项目步骤 by Ashish Gaikwad 通过Ashish Gaikwad 建立健康的Angular项目应采取的步骤 (Steps you should take to buil ...

  7. 重磅!Nature子刊发布稳定学习观点论文:建立因果推理和机器学习的共识基础...

    来源:AI科技评论 整理:AI科技评论 2月23日,清华大学计算机系崔鹏副教授与斯坦福大学Susan Athey(美国科学院院士,因果领域国际权威)合作,在全球顶级期刊Nature Machine I ...

  8. 机器学习 建立模型_建立生产的机器学习系统

    机器学习 建立模型 When businesses plan to start incorporating machine learning to enhance their solutions, t ...

  9. 对于建立图书馆管理系统的项目模拟经验

    对于建立图书馆管理系统的项目模拟经验 此次项目模拟,是在Windows环境下施行的.主要的工具为java程序. 首先下载eclipse并在其中选择java应用程序 然后需要在Windows上搭建jav ...

最新文章

  1. Qt Designer下的一些基础操作
  2. (转载兼整理)Linux 2.6 下通过 ptrace 和 plt 实现用户态 API Hook
  3. 【文文殿下】数论一些经典结论
  4. WPF Template模版之DataTemplate与ControlTemplate的关系和应用【二】
  5. Linux(内核和用户态的)动态内存管理
  6. MySQL(五)汇总和分组数据
  7. 如何在 SAP Fiori Elements List Report 表格工具栏里增添新的自定义按钮
  8. php zend msql,WINDOWS系统 + Apache +PHP5 +Zend + MySQL + phpMyAdmin安装方法
  9. HQL写topN、Spark写topN
  10. ionic中定义路由的问题
  11. SQL Server中全角和半角字符的比较问题
  12. Java之多线程断点下载的实现
  13. YOLOv5的详细使用教程,以及使用yolov5训练自己的数据集
  14. java redis hscan_如何在Redis中使用HSCAN命令?
  15. Windows下安装dilb解决方法
  16. SDM439平台出现部分机型SD卡不能识别mmc1: error -110 whilst initialising SD card【学习笔记】...
  17. excel多个窗口独立显示_办公软件操作技巧060:如何快速切换excel工作簿
  18. Java项目:图书馆管理系统思路分析
  19. Adobe 奇葩续费机制被网友狂喷:中途取消计划必须付费 50%
  20. Android手机视频监控系统

热门文章

  1. 网络之家交换正文 PVST 与PVST+的区别
  2. hibernate笔记(三) Hibernate标识符属性(主键)生成策略全析
  3. Java Web整合开发(42) -- Petstore
  4. MySQL5.7 支持一个表有多个INSERT/DELETE/UPDATE触发器
  5. 2018年4月26日笔记
  6. python模块学下urllib
  7. 马上要毕业了,要就业了。。担忧啊
  8. 北信源IPO,拟筹资开发企业级云安全管理平台
  9. Squid access.log 转发到其他syslog服务器(OSSIM)
  10. [Vue.js进阶]从源码角度剖析vue-router(三)