精华内容
下载资源
问答
  • 随着大数据场景和人工智能技术的普及,机器学习算法工程师已经成为求职市场上最炙手可热的职位——可能都没有之一。但是机器学习技术对于缺乏一定基础的同学来讲还是不太容易入门和上手。具体来说,很多同学对于需要...

    随着大数据场景和人工智能技术的普及,机器学习算法工程师已经成为求职市场上最炙手可热的职位——可能都没有之一。但是机器学习技术对于缺乏一定基础的同学来讲还是不太容易入门和上手。具体来说,很多同学对于需要掌握哪些具体技能缺乏一个系统性认识,从而导致学习效率低下或技能与职位要求不符等诸多问题。

    本次 Chat 的目的是系统性介绍成为一名机器学习算法工程师需要掌握的技能,包括但不限于:

    1. 机器学习理论知识;
    2. 概率和统计基础;
    3. 基础开发能力;
    4. 特征工程;
    5. 系统架构设计、

    通过这次分享,有意成为机器学习算法工程师的同学可以系统性地了解自己需要学习的知识和工具,在脑海中形成一套系统的知识框架,用以指导自己后面的学习,摆脱盲目、碎片化的学习方式;而已经具有一定经验的同学也可以找到持续学习的方法,让自己的能力得到不断提升。

    通过本次分享了解了知识框架之后,在答疑交流环节我还会针对性解答大家的一些具体疑惑,保证大家做到对知识的彻底吸收。

    这大概是你用十块钱能买到最值得的东西了。

    阅读全文: http://gitbook.cn/gitchat/activity/5aa365261d7da22e0c6a3b0e

    您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

    FtooAtPSkEJwnW-9xkCLqSTRpBKX

    展开全文
  • 如何成为一名AI人工智能算法工程师

    万次阅读 多人点赞 2019-06-30 12:25:21
    经常有朋友私信问,如何学python呀,如何敲代码呀...来看看你距离成为一名AI工程师还有多远吧~ ⭐具体内容: 我是因为什么开始接触敲代码 人工智能/机器学习/深度学习 自学如何寻找学习资料 如何选择编...

    https://www.toutiao.com/a6707050434688713227/

     

    如何成为一名AI人工智能算法工程师?

     

    经常有朋友私信问,如何学python呀,如何敲代码呀,如何进入AI行业呀?

    正好回头看看自己这一年走过的路,进行一次经验总结。

    来看看你距离成为一名AI工程师还有多远吧~

    ⭐具体内容:

    我是因为什么开始接触敲代码

    人工智能/机器学习/深度学习

    自学如何寻找学习资料

    如何选择编程语言/框架

    校招/社招/实习/面试经验

    一碗鸡汤

    ⭐声明:

    本篇内容均属于个人观点,建议采纳对自己有用的经验,如有疏漏,欢迎指正,共同进步!

    2017年5月开始第一份实习 / 2017年7月开始学敲代码 / 2017年11月硕士毕业

    擅长的编程语言:R / Python

    不花钱报班,全靠自学,最初是因为穷,后来发现“开源”的世界真是太美好了!

    如何成为一名AI人工智能算法工程师?

     

    我是因为什么开始接触敲代码?

    我的第一个模型是什么

    由于本科是数学,研究生是量化分析,第一份实习是一家金融科技公司,开始接触所谓的“Fintech”

    第一个任务就是做客户的信用评分卡模型,目的给每个用户打一个信用分数,类似支付宝的芝麻信用分。这是银行标配的一个模型,最常见最传统的算法用的就是逻辑回归

    在课堂上使用的工具是SAS,SPSS,属于有操作界面的,菜单非常齐全,只需要鼠标点一点就能建模,很好上手。但是SAS这些要付钱的,年费还是相当的贵,所以深圳大部分公司进行数据分析和建模工作都选择开源免费的R语言或者Python。这就体现了掌握一门编程语言的重要性。

    虽然说是建模任务,但是前三个月跟建模基本都扯不上边。都在做数据清洗,表格整理(摊手),都在library各种包,用的最多的可能是data.table和dplyr。没办法,很多模型都有包可以直接调用,是最简单的环节了。其实一开始,我一直在犯很低级的错误,各种报错,没有library啦,标点符号没打对啦,各种很low的错误犯了一次又一次,而且连报错的内容都不会看,不知道怎么去改正。如果你也像我一样,真的请不要灰心,我就是这样走过来的。对着错误一个个去解决就好了~

    当时什么都不知道的时候,觉得真难呀,每个环节都有那么多细节要照顾,要学的那么多,做完一个还有一个,还要理解业务含义。但是当完整的做一遍之后再回头,就会觉得,其实,也没那么难嘛~

    如何成为一名AI人工智能算法工程师?

     

    敲代码容易吗?

    因为我不是计算机专业的,所以基本上属于没怎么敲过代码的那种。

    后来发现程序员也有好多种类的,前端后端等,因此敲的代码种类也很多,才会有几十种的编程语言,下图是一些这几年的主流语言。

    如何成为一名AI人工智能算法工程师?

     

    实习时我一直被队友嫌弃很蠢,而且一开始敲的东西怎么也运行不通,运行出来的都是鬼结果。有n次想放弃的念头,“我干嘛一定要敲这玩意儿?”,但也有n+1次想坚持的理由,因为我真的喜欢我正在做的事。为什么用“坚持”,因为真的不容易。不难,但真的需要有耐心。

    一开始我的状态就是一行行代码的运行,一个个命令的熟悉,反复看,反复运行。

    • 从敲出第一行代码到敲出第一个完整的模型花了3个月
    • 学习XGBoost,光是理论学了3个月,因为前期铺垫要学的还有adaboost/gbdt和各种机器学习的知识模块
    • 从R切换到python花了1个月
    • 从机器学习(Machine Learning)切换到自动机器学习(Auto Machine Learning)花了2个月
    • 从NLP零基础到搭建一个智能问答机器人花了1个月

    从一年前的“什么是过拟合,什么是交叉检验,损失函数有哪些”到后来参加全球人工智能峰会时都能听懂的七七八八,会觉得,努力没有白费呀!

    如何成为一名AI人工智能算法工程师?

     

    可以看出,经过前面的积累,后面会学的越来越快。

    慢慢的就从一开始的那种“唉,怎么又报错啊,好挫败”的心态变成现在的“啊?没error?感觉不对啊,再查验一遍吧”这种抖M倾向的人。代码虐我千百遍,我已经被磨的没有了脾气。

    已经有几个朋友说想转行了,我何曾没想过,只是不知不觉中坚持了下来而已。因为热爱,越虐越停不下来

    小结

    设定一个非常清晰的目标

    为什么第一个写:“我是因为什么开始敲代码的”,因为动机真的非常重要!

    所以,很多人在问我“如何学python?”这种问题时,我的第一回答都是“你学python用来干嘛?”

    在学校也敲打过python,做个爬虫demo什么的,因为目的性不强没多久就放一边了。清晰的目标就比如说你要做NLP,你要知道NLP的应用有智能问答,机器翻译,搜索引擎等等。然后如果你要做智能问答你要知道现在最发达的技术是深度学习,使用的算法有RNN/LSTM/Seq2Seq/等等一系列。而我的清晰目标是在实习的时候给我的任务。当任务很明确的时候,所需要的语言就明确了,所要学习的算法也就明确了,很多东西就顺理成章了不用一头乱撞了。

    从金融到科技

    AI的应用范围很广,每一个研究方向都是无穷尽的。由于金融公司很少与图像处理,NLP等技术会有交集,而我强大的好奇心让我决定去纯粹的科技公司一探究竟。目前已投身于智能家居,目标是Javis

    人工智能/机器学习/深度学习

    我经常在公交的广告牌上看见这些词,好像哪家公司没有这个技术就落后了似的。更多的还有强化学习,迁移学习,增量学习等各种学习。

    这些词儿之间到底什么关系

    机器学习是人工智能的一种,深度学习是机器学习的一种。学AI先学机器学习

    如何成为一名AI人工智能算法工程师?

     

    计算机的“算法” 与 数学的“算法” 的区别

    理论知识对于AI算法工程师极其重要。敲代码只是思路的一个实现过程。这里的“算法”和计算机CS的“算法”还不太一样,AI算法是偏数学推导的,所以数学底子还是需要点的,学的越深,要求越高。面试的时候,很少让手写代码,90%都是在问模型抠算法细节。

    在学校我是一个不爱记笔记的人,甚至是一个不爱上课的人。但是自从入了机器学习的坑后,笔记写的飞起~

    如何成为一名AI人工智能算法工程师?

     

    如何成为一名AI人工智能算法工程师?

     

    机器学习的框架

    按照数据集有没有Y值可以将机器学习分为监督学习、半监督学习和无监督学习。监督学习是分类算法,无监督学习是聚类算法。

    如何成为一名AI人工智能算法工程师?

     

    机器学习的通用流程和相关技术如下图:

    如何成为一名AI人工智能算法工程师?

     

    ML这棵树还可以有更多的分支。先有个整体感受,再一个一个的解决掉。这里的知识点也是面试最爱问的几个,是重点呀!面试过的同学应该都不陌生了。

    机器学习如何入门

    机器学习之大,初学者都无从下手。说白了,机器学习就是各种模型做预测,那么就需要有数据,要想有好的效果,就要把原始的脏数据洗干净了才能用。数据内隐藏的信息有时候是肉眼不可见的,那么就需要一些相关技巧来把有用信息挖出来。所有绞尽脑汁使用的技巧,都是为了能预测的更准确。但是谁也没办法做到百分百的命中。

    这里简单介绍下机器学习的三大块:传统的机器学习ML、图像处理CV、自然语言处理NLP

    再推荐一个入门神器:

    Kaggle(www.kaggle.com)

    这是一个世界级的最权威的机器学习比赛,已被谷歌收购。上面的赛题不仅很有代表性,还有很多免费的优秀的数据集供你使用,要知道收集数据是机器学习的第一大难题,它就帮你解决了。入门不用立马参加比赛,把数据下载下来,尽情折腾就好了,要是没有思路,去网上搜别人的解题笔记和代码借鉴一下也很美好~因为这是大家都争相打榜的比赛,所以你并不孤单。

    ML入门该参加的赛题(Titanic)

    如何成为一名AI人工智能算法工程师?

     

    图像入门该参加的赛题(数字识别)

    如何成为一名AI人工智能算法工程师?

     

    NLP入门该参加的赛题(情感分析、quora问句语义匹配)

    如何成为一名AI人工智能算法工程师?

     

    如何成为一名AI人工智能算法工程师?

     

    等做完第一个titanic的比赛应该就有点感觉了。上面4个比赛我都做过,觉得很经典,很适合入门。

    深度学习的入门算法有哪些

    如今的样本输入可以是文字,可以是图像,可以是数字。

    深度学习是跟着图像处理火起来的。甚至现在这个概念都火过了“机器学习”。

    深度学习的算法主要都是神经网络系列。入门推荐CNN(卷积神经网络)的一系列:

    LeNet5

    AlexNet

    VGG

    GoogleNet

    ResNet

    自学如何寻找学习资料?

    开源的世界,美好的世界❤

    “开源”,我的爱!代码届里开源的中心思想就是,share and free

    对于机器学习,网上的社区氛围特别好,分享的很多很全面,而且MLer都非常乐于助人。

    介绍几个我经常逛的社区,论坛,和网页:

    kaggle (www.kaggle.com)

    全球最权威的机器学习比赛,已被谷歌收购。赛题覆盖传统机器学习、nlp、图像处理等,而且都是很实际的问题,来自各行各业。kaggle是数一数二完善的ML社区了,赛题开放的数据集就很有用,非常适合新手练手。对优秀的kaggler也提供工作机会。

    github(www.github.com)

    全球最大同性交友网站,适合搜项目,开源大社区,大家一起看星星,看issue~

    StackOverFlow(www.stackoverflow.com)

    代码报错找它,代码不会敲找它!所有与代码相关的坑,基本都有人踩过啦

    csdn(www.csdn.net)

    最接地气的博客聚集地,最常看的网页之一,一般用来搜索细节知识点或者代码报错时

    sklearn(scikit-learn.org/stable)

    专业做机器学习100年!各算法各技巧的例子code应有尽有

    medium(medium.com)

    创办人是Twitter的创始人,推崇优质内容,国内很多AI公众大号的搬运都来自于这里,medium里每个作者都有自己独特的见解,值得学习和开拓眼界,需要科学上网

    towards data science(towardsdatascience.com)

    与medium很像,需要科学上网

    google AI blog(ai.googleblog.com)

    谷歌的AI团队维护的博客,每天至少更新一篇技术博客。刚在上海开的谷歌开发者大会宣布将会免费开放机器学习课程,值得关注一下,毕竟是AI巨头

    各种大神的技术博客/个人网站

    有很多的网站,会不定期的更新在我的个人博客里

    有口碑的AI公开课平台

    首先说明我没有上课,也没有报班,属于个人学习习惯问题。但考虑到学习差异性,所以还是总结了口碑排名靠前的课程系列。前提,需要有一定数学基础,没有的可以顺便补一补。

    coursera(www.coursera.org/browse)

    吴恩达(Andrew Ng)机器学习

    deeplearning.ai(www.deeplearning.ai)

    fast.ai(www.fast.ai)

    专注于深度学习。Fast.ai的创始人就蛮有意思的,是横扫kaggle图像处理的高手,不摆架子,也不故弄玄虚。中心思想就是深度学习很简单,不要怕。fast.ai有博客和社区。Jeremy和Rachel鼓励撰写博客,构建项目,在会议中进行讨论等活动,以实力来代替传统证书的证明作用。

    udacity(in.udacity.com)

    有中文版,课程覆盖编程基础,机器学习,深度学习等。

    网易云课堂

    碎片时间

    科技圈也是有潮流要赶的,等你入坑就知道。

    追最新的论文,最新的算法,最新的比赛,以及AI圈的网红是哪些~有条件的开个twitter,平时娱乐看看机器学习板块还是蛮有意思的,有很多自嘲的漫画~

    推荐几个我超爱看的AI主题美剧

    硅谷(强推!简直是我日常生活,太有共鸣了~下饭剧)

    西部世界(看的时候不要学我一直在思考如何实现这个那个技术)

    实用的小技巧

    浏览器首推 chrome

    当阅读英文网页呼吸困难时,右击选择“翻成中文(简体)”

    考过雅思和GMAT,曾经我也是一个热爱英文的孩子,如今跪倒在海量技术文档和文献里苟活

    搜索问题一定用google,如果没解决是你的问题不是google的锅

    baidu???ummm......别为难我......很少用

    学会提问很重要,搜索格式推荐

    语言+问题,例如:python how to convert a list to a dataframe

    直接复制错误信息,例如:ValueError: No variables to save...

    请把所有的问题往上抛,网上查比问人快!总是问别人会引起关系破裂的~

    学会顺藤摸瓜

    当你读到一个非常不错的技术文档时,看完别急着关掉。这可能是一个个人网站,去观察菜单栏里有没有【About】选项。或者这也可能是一个优秀的社区,看看有没有【Home】选项,去看看po的其它的文章。

    很多优秀网站都是英文,科学上网必不可少

    学习费用不来自课程,可能来自于硬件要求,学生党要利用好学校资源

    小结

    虽然说了那么多,但还是要说请放弃海量资料!用多少,找多少就好了!(别把这句话当耳旁风

    资料不在量多而在于内容是有质量保证的。很多课程或者公众号只管塞知识,你有疑问它也解答不了的时候,这样出来的效果不好,就像一个模型只管训练,却不验证,就是耍流氓

    如何选择编程语言/框架

    首选英语!!!(咳咳,我认真的)

    说到底,语言只是工具,不去盲目的追求任何一种技术。根据任务来选择语言,不一样的程序员选择不一样的编程语言。很多人最后不是把重点放在能力而是炫工具,那就有点走偏了。

    据观察,在机器学习组里R和Python是使用率最高的两门语言,一般你哪个用的顺就用哪个,只要能达到效果就行,除非强制规定。

    我使用之后的感受是,人生苦短,我用python

    用python建个模型到底多难?

    算法任务大致分为两种,一种是普通算法工程师做的“调包、调参”,另一种是高级算法工程师做的,可以自己创建一个算法或者能灵活修改别人的算法。

    先说说建个模到底有多简单吧。

    有优秀的算法封装框架

    tensorflow / caffe / keras /...

    Auto ML 是不可阻挡的一个方向

    Auto ML(auto machine learning),自动机器学习。就是你只管丢进去数据,坐等跑出结果来就行了。前一阵子谷歌的CloudML炒的很火,愿景是让每个人都能建模,但毕竟这种服务是要钱的。所以我研究了下开源的auto sklearn框架的代码,发现了什么呢?建模到底有多简单呢?就,简单到4行代码就可能打败10年工作经验的建模师。

    再说回来,如果你自己根本不知道自己在做什么,只能跑出来一个你不能负责的结果,就是很糟糕的,那还不是一个合格的算法工程师。你的模型必须像你亲生的那样。但是,只要你想,绝对能做到的!

    学习python电脑上要装哪些东西

    Anaconda

    对,就是这么简单粗暴,装这个就ok了

    学python的应该都会面临到底是python2还是python3的抉择吧。语言版本和环境真的很让人头疼,但是Anaconda惊艳到我了,就是可以自定义python环境,你可以左手py2右手py3

    推荐几个python的IDE

    Spyder

    Anaconda自带的ide。界面排版与Rstudio和Matlab很相似。输入什么就输出什么结果,适合分析工作,我写小功能的时候很喜欢用。

    Jupyter Notebook

    Anaconda自带的ide,属于web界面的。当你程序跑在虚拟机,想调代码的时候适合用。

    PyCharm

    对于写项目的,或者代码走读的比较友好。当你需要写好多python文件互相import时,特别好用。

    我的笔记本配置

    (不考虑经济约束的请忽略这条)

    牌子+型号:ThinkPad X1 Carbon

    推荐配置:i7+16G内存+256G(或更多)硬盘

    系统推荐:Linux,因为开源,有空可以玩玩

    校招/社招/实习/面试经验

    如何安排校招

    大厂的开放时间会比较早,密切关注网申时间节点:

    2019届的秋招:2019年7月 - 2019年11月

    2020届的春招:2020年2月 - 2020年4月

    2020届的暑期实习:2020年3月 - 2020年5月

    2020届的秋招:2020年7月 - 2020年11月

    (以此类推)

    手撕代码能力

    建议提早半年开始准备。我的代码也是从实习开始敲起,敲了半年才觉得下手如有神哈哈。不要做没实际意义的课后题,也不要照着书本例题敲,敲完你就忘了,书本这些都是已经排除万难的东西,得不到什么成长。

    入门修炼:全国大学生数学建模竞赛、全美大学生数学建模竞赛、kaggle、天池…

    项目经历/实习经历

    如果明确自己的职业方向为人工智能/数据挖掘类的,请不要浪费时间去申请其他与技术无关的实习。端茶送水,外卖跑腿,打印纸并不能帮你。当时由于身边同学都断断续续出去实习,面前有一份大厂行政的实习,我…竟然犹豫了一下,好在也还是拒绝了。

    尽量选择大厂的技术实习,毕竟以后想进去会更难。但是不要因为一个月拿3000块就只干3000块的活。把整个项目跟下来,了解框架的架构,优化的方向,多去尝试,就算加班(加班在深圳很正常)也是你赚到,思考如何简化重复性工作,去尝试了解自己部门和其他部门的工作内容与方向,了解的越多你对自己想做的事情了解的也越多。我实习做的评分卡模型,除了传统逻辑回归,也尝试新的XGB等等,而且虽然别人也在做,但是私下自己会把整个模型写一遍,包含数据清洗和模型调优等,这样对业务的了解也更透彻,面试起来所有的细节都是亲手做过的,也就比较顺了。

    如果没有实习在手,世界给我们数据挖掘选手的大门还是敞开着的。kaggle上有专门给数据挖掘入门者的练习场。相关的比赛还有很多,包括腾讯、阿里等大厂也时不时会发布算法大赛,目测这样的算法大赛只会越来越多,你坚持做完一个项目,你在平台上还可以得到相关名次,名次越靠前越有利哈哈哈这是废话。

    BAT常见的面试题(不分先后)

    自我介绍/项目介绍

    类别不均衡如何处理

    数据标准化有哪些方法/正则化如何实现/onehot原理

    为什么XGB比GBDT好

    数据清洗的方法有哪些/数据清洗步骤

    缺失值填充方式有哪些

    变量筛选有哪些方法

    信息增益的计算公式

    样本量很少情况下如何建模

    交叉检验的实现

    决策树如何剪枝

    WOE/IV值计算公式

    分箱有哪些方法/分箱原理是什么

    手推SVM:目标函数,计算逻辑,公式都写出来,平面与非平面

    核函数有哪些

    XGB原理介绍/参数介绍/决策树原理介绍/决策树的优点

    Linux/C/Java熟悉程度

    过拟合如何解决

    平时通过什么渠道学习机器学习(好问题值得好好准备)

    决策树先剪枝还是后剪枝好

    损失函数有哪些

    偏向做数据挖掘还是算法研究(好问题)

    bagging与boosting的区别

    模型评估指标有哪些

    解释模型复杂度/模型复杂度与什么有关

    说出一个聚类算法

    ROC计算逻辑

    如何判断一个模型中的变量太多

    决策树与其他模型的损失函数、复杂度的比较

    决策树能否有非数值型变量

    决策树与神经网络的区别与优缺点对比

    数据结构有哪些

    model ensembling的方法有哪些

    小结

    问题是散的,知识是有关联的,学习的时候要从大框架学到小细节。

    没事多逛逛招聘网站看看招聘需求,了解市场的需求到底是什么样的。时代变化很快,捕捉信息的能力要锻炼出来。你可以关注的点有:职业名/职业方向/需要会什么编程语言/需要会什么算法/薪资/...

    每个面试的结尾,面试官会问你有没有什么想问的,请注意这个问题也很关键。

    比如:这个小组目前在做什么项目/实现项目主要用什么语言和算法/…

    尽量不要问加不加班,有没有加班费之类的,别问我为什么这么说(摊手)

    在面试中遇到不理解的,比如C++语法不懂,可以问这个C++具体在项目中实现什么功能。如果你提出好问题,能再次引起面试官对你的兴趣,那就能增加面试成功率。

    应届生就好好准备校招,别懒,别怕输,别怕被拒,从哪里跌倒从哪里起来。社招不是你能招呼的,会更挫败,因为你什么也没做过。

    虽然是做技术的,但是日常social一下还是收益很大的。实习的时候,也要与周围同事和平相处,尤其是老大哥们,也许哪天他就帮你内推大厂去了。内推你能知道意想不到的信息,面试官,岗位需求,最近在做什么项目之类的。

    挑选给你机会的公司,不要浪费自己的时间。不要每家都去,去之前了解这家公司与你的匹配度

    尤其社招,你一改动简历就很多人给你打电话,你要有策略的去进行面试,把握总结每个机会。像我就是东一榔头西一榔头的,好多都是止步于第一面,就没回信儿了,因为每次面完没有好好反思总结,等下次再遇到这问题还是抓瞎,十分消耗自己的时间和信心。

    一碗鸡汤

    一切才刚刚开始,别着急

    AI才刚刚起步,为什么呢?因为上数学课的时候,课本上都是柯西,牛顿,高斯等等,感觉他们活在遥远的时代,很有陌生感。但是现在,我每天用的模型是比我没大几岁的陈天奇创造出来的,我甚至follow他的社交账号,他就鲜活在我的世界里,这种感觉,很奇妙。每次查论文查文献的时候,看2017年出来的都觉得晚了,懊悔自己怎么学的这么慢,看2018年2月出来的才心里有点安慰。这个证明,你在时代发展的浪潮上,也是一切刚刚起步的证明。机遇与挑战并肩出现的时候,是你离创造历史最近的时候。而所谓的风口所谓的浪尖都不重要,重要的是,因为你喜欢

    找一件可以坚持的事,不要停止去寻找的脚步

    当人做喜欢的事情时,会发光呀!

    当你因为真的热爱某件事,而不断接近它的时候,你的灵魂像是被上帝指点了迷津,受到了指示,受到了召唤。你会很自然的知道该做什么,你想做什么,好像生而为了这件事而来。你有时候自己都想不明白为什么做这件事。看过月亮与六便士的应该懂这种使命感~

    如何成为一名AI人工智能算法工程师?

     

    我不是属于聪明的那类人,我是属于比较倔的那种。就是只要我认定的,我认定到底。天知道我有多少次怀疑过自己,有多少次想放弃,但我还是选择咬牙向前,选择相信自己。坚持的意义就在这里。

    如何成为一名AI人工智能算法工程师?

    展开全文
  • 如何成为一名合格的运筹优化算法工程师

    千次阅读 多人点赞 2019-07-23 18:30:35
    作为算法工程师里的一小撮,相比机器学习...所以在这里和自己探讨下,看看如何成为一名更好的、合格的运筹优化算法工程师,给自己一个方向。如果有人不怕被坑,欢迎参考。当然更欢迎拍砖和补充。 引言 运筹学(o...

    作为算法工程师里的一小撮,相比机器学习、人工智能、视觉等算法工程师,运筹优化算法工程师在国内算是又小众又新鲜。作为近几年才慢慢进入大众视野的岗位,人们对其的认知和了解相对其他AI领域,还是较少的。比如我,其实也不清楚到底运筹优化的定位在哪。所以在这里和自己探讨下,看看如何成为一名更好的、合格的运筹优化算法工程师,给自己一个方向。如果有人不怕被坑,欢迎参考,当然更欢迎拍砖和补充。

    引言

    运筹学(operations research, OR)是研究如何为复杂的工程或者管理问题构建数学模型,以及如何分析模型以探索可能解决方案的一门学科。

    这是运筹学,OR的定义,简而言之,作为一名OR人,解决的问题通常是通过三个步骤对现有场景或问题进行优化。

    1. 问题描述和建模
    2. 模型分析和数据分析
    3. 算法求解+应用
      所以这么一看,OR确实不如机器学习、深度学习、计算机视觉等学科那么高大上和牛逼,所以不推荐大家学习。因为工资比前者差很多,HC也差很多。(日常劝退)

    基本要求

    基本要求是要健康,能加班。
    之后是具体的一些要求:

    1. 学历:本科学历劝退,除非你特别优秀,不过这种就推荐去海外读个硕士或博士回来。企业的要求百分之90%以上都是硕士学历起。对博士十分热爱,而且竞争也很激烈,博士很多,海外名校博士也很多,所以学历不够要么劝退,要么改行,要么继续深造。
    2. 专业:涉及运筹学的专业很多,包括并不限于应用数学,运筹学,计算机,工业工程,系统工程,物流工程,管理学等等。基本学习的课程包括运筹学,最优化理论,数值分析,线性代数,统计学,概率论,高数等等,对数学要求高。
    3. 编程能力:最重要,语言常用的有C/C++,Java,Python,Lua等,推荐C/C++,因为快。Python的话建议一定要掌握,完成日常业务和数据分析没问题,但是在工程化追求极致速度的算法的场景下就不推荐了。
    4. 建模和求解能力:cplex、gurobi等求解器必须会用一个,掌握建模三段论,熟悉基本的模型,能建初各种复杂约束,掌握常用线性化技巧。
    5. 数据处理和分析能力:掌握基本数据分析和处理能力,通常用Python做,也就是说,基本的机器学习方法和统计学方法和流程要会,因为模型的输入数据需要你处理和分析。
    6. 搜索能力:能在短时间内找到项目问题的相关资料和参考文献,筛选出有用的、好用的、靠谱的资料,然后复现,修改,比较,对比。
    7. 英语能力:至关重要
    8. 沟通能力
    9. 理解能力和知识量

    拓展需求

    1. 丰富的项目经验
    2. 发表过顶级期刊
    3. 发表过垃圾期刊
    4. 丰富的大厂经验
    5. 高star的开源代码
    6. 优秀的比赛成绩
    7. 计算机专业背景
    8. 算法与数据结构精通
    9. 机器学习,强化学习,深度学习等

    仿真验证

    仿真真的很重要!
    由于现实世界存在的不确定性、非线性模型、无法建模的问题、鲁棒性检验等,导致我们无法百分百确认效果。而如果能构建出一个与真实业务场景高度拟合的仿真世界,来测试我们的解决方案,简直完美。等于提前进行了中试的过程。而计算机仿真世界成本低,无危险,不干扰生产,可模拟各种参数情况,可运行无数次等等,给了我们打动领导和说服业务人员的最基本的武器。

    • 仿真通常需要如下技能:
    1. 离散事件仿真原理
    2. 仿真的语言与框架,商业仿真软件或开源框架都可
    3. 3D可视化
    4. 数据输出和数据分析

    常见的业务场景

    传统运输领域

    VRP 车辆路径问题

    • 城市配送
    • 快递配送
    • 零担物流

    PDP pickup and delivery problem 取送问题

    • 外卖配送
    • 同城闪送
    • 跑腿
    • 滴滴专车

    DARP dial-a-ride problem

    • 滴滴拼车
    • 共享公交

    share bike rebalance problem

    • 共享单车调度
    • 投放
    • 停车点选址

    TSP 旅行商问题

    • 客户拜访
    • 门店巡查

    facilitity location problem 设施选址问题

    • 门店选址
    • 仓库选址

    hub location problem 枢纽选址问题

    • 轴辐式网络枢纽选址和分配

    工业生产领域

    2D/3D loading problem and bin packing problem 装箱问题

    • 货物装箱
    • 货物打包

    cut stock 下料问题

    • 原材料分割
    • 磁盘打包

    Job schedule,work shop

    • 流水线生产调度
    • 排班排产

    航空领域

    • ARP 航班恢复
    • 航班计划
    • crew assignment

    仓库

    • 选址
    • layout 设计
    • 货位分配
    • agv,rgv调度
    • 拣货调度的
    • 库存控制和管理
    • 补货管理

    零售

    dynamic price 动态定价

    revenue management 收益管理

    产品设计,广告管理

    其他

    常用的求解方法

    精确算法

    • 枚举法 brute
    • 求解器:1)gurobi 2)cplex 3)SCIP 等 致敬国产求解器开发者!
    • BB,BC,BP,BCP
    • column generation
    • 拉格朗日乘子法
    • Benders decomposition

    启发式

    • Construction Heuristics
    • Local Search
    • Metaheuristics:single trajectory & popluation based

    全栈:五个维度

    1. 数据分析:找数据,辅助决策,指标
    2. 机器学习:预测,降低不确定性,发现规律
    3. 运筹优化:建立模型,寻找优化点,给出更好的解
    4. 仿真建模:验证,实验,测试
    5. 强化学习:online场景的新方向

    工具

    Git

    • 会使用git管理代码版本,实现备份、迭代与他人协作开发的能力
    • 推荐廖雪峰老师的课程

    SCI-hub

    • 下载英文文献的神器,世界变得更美好的重要贡献者。
    • 请点击SCIHUB

    PPT

    • 及其重要的工具,海量技巧值得玩味。

    Markdown

    • 方便快捷,一般用有道云笔记或印象笔记
    • 本文也是用Markdown写的,可以自己在csdn用Markdown格式试着写一篇

    Anaconda

    • 解决python相关的需求

    Notepad++

    • 好用的文本编辑器

    公众号

    1. 数据魔法师:华科的秦虎教授团队维护的,学习算法的良心地方
    2. 航音绕梁:同济梁哲教授团队维护,航空OR最强,yyds
    3. 东南数智港:东南薛巍立教授团队维护,品类管理,强化学习,论文复现,我的珍藏
    4. 运筹&帷幄:里面有一些信息吧,运筹偏少,AI挺多的

    求职公司分析

    阿里系

    1. 菜鸟
    2. 盒马
    3. 饿了么
    4. 阿里云
    5. MMC

    快递系

    1. 顺丰科技
    2. 顺丰同城
    3. 丰巢
    4. 德邦
    5. 中通

    航空系

    1. 春秋航空
    2. 四川航空
    3. 东方航空
    4. 悠桦林
    5. 派迩

    互联网

    • 滴滴
    • 京东
    • 字节跳动
    • 网易
    • 华为

    新独角兽

    • 美菜网
    • 货拉拉
    • 点我达
    • 便利蜂
    • 秒针系统
    • 松果出行
    • 钱大妈
    • 喜茶
    • 猿辅导
    展开全文
  • 而要成为一名合格的机器学习算法工程师(以下简称算法工程师)更是难上加难,因为在掌握工程师的通用技能以外,还需要掌握一张不算小的机器学习算法知识网络。下面我们就将成为一名合格的算法工程师所需的技能进行...

    成为一名合格的开发工程师不是一件简单的事情,需要掌握从开发到调试到优化等一系列能力,这些能力中的每一项掌握起来都需要足够的努力和经验。而要成为一名合格的机器学习算法工程师(以下简称算法工程师)更是难上加难,因为在掌握工程师的通用技能以外,还需要掌握一张不算小的机器学习算法知识网络。下面我们就将成为一名合格的算法工程师所需的技能进行拆分,一起来看一下究竟需要掌握哪些技能才能算是一名合格的算法工程师。





    1. 基础开发能力


    所谓算法工程师,首先需要是一名工程师,那么就要掌握所有开发工程师都需要掌握的一些能力。有些同学对于这一点存在一些误解,认为所谓算法工程师就只需要思考和设计算法,不用在乎这些算法如何实现,而且会有人帮你来实现你想出来的算法方案。这种思想是错误的,在大多数企业的大多数职位中,算法工程师需要负责从算法设计到算法实现再到算法上线这一个全流程的工作。笔者曾经见过一些企业实行过算法设计与算法实现相分离的组织架构,但是在这种架构下,说不清楚谁该为算法效果负责,算法设计者和算法开发者都有一肚子的苦水,具体原因不在本文的讨论范畴中,但希望大家记住的是,基础的开发技能是所有算法工程师都需要掌握的。


    基础开发所涉及到的技能非常的多,在这里只挑选了两个比较重要的点来做阐述。


    2. 单元测试


    在企业应用中,一个问题的完整解决方案通常包括很多的流程,这其中每个环节都需要反复迭代优化调试,如何能够将复杂任务进行模块划分,并且保证整体流程的正确性呢?最实用的方法就是单元测试。单元测试并不只是简单的一种测试技能,它首先是一种设计能力。并不是每份代码都可以做单元测试,能做单元测试的前提是代码首先是可以划分为多个单元——也就是模块的。在把项目拆解成可独立开发和测试的模块之后,再加上对每个模块的独立的、可重复的单元测试,就可以保证每个模块的正确性,如果每个模块的正确性都可以保证,那么整体流程的正确性就可以得到保证。


    对于算法开发这种流程变动频繁的开发活动来讲,做好模块设计和单元测试是不给自己和他人挖坑的重要保证。也是能让自己放心地对代码做各种改动优化的重要前提。




    3. 逻辑抽象复用


    逻辑的抽象复用可以说是所有软件开发活动中最为重要的一条原则,衡量一个程序员代码水平的重要原则之一就是看他代码中重复代码和相似代码的比例。大量重复代码或相似代码背后反映的是工程师思维的懒惰,因为他觉得复制粘贴或者直接照着抄是最省事的做法。这样做不仅看上去非常的丑陋,而且也非常容易出错,更不用提维护起来的难度。


    算法开发的项目中经常会有很多类似逻辑的出现,例如对多个特征使用类似的处理方法,还有原始数据ETL中的很多类似处理方法。如果不对重复逻辑做好抽象,代码看上去全是一行行的重复代码,无论是阅读起来还是维护起来都会非常麻烦。


    4. 概率和统计基础


    概率和统计可以说是机器学习领域的基石之一,从某个角度来看,机器学习可以看做是建立在概率思维之上的一种对不确定世界的系统性思考和认知方式。学会用概率的视角看待问题,用概率的语言描述问题,是深入理解和熟练运用机器学习技术的最重要基础之一。


    概率论内容很多,但都是以具体的一个个分布为具体表现载体体现出来的,所以学好常用的概率分布及其各种性质对于学好概率非常重要。对于离散数据,伯努利分布、二项分布、多项分布、Beta分布、狄里克莱分布以及泊松分布都是需要理解掌握的内容;对于离线数据,高斯分布和指数分布族是比较重要的分布。这些分布贯穿着机器学习的各种模型之中,也存在于互联网和真实世界的各种数据之中,理解了数据的分布,才能知道该对它们做什么样的处理。


    此外,假设检验的相关理论也需要掌握。在这个所谓的大数据时代,最能骗人的大概就是数据了,掌握了假设检验和置信区间等相关理论,才能具备分辨数据结论真伪的能力。例如两组数据是否真的存在差异,上线一个策略之后指标是否真的有提升等等。这种问题在实际工作中非常常见,不掌握相关能力的话相当于就是大数据时代的睁眼瞎。


    在统计方面,一些常用的参数估计方法也需要掌握,典型的如最大似然估计、最大后验估计、EM算法等。这些理论和最优化理论一样,都是可以应用于所有模型的理论,是基础中的基础。



    5. 机器学习理论


    虽然现在开箱即用的开源工具包越来越多,但并不意味着算法工程师就可以忽略机器学习基础理论的学习和掌握。这样做主要有两方面的意义:


    掌握理论才能对各种工具、技巧灵活应用,而不是只会照搬套用。只有在这个基础上才能够真正具备搭建一套机器学习系统的能力,并对其进行持续优化。否则只能算是机器学习搬砖工人,算不得合格的工程师。出了问题也不会解决,更谈不上对系统做优化。


    学习机器学习的基础理论的目的不仅仅是学会如何构建机器学习系统,更重要的是,这些基础理论里面体现的是一套思想和思维模式,其内涵包括概率性思维、矩阵化思维、最优化思维等多个子领域,这一套思维模式对于在当今这个大数据时代做数据的处理、分析和建模是非常有帮助的。如果你脑子里没有这套思维,面对大数据环境还在用老一套非概率的、标量式的思维去思考问题,那么思考的效率和深度都会非常受限。


    机器学习的理论内涵和外延非常之广,绝非一篇文章可以穷尽,所以在这里我列举了一些比较核心,同时对于实际工作比较有帮助的内容进行介绍,大家可在掌握了这些基础内容之后,再不断探索学习。


    6. 基础理论


    所谓基础理论,指的是不涉及任何具体模型,而只关注“学习”这件事本身的一些理论。以下是一些比较有用的基础概念:


    VC维。VC维是一个很有趣的概念,它的主体是一类函数,描述的是这类函数能够把多少个样本的所有组合都划分开来。VC维的意义在哪里呢?它在于当你选定了一个模型以及它对应的特征之后,你是大概可以知道这组模型和特征的选择能够对多大的数据集进行分类的。此外,一类函数的VC维的大小,还可以反应出这类函数过拟合的可能性。


    信息论。从某种角度来讲,机器学习和信息论是同一个问题的两个侧面,机器学习模型的优化过程同时也可以看作是最小化数据集中信息量的过程。对信息论中基本概念的了解,对于机器学习理论的学习是大有裨益的。例如决策树中用来做分裂决策依据的信息增益,衡量数据信息量的信息熵等等,这些概念的理解对于机器学习问题神本的理解都很有帮助。这部分内容可参考《Elements of Information Theory》这本书。


    正则化和bias-variance tradeoff。如果说现阶段我国的主要矛盾是“人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾”,那么机器学习中的主要矛盾就是模型要尽量拟合数据和模型不能过度拟合数据之间的矛盾。而化解这一矛盾的核心技术之一就是正则化。正则化的具体方法不在此讨论,但需要理解的,是各种正则化方法背后透露出的思想:bias-variance tradoff。在不同利益点之间的平衡与取舍是各种算法之间的重要差异,理解这一点对于理解不同算法之间的核心差异有着非常重要的作用。


    最优化理论。绝大多数机器学习问题的解决,都可以划分为两个阶段:建模和优化。所谓建模就是后面我们会提到的各种用模型来描述问题的方法,而优化就是建模完成之后求得模型的最优参数的过程。机器学习中常用的模型有很多,但背后用到的优化方法却并没有那么多。换句话说,很多模型都是用的同一套优化方法,而同一个优化方法也可以用来优化很多不同模型。对各种常用优化方法的和思想有所有了解非常有必要,对于理解模型训练的过程,以及解释各种情况下模型训练的效果都很有帮助。这里面包括最大似然、最大后验、梯度下降、拟牛顿法、L-BFGS等。


    机器学习的基础理论还有很多,可以先从上面的概念学起,把它们当做学习的起点,在学习过程中还会遇到其他需要学习的内容,就像一张网络慢慢铺开一样,不断积累自己的知识。这方面基础理论的学习,除了Andrew Ng的著名课程以外,《Learning from Data》这门公开课也非常值得大家学习,这门课没有任何背景要求,讲授的内容是在所有模型之下的基础中的基础,非常地靠近机器学习的内核本质。这门课的中文版本叫做《机器学习基石》,也可以在网上找到,其讲授者是上面英文版本讲授者的学生。




    7. 有监督学习


    在了解了机器学习的基本概念之后,就可以进入到一些具体模型的学习中了。在目前的工业实践中,有监督学习的应用面仍然是最广泛的,这是因为我们现实中遇到的很多问题都是希望对某个事物的某个属性做出预测,而这些问题通过合理的抽象和变换,都可以转化为有监督学习的问题。


    在学习复杂模型之前,我建议大家都先学习几个最简单的模型,典型的如朴素贝叶斯。朴素贝叶斯有很强的假设,这个假设很多问题都不满足,模型结构也很简单,所以其优化效果并不是最好的。但也正是由于其简单的形式,非常利于学习者深入理解整个模型在建模和优化过程中的每一步,这对于搞清楚机器学习是怎么一回事情是非常有用的。同时,朴素贝叶斯的模型形式通过一番巧妙的变换之后,可以得到和逻辑回归形式上非常统一的结果,这无疑提供了对逻辑回归另外一个角度的解释,对于更加深刻理解逻辑回归这一最常用模型有着非常重要的作用。


    在掌握了机器学习模型的基础流程之后,需要学习两种最基础的模型形式:线性模型和树形模型,分别对应着线性回归/逻辑回归和决策回归/分类树。现在常用的模型,无论是浅层模型还是深度学习的深层模型,都是基于这两种基础模型形式变幻而来。而学习这两种模型的时候需要仔细思考的问题是:这两种模型的本质差异是什么?为什么需要有这两种模型?他们在训练和预测的精度、效率、复杂度等方面有什么差异?了解清楚这些本质的差异之后,才可以做到根据问题和数据的具体情况对模型自如运用。


    在掌握了线性模型和树形模型这两种基础形式之后,下一步需要掌握的是这两种基础模型的复杂形式。其中线性模型的复杂形式就是多层线性模型,也就是神经网络。树模型的复杂形式包括以GDBT为代表的boosting组合,以及以随机森林为代表的bagging组合。这两种组合模型的意义不仅在于模型本身,boosting和bagging这两种组合思想本身也非常值得学习和理解,这代表了两种一般性的强化方法:boosting的思想是精益求精,不断在之前的基础上继续优化;而bagging的思想是“三个臭裨将顶一个诸葛亮”,是通过多个弱分类器的组合来得到一个强分类器。


    这两种组合方法各有优劣,但都是在日常工作中可以借鉴的思想。例如在推荐系统中所我们经常会使用多个维度的数据做召回源,从某个角度来看就是一种bagging的思想:每个单独召回源并不能给出最好表现,但是多个召回源组合之后,就可以得到比每个单独召回源都要好的结果。所以说思想比模型本身更重要。




    8. 无监督学习


    有监督学习虽然目前占了机器学习应用的大多数场景,但是无监督学习无论从数据规模还是作用上来讲也都非常的重要。无监督学习的一大类内容是在做聚类,做聚类的意义通常可以分为两类:一类是将聚类结果本身当做最终的目标,另一类是将聚类的结果再作为特征用到有监督学习中。但这两种意义并不是和某种聚类方法具体绑定,而只是聚类之后结果的不同使用方式,这需要在工作中不断学习、积累和思考。而在入门学习阶段需要掌握的,是不同聚类算法的核心差异在哪里。例如最常用的聚类方法中,kmeans和DBSCAN分别适合处理什么样的问题?高斯混合模型有着什么样的假设?LDA中文档、主题和词之间是什么关系?这些模型最好能够放到一起来学习,从而掌握它们之间的联系和差异,而不是把他们当做一个个孤立的东西来看待。


    除了聚类以外,近年来兴起的嵌入表示(embedding representation)也是无监督学习的一种重要方法。这种方法和聚类的差异在于,聚类的方法是使用已有特征对数据进行划分,而嵌入表示则是创造新的特征,这种新的特征是对样本的一种全新的表示方式。这种新的表示方法提供了对数据全新的观察视角,这种视角提供了数据处理的全新的可能性。此外,这种做法虽然是从NLP领域中兴起,但却具有很强的普适性,可用来处理多种多样的数据,都可以得到不错的结果,所以现在已经成为一种必备的技能。


    机器学习理论方面的学习可以从《An Introduction to Statistical Learning with Application in R》开始,这本书对一些常用模型和理论基础提供了很好的讲解,同时也有适量的习题用来巩固所学知识。进阶学习可使用上面这本书的升级版《Elements of Statistical Learning》和著名的《Pattern Recognition and Machine Learning》。


    9. 开发语言和开发工具


    掌握了足够的理论知识,还需要足够的工具来将这些理论落地,这部分我们介绍一些常用的语言和工具。


    • 开发语言


    近年来Python可以说是数据科学和算法领域最火的语言,主要原因是它使用门槛低,上手容易,同时具有着完备的工具生态圈,同时各种平台对其支持也比较好。所以Python方面我就不再赘述。但是在学习Python以外,我建议大家可以再学习一下R语言,主要原因有以下几点:


    R语言具有最完备的统计学工具链。我们在上面介绍了概率和统计的重要性,R语言在这方面提供的支持是最全面的,日常的一些统计方面的需求,用R来做可能要比用Python来做还要更快。Python的统计科学工具虽然也在不断完善,但是R仍然是统计科学最大最活跃的社区。


    **向量化、矩阵化和表格化思维的培养。**R中的所有数据类型都是向量化的,一个整形的变量本质上是一个长度为一的一维向量。在此基础上R语言构建了高效的矩阵和(DataFrame)数据类型,并且在上面支持了非常复杂而又直观的操作方法。这套数据类型和思考方式也在被很多更现代化的语言和工具所采纳,例如Numpy中的ndarray,以及Spark最新版本中引入的DataFrame,可以说都是直接或间接从R语言得到的灵感,定义在上面的数据操作也和R中对DataFrame和向量的操作如出一辙。就像学编程都要从C语言学起一样,学数据科学和算法开发我建议大家都学一下R,学的既是它的语言本身,更是它的内涵思想,对大家掌握和理解现代化工具都大有裨益。


    除了R以外,Scala也是一门值得学习的语言。原因在于它是目前将面向对象和函数式两种编程范式结合得比较好的一种语言,因为它不强求你一定要用函数式去写代码,同时还能够在能够利用函数式的地方给予了足够的支持。这使得它的使用门槛并不高,但是随着经验和知识的不断积累,你可以用它写出越来越高级、优雅的代码。


    • 开发工具


    开发工具方面,Python系的工具无疑是实用性最高的,具体来说,Numpy、Scipy、sklearn、pandas、Matplotlib组成的套件可以满足单机上绝大多数的分析和训练工作。但是在模型训练方面,有一些更加专注的工具可以给出更好的训练精度和性能,典型的如LibSVM、Liblinear、XGBoost等。


    大数据工具方面,目前离线计算的主流工具仍然是Hadoop和Spark,实时计算方面Spark Streaming和Storm也是比较主流的选择。近年来兴起的新平台也比较多,例如Flink和Tensorflow都是值得关注的。值得一提的是,对于Hadoop和Spark的掌握,不仅要掌握其编码技术,同时还要对其运行原理有一定理解,例如,Map-Reduce的流程在Hadoop上是如何实现的,Spark上什么操作比较耗时,aggregateByKey和groupByKey在运行原理上有什么差异,等等。只有掌握了这些,才能对这些大数据平台运用自如,否则很容易出现程序耗时过长、跑不动、内存爆掉等等问题。


    10. 架构设计


    最后我们花一些篇幅来谈一下机器学习系统的架构设计。所谓机器学习系统的架构,指的是一套能够支持机器学习训练、预测、服务稳定高效运行的整体系统以及他们之间的关系。在业务规模和复杂度发展到一定程度的时候,机器学习一定会走向系统化、平台化这个方向。这个时候就需要根据业务特点以及机器学习本身的特点来设计一套整体架构,这里面包括上游数据仓库和数据流的架构设计,以及模型训练的架构,还有线上服务的架构等等。这一套架构的学习就不像前面的内容那么简单了,没有太多现成教材可以学习,更多的是在大量实践的基础上进行抽象总结,对当前系统不断进行演化和改进。但这无疑是算法工程师职业道路上最值得为之奋斗的工作。在这里能给的建议就是多实践,多总结,多抽象,多迭代。


    机器学习算法工程师领域现状


    现在可以说是机器学习算法工程师最好的时代,各行各业对这类人才的需求都非常旺盛。典型的包括以下一些细分行业:


    推荐系统。推荐系统解决的是海量数据场景下信息高效匹配分发的问题,在这个过程中,无论是候选集召回,还是结果排序,以及用户画像等等方面,机器学习都起着重要的作用。


    广告系统。广告系统和推荐系统有很多类似的地方,但也有着很显著的差异,需要在考虑平台和用户之外同时考虑广告主的利益,两方变成了三方,使得一些问题变复杂了很多。它在对机器学习的利用方面也和推荐类似。


    搜索系统。搜索系统的很多基础建设和上层排序方面都大量使用了机器学习技术,而且在很多网站和App中,搜索都是非常重要的流量入口,机器学习对搜索系统的优化会直接影响到整个网站的效率。


    风控系统。风控,尤其是互联网金融风控是近年来兴起的机器学习的又一重要战场。不夸张地说,运用机器学习的能力可以很大程度上决定一家互联网金融企业的风控能力,而风控能力本身又是这些企业业务保障的核心竞争力,这其中的关系大家可以感受一下。


    但是所谓“工资越高,责任越大”,企业对于算法工程师的要求也在逐渐提高。整体来说,一名高级别的算法工程师应该能够处理“数据获取→数据分析→模型训练调优→模型上线”这一完整流程,并对流程中的各种环节做不断优化。一名工程师入门时可能会从上面流程中的某一个环节做起,不断扩大自己的能力范围。


    除了上面列出的领域以外,还有很多传统行业也在不断挖掘机器学习解决传统问题的能力,行业的未来可谓潜力巨大。

    展开全文
  • 我本科生,拿到了算法岗实习offer。在此总结一下经验,此文仅用来记录经历,市场行情千变万化,不敢说绝对,内容只有参考价值。 首先说一下结论,大厂本科生基本上无机会,简历关都过不了,大概率会被甩出去,没有...
  • 如何成为当下合格的算法工程师

    千次阅读 2017-09-06 21:35:04
    前一段时间听了一个知乎 live,觉得讲的还不错,放在这里提醒自己吧! 出自:知乎Live-如何成为当下合格的算法工程师
  • 而要成为一名合格的机器学习算法工程师(以下简称算法工程师)更是难上加难,因为在掌握工程师的通用技能以外,还需要掌握一张不算小的机器学习算法知识网络。下面我们就将成为一名合格的算法工程师所需的技能进行...
  • 这是一篇关于如何成为一名AI算法工程师的长文

    千次阅读 多人点赞 2019-06-25 09:08:00
    点击上方“Datawhale”,选择“星标”公众号第一时间获取价值内容这是一篇关于如何成为一名AI算法工程师的长文~经常有朋友私信问,如何学python呀,如何敲代码呀,...
  • 如何成为当下一个合格的算法工程师

    万次阅读 多人点赞 2017-12-29 22:11:50
    如何成为当下一个合格的算法工程师 知乎上看了SimonS大神的一个live做了一些笔记 一,Q&A部分: 1.一个特征分析的例子。。。(听不懂) 2. 还是一个机器学习的例子,(听不懂)大致,降低复杂度。 3....
  • 光环大数据 --大数据培训 &人工智能培训 AI 时代如何成为一名优秀的算法工程师 _光环大数据 1算法工程师是做什么的 广义上是指搞软件算法的 也就是开发和应用软件算法实现工业控制和程序 处理除了机器学习之外 还...
  • 来源:Datawhale本文约5000字,建议阅读9分钟。本文和大家分享一篇成为AI算法工程师的文章,助力大家早日成为专业人士~这是一篇关于如何成为一名 AI 算法工程师...
  • 怎样成为一名优秀的算法工程师?这是很多从事人工智能学术研究和产品研发的同学都关心的一个问题。面对市场对人才的大量需求与供给的严重不足,以及高薪水的诱惑,越来越多的人开始学习这个方向的技术,或者打算向...
  • 如何“快”、“准”、“狠”成为优秀算法工程师   https://www.cnblogs.com/DicksonJYL/p/9713948.html   怎样成为一名优秀的算法工程师?这是很多从事人工智能学术研究和产品研发的同学都关心的一个问题。...
  • 算法工程师の自我修养 在学好机器学习、深度学习的理论基础之后,如何使用自己的理论知识来解决实际数据分析中的算法问题呢?对于该问题,在此分享下自己在工业界的一点感受。 作为一个萌新初出校门加入企业实习,...
  • 学习方面的问题 Q1:计算机专业本科生,非ACMER。算法达到什么程度才算是合格,有什么量化手段吗?...Q2:成为数据挖掘工程师有必要要搞编程竞赛吗?现在大二,之前没有接触过竞赛 Answer:数据挖掘的话是Ka...
  • 我很难用三言两语告诉你究竟应该如何做,但我可以告诉你一个合格的算法工程师应该至少需要具备什么样的能力,也许可以帮助你们找到前进的方向。 基础 算法、数据结构 这俩是基础中的基础,作为一个合格的算法工程师...
  • 而要成为一名合格的机器学习算法工程师(以下简称算法工程师)更是难上加难,因为在掌握工程师的通用技能以外,还需要掌握一张不算小的机器学习算法知识网络。 下面我们就将成为一名合格的算法工程师所需的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 598
精华内容 239
关键字:

如何成为算法工程师