机器学习不仅仅是模型

产生这个问题的原因就是所有人都以为机器学习的模型就是机器学习本身,以为对那些个算法理解了就是机器学习的大牛了,但实际上完全不是这样的。

模型是谁在玩呢?模型是科学家发明出来的, 是各个大公司的各个科学家,研究员发明出来的,这个发明出来是会出论文的,是他们用来虐我们的智商的,一般情况下,你发明不了模型吧(如果可以,可以不要往下看了,你可以走学术那条路)?你修改不了模型吧?

所以说,学会了模型,只是刚刚刚刚入门,甚至还算不上入门吧

那各个公司的那么多算法工程师在干嘛呢?我们以一个搜索排序的算法工程师为例,他们在做甚呢?他们在

观察数据--->找特征--->设计算法--->算法验证--->洗数据--->工程化--->上线看效果--->goto 观察数据
而且一个成熟的系统中,一般模型已经大概确定了,如果效果不是特别不好不会换模型,比如一个公司的搜索排序系统用了机器学习的逻辑回归模型,你要改成别的模型一般不太可能,那么只能做一些特征上的补充。

好,我们通过这个流程来看看一个机器学习的算法工程师到底还要什么能力。

观察数据

小明每天就在工位上看数据,查数据,看表格,画曲线,发现像销量,收藏,点击等等这种能想到的特征早就被用了,就这么耗了三个月,没有任何进展,人都崩溃了,来了这么久,机器学习代码毛都没看到呢。

第四个月,他发现一点问题,他发现有些商品,评论什么的都挺好,感觉产品质量也不错,但就是销量上不去,所以老排后面,于是,他把这些评论都是五星,但是销量比较差的商品滤出来了,想看看他们有什么共性。

观察数据阶段,你说要什么能力?呵呵,只能告诉你,需要数据敏感性,其实也就是告诉你需要全面的能力,需要经验,需要产品经理的能力。

除了这些,你还需要能随手编脚本代码的能力,遇到有些数据需要初步处理,可能需要随手编代码处理,而且编的要快,因为这些代码可能就用一两次就不用了,所以需要比较强大的脚本语言能力,那么python至少要熟悉吧,shell要会吧。

找特征

数据观察下来发现了问题,现在要找特征了,要找特征,也就是找什么因素导致销量上不去的,首先,需要想象力,然后去验证你的想象力。

小明的想象力爆棚,即便这样,也搞了一个月才发现这些个商品有个共同特征,那就是图片都比较烂,让人一看就不想点。卧槽,要是能把图片质量加入到排序因素里面的话,是不是有奇效呢?图片质量作为特征,这之前可没人做过,终于找到一个特征了。

所以在这一阶段,毕竟大家的想象力都是有限的,更多的是经验值,才能找到符合当前场景的特征。

设计算法

特征是找到了,但怎么把这个特征加到排序模型里面去呢?图片好不好,有多好,这些机器怎么理解呢?如果不能把图片质量变成一个数学上的向量,那永远都无法加入到排序模型里面去。

这一阶段是真正考验算法工程师的地方了,那就是将特征向量化,小明观察到越好看的图像往往颜色变化更多,而质量差的图片往往颜色没什么变化,于是他想到一种办法,先把图像数据进行傅里叶变换,变成频域的数据,根据傅里叶变换的性质,高频部分的幅度高表示图像的颜色变化很明显,如果低频部分高,表示颜色变化不明显,这和观察到的图像信息基本能匹配上,这样一副图像的好坏,就可以用傅里叶变换后高频部分的幅度表示了,然后在做一些归一化的变化,就把图像向量化了,向量化以后就可以加入到排序模型去了。

这一步,你可能会用到你学习的机器学习模型,但肯定只占了一小部分,大部分情况需要你根据当前场景自己建立一个数学模型,而不是机器学习模型,你说这一阶段需要什么技能?虽然我这里举的例子比较极端,但是数学抽象能力,数学建模能力和数学工具的熟练使用是必不可少的,并且同样需要较强的编程能力,这已不是上一步的脚本能力,是实打实的计算机算法编程能力了。

算法验证

算法是设计好了,还要设计一个算法的离线验证方法来证明给你的老大看说我的算法是有效果的,不然哪那么多机会让你到线上去试啊,这一步也是各种综合能力的组合,关键是在这一步上,你要用一种通俗的语言从理论上说服你的老大,这是一种什么能力?强大的语言表达能力。

除了这个你还需要设计出一个上线以后的AB测试方案,能够很好的测试出你的算法是否真的有效。

