从啥也不会的小白,如何成为合格的算法工程师?


从啥也不会的小白,如何成为合格的算法工程师?文章插图
作者 | 梁唐
来源 | TechFlow(ID:techflow2019)
头图 | CSDN 下载自东方IC
大家好 , 今天这篇文章同样来自于大家的提问 。 之前有一个小伙伴在留言当中问我 , 说自己想要从事算法工程师的工作 , 但是不知道应该从哪里入手 , 请问我应该怎么办 。
这其实是一个老生常谈的话题 , 也是一个很大的概念 。 我很难用三言两语告诉你究竟应该如何做 , 但我可以告诉你一个合格的算法工程师应该至少需要具备什么样的能力 , 也许可以帮助你们找到前进的方向 。
从啥也不会的小白,如何成为合格的算法工程师?文章插图
基础1、算法、数据结构这俩是基础中的基础 , 作为一个合格的算法工程师 , 你可以写不出来红黑树 , 也可以不懂网络流 , 但是最基础的排序、递归、动态规划、树、堆栈、队列等算法和数据结构是一定要会的 , 并且还需要有一定的造诣 。
很多不明就里的人 , 会秉持着它们不重要的观点 , 并且以此宣扬不休 。 但是就我个人的经验以及观察而言 , 我发现无论大小互联网公司 , 一个算法工程师的表现 , 和他的算法、数据结构的水平是呈正相关的 。 而且这两块也是面试考察的重点 , 想要去比较好的公司锻炼学习 , 算法和数据结构作为基本功是一定要会的 。 另外 , 这两块的能力对于我们持续学习以及研究互联网行业的其他技术非常有帮助 , 像是分布式系统、机器学习当中的很多内容都和数据结构以及算法相关 。 你会发现算法大牛学习其他技术的速度和质量都非常可怕 , 这并不是没有道理的 。
对于普通的从业者而言 , 这两块的要求不是非常高 , 可以刷一下LeetCode前300题 , 基本上包含了所有常用的算法 。 也可以阅读一下本公众号的算法、数据结构专题 , 基本上也覆盖了所有基础的内容 。
2、机器学习既然是算法工程师 , 机器学习的相关知识也自然是不可或缺的 。
建议可以从Andrew NG的机器学习课程开始 , 他讲解得非常清楚 , 基本上该涵盖的知识点都涵盖了 。 如果是初学的话 , 会觉得吃力是非常正常的 , 这个时候可以找一本纸质书印证着一起看 。 听完Andrew的讲课内容之后 , 再去对比书上的描述 , 以及其他大牛的博客或者是相关内容 。 这样对比着学习的质量和效率都是最高的 。
对于机器学习的常用模型来说 , 使用Python实现的难度都不是很大 , 在理解了模型的相关原理之后 , 最好能亲自使用Python实现一下模型 , 体会一下其中的细节 。 另外 , 各种模型并不是机器学习的全部 , 其他的很多内容一样非常重要 。 比如过拟合的原因 , 比如正则项 , 比如损失函数的推导过程 , 以及AUC等指标的计算方法等等 。
说起来机器学习领域中的模型并不少 , 但是常用的 , 面试当中经常问到的并不多 。 说来说去 , 也就LR , 逻辑回归 , 贝叶斯 , 决策树 , 随机森林 , GBDT , XGboost、KNN、Kmeans等十余个 。 我们学习的时候可以只聚焦其中一些模型 , 把它们完全吃透 , 而不是贪多嚼不烂 , 每个都知道一点 , 但每个都不精通 。
3、深度学习深度学习需要区分领域 , 如果是推荐、广告、搜索等CTR预估等领域来说 , 要求相对要低一些 , 在面试的时候也不会太过深入 。 这也是因为这些领域的模型和做法比较固定 , 相比于模型对于特征、数据以及系统的要求更高 。
另外一个原因是深度学习相关的内容在面试的时候也不太好考察 , 举个例子来说 , 如果候选人之前没有做过相关业内的工作 。 他可能根本不知道推荐领域内使用哪些模型和哪些做法 , 我们去问他DIN或者是FM , 也就无从问起了 。 而且深度学习目前的框架也分成两派 , 如果他刚好没有深入用过同样的框架 , 所谓框架的细节也没办法多问 。 并且这块也不是重点 , 框架不会学起来也很快 , 基础扎实几天就可以有模有样 。
所以作为初学者 , 如果决心做推荐、广告等领域的算法工程师的话 , 甚至可以连卷积神经网络都不用了解(我甚至没在工作中见过卷积) 。 把时间省下来去读一些业内的paper , 以及做一些比赛练练手 , 得到的效果会更好 。
4、数据处理很多人在介绍算法工程师入门的时候不会提到这块 , 但其实这块非常重要 , 也一样是算法工程师的基础技能 。
数据处理主要包含两块 , 一块是模型训练之前的数据处理流程 。 比如特征加工、采样、异常值过滤、特征分布的分析等等 , 这些可以通过学习numpy、pandas来搞定 。 可以看一看kaggle大牛的一些kernel或者是文章了解学习一下 , 这块比较简单 , 一般来说做过kaggle的多少都会一些 。