想要从事算法工程师,需要具备什么样的能力?又要从哪里入手呢?
你要具备五方面的能力:熟知算法和数据结构、掌握机器学习知识、具备深度学习能力、数据处理能力和开发能力。
下面趣找课将仔细为你阐述:
一、熟知算法和数据结构
这是基础必学的,作为算法工程师,需要掌握最基础的排序、递归、动态规划、树、堆栈、队列等算法和数据结构。
如果想要去大公司,那么必须要熟知这两块技能点,掌握基本功。
如果不去大公司,而是去小公司历练,那两块要求不高,只要学习下LeetCode,就能掌握常用的算法。
但是,这两块的能力对于我们今后的发展是非常有帮助的。一个合格的大牛,学习其他技术的速度是很快的。
二、掌握机器学习知识
机器学习知识也是算法工程师必须掌握的知识点。
趣找课建议大家可以学习Andrew NG的机器学习课程。
如果你是初学的话,可以找一本纸质书印证着一起看。
可能一开始会有点吃力,但是坚持下去,就会听得比较懂了。
对于机器学习的常用模型来说,使用Python实现的难度都不是很大,在理解了模型的相关原理之后,可以多多使用Python实现一下模型,掌握下中间的几个点,例如过拟合的原因,比如正则项,比如损失函数的推导过程,以及AUC等指标的计算方法等等。
机器学习一些常用的模型,可以重点聚焦LR,逻辑回归,贝叶斯,决策树,随机森林,GBDT,XGboost、KNN、Kmeans等模型上,先吃透这些。
三、具备深度学习能力
深度学习需要区分领域,有些领域要求掌握深度能力,面试的时候也会问到。这需要你掌握深度学习模型的框架,例如常用的TensorFlow、Pytorch之外,还有像是Keras、MXNet、Caffe等等。而有些领域,例如推荐、广告、搜索等CTR预估等领域,要求相对要低一些,在面试的时候也不会太过深入。
作为初学者,如果决心做推荐、广告等领域的算法工程师的话,可以不了解卷积神经网络,多去学习一些业内的paper,以及做一些比赛练练手。
四、数据处理能力
算法包含数据分析和处理,因此算法工程师必须要学会数据处理。
一是通过学习numpy、pandas来掌握模型训练之前的数据处理流程,比如特征加工、采样、异常值过滤、特征分布的分析等等。
二是基于hadoop集群的大数据处理平台,比如MapReduce、spark、flink、hive等平台和工具的使用。
五、开发能力
算法工程师需要写代码。
在日常工作当中,算法工程师的开发领域主要有三块,分别是模型、脚本以及系统。
模型需要实现拆分训练以及验证数据,比如记录模型训练的日志,再比如读取数据,转化格式等等。
脚本主要指的是特征以及数据处理的脚本,这个依赖于公司使用的数据处理平台。比如spark需要写scala,比如hive需要写SQL等等。
系统比如线上的排序系统,线上调用模型的打分系统等等。这些系统的细节往往和模型以及算法挂钩。
以上就是算法工程师需要具备的能力了。
当然趣找课也要提醒大家,掌握了理论知识后,最重要的还是要多实践噢!