洗数据

特征找到了,算法也设计得差不多能体现特征了,体力活来了,那就是洗数据,这是算法工程师的必修课,数据不是你想要什么样子他就长得什么样子的,所以要把数据变成你想要的样子,然后去掉无效的数据可是个体力活。

像上面这个例子,首先可能大家的图片大小都不一样,要变成一个尺寸才好进行变换,有些商品有多个图片,可能需要找出质量最好的再处理等等等等。

这一阶段首先也是要脚本语言处理能力,而且还需要掌握一些数据处理工具的使用,关键还要有足够的耐性和信心,当然,必不可少的是优秀的编程能力。

工程化

好了,前面的坑你全跨过来了,到了这一步了,呵呵,算法设计完了,数据也准备好了,估计半年过去了,那赶快放到线上去吧,你以为拿着一堆脚本就能上线了啊,得考虑工程化了,如果把你的算法嵌入到原有系统中,如果保证你的算法的效率,别一跑跑一天,代码的健壮性也要考虑啊,如果是在线算法,还得考虑性能,别把内存干没了。

这一步,你才真正的用上了你上面学的机器学习的hadoop,spark工具,看了上面说的,要完成工程化这一步,得有什么能力不用我说了吧,这是一个标准的软件开发工程师的必要技能,还是高级开发工程师哦。

上线看效果

所有的都做完了,前前后后10个月了,终于可以上线了,好了,真正的考验来了,看看上线的效果呗,产品经理说,做个AB测试吧,结果呵呵了,点击率降低了,小明啊!这10个月忙活下来点击率还下降了???老板还不把你骂死,所以,你必须有强大的抗打击能力。

呵呵,赶快下线吧,从头看看哪里出了问题,又花了一个月修改了算法,重新上线,恩,这次不错,点击率提高了0.2个百分点,继续努力吧,看看还有没有什么可以挖掘的,于是,你就goto到了看数据的那一步。

别看这0.2,大的数据集合下,提高0.2已经是非常不错的提高了,所以花这么多钱,养算法工程师,要是一年能出几次0.2,那就是真值了。

让我们总结一下

上面这么多的过程,靠一个人全部完成确实有点困难,我说的有点夸张,中间有些步骤是有人配合的,观察数据的时候有产品经理配合你,洗数据的时候有数据工程师配合你,工程化的时候有系统工程师配合你,但是作为机器学习的算法工程师,整个过程你都得能hold得住啊,所以即便是你一个人应该也要能完成整个流程才行。

这只是一个标准的算法工程师应该具备的能力,当然我这里是以搜索算法举例的,其他的算法工程师也差不太多,总跑不过上面几个过程,当然,你要是牛人,能根据场景修改这个机器学习的模型,甚至自己能想个模型,那就更厉害了。

好,我们把上面的重点标记的部分取出来汇总一下,让我们看看一个算法工程师需要具备哪些技能:

  • 数据敏感性,观察力
  • 数学抽象能力,数学建模能力和数学工具的熟练使用的能力
  • 能随手编脚本代码的能力,强大的计算机算法编程能力,高级开发工程师的素质
  • 想象力,耐性和信心,较强的语言表达能力,抗打击能力
  • 然后,还有很关键的一点,你需要很聪明。

当然,你如果能做到以上那么几点,基本上也会很聪明了,如果真能做到这样,反而那些机器学习的模型,理论和工具就显得不那么重要了,因为那些也只是知识和工具,随时都可以学嘛。

你说,这些是靠看几篇博客,看几本书,上几次课就能具备的么??

当然,我们这里讨论的是一般情况,如果你一心就是做研究的话,那么需要把上述技能熟练度再提高一个量级。

最后,正在学习机器学习,励志做算法工程师的你,准备好踏这些坑了么??

看到这篇文章很有感触。

机器学习算法工程师在做什么?相关推荐

  1. 机器学习算法工程师的自我修养

    https://www.toutiao.com/a6647345854191501828/ 2019-01-18 10:14:00 通往机器学习算法工程师的进阶之路是崎岖险阻的.<线性代数> ...

  2. 《百面机器学习算法工程师带你去面试》资料学习

    <百面机器学习算法工程师带你去面试>收录了超过100道机器学习算法工程师的面试题目和解答,其中大部分源于Hulu算法研究岗位的真实场景.本书从日常工作.生活中各种有趣的现象出发,不仅囊括了 ...

  3. 大疆2019校招提前批机器学习算法工程师在线笔试题目回忆版

    最后还涉及到两道16分的在线编程题目,但是我忘记了,故没有列出来,望大家原谅2333. 大疆2019年校招提前批机器学习算法工程师B卷题目回忆版 1 考察关于各种激活函数 sigmoid.tanh.r ...

  4. 转载:机器学习算法工程师秋招总结

    转载:原文链接:https://blog.csdn.net/zichen_ziqi/article/details/83308809 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权 ...

  5. 机器学习算法工程师面试集锦(更新中)

    机器学习算法工程师面试集锦(更新中) 面试问题汇总 常用的损失函数 介绍交叉验证 特征选择方法 机器学习项目的一般步骤 经验风险最小化与结构风险最小化 训练决策树时的参数是什么 在决策树的节点处分割标 ...

  6. 2018年机器学习算法工程师求职经验搬运

    机缘巧合下遇到了这篇文章... ---------------------  作者:GeekZW  来源:CSDN  原文:https://blog.csdn.net/zichen_ziqi/arti ...

  7. Interview:人工智能岗位面试—人工智能岗位求职之机器学习算法工程师必备知识框架结构图

    Interview:人工智能岗位面试-人工智能岗位求职之机器学习算法工程师必备知识框架结构图 目录 机器学习算法工程师思维导图 机器学习算法工程师思维导图 后期继续更新-- 1.思维导图01

  8. 作者:卢祥虎,男,北京金信网银金融信息服务有限公司机器学习算法工程师。...

    卢祥虎,男,北京金信网银金融信息服务有限公司机器学习算法工程师,目前从事P2P风险预警建模相关的算法设计工作,在机器学习算法领域具有一定的理论与实战经验,擅长机器学习中数学算法的优化与改进等.

  9. 【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题

    岗位:高级机器学习算法工程师 笔试时间:2022-9-28 1 简答题 1.神经网络中防止过拟合的方法 (1)降低模型复杂度 (2)正则化 ,正则化正是通过在损失函数上添加额外的参数稀疏性惩罚项(正则 ...

  10. 杭州校招 | ​阿里钉钉算法技术团队招聘NLP/机器学习算法工程师

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 阿里巴巴 钉钉是阿里巴巴集团打造的全球头部企业级智能移动办公平台,致力于帮 ...

最新文章

  1. poj3617 贪心
  2. 【Python刷题】_5
  3. C# 数组与 list 互相转换案例
  4. api分层内部外部 spring_java - Spring boot restful API分层架构验证 - SO中文参考 - www.soinside.com...
  5. jquery插件 autoComboBox 自动创建联动的下拉框 如:省市区联动
  6. curl和file_get_contents 区别以及各自的优劣
  7. shell读取php 数组长度,shell数组的定义、数组长度
  8. matlab 查找字符串中第一个不为空格的_替换空格(剑指offer第三题)
  9. 用C++ Builder对图像进行特殊效果处理
  10. java加密 js解密_前后端API交互加密解密(js、Java)
  11. 基于javaweb的物资配送管理系统_基于JAVA的物流配送管理系统毕业设计
  12. 计算机附件中的超级终端,windows10系统中附件中没有超级终端怎么解决
  13. 理想气体的质量流量计算
  14. C++11之内联名字空间(inline namespace)和ADL特性(Argument-Dependent name Lookup)
  15. Pega How To系列之一:如何在页面上动态显示/隐藏内容 ----by Cheney Wang
  16. dwc_pcie iip 代码分析
  17. RxJava2.x是一个非常棒的流式编程,采用的观察者模式思想,事件的产生者产生事间之后发送给绑定的接受者,接受顺序与发送顺序一致.但是 是独立于RxJava1.x存在,本文讲解RxJava2.x的简
  18. 硬件设计——MOS管实际应用详解
  19. windows update 80092004错误
  20. 爬虫的原理和数据抓取

热门文章

  1. easypoi插入超链接
  2. 中国石油焦市场供需态势及投资潜力预测报告2021年版
  3. 月薪1万在中国是什么水平?答案揭露残酷的收入真相
  4. 开源分销系统java_Java版Spring Boot Spring Cloud B2B2C电子商务-分销系统
  5. 腾讯地图点聚合开发-实现地图找房功能
  6. 手动实现获取微信openid
  7. 原型设计工具Axure
  8. 智能药盒 树莓派与Arduino实现药板自助取药
  9. 需求变更对软件质量的影响
  10. Deecamp夏令营面试及结营体验