算法工程师研发技能表
算法工程师
Author:louwill
Machine Learning Lab
由于算法工程师这个岗位根据不同的业务场景和应用方向,各自的工作差异相对较大。所以很难有一个一概而论的算法工程师技术栈。比如说做图像方向的有机器视觉算法岗、做文本方向的有自然语言处理算法岗、做语音的又有语音识别算法岗。
本文仅对算法工程师常用的、基础的、必备的研发技能进行梳理。也就是说,不论你是做哪个业务场景下的算法工作,这些基础研发技能都是必知必会的。
这组技能清单主要包括两大类型,一类是理论技术,另一类是编程语言和工具类。
数据分析
数据分析是算法工程师的基础能力。当前所有的算法都是基于数据驱动,数据分析可以算作是算法研究的前置条件。主要技术栈包括:
EDA
统计分析
统计绘图与数据可视化
sql
...
数据结构与算法
数据结构与算法是计算机从业者的四大基础课之一,对常用的数据结构和基础算法有深刻的理解是算法工程师的基本功。目前业界无论大厂小厂,面试考数据结构与算法题是必备项目。刷leetcode是算法找工作前的必做准备了。
数据结构
线性表
数组
链表
字符串
栈
队列
堆
哈希表
树
图
基础算法
二分查找
排序
递归
回溯
分治
双指针
深度优先搜索
广度优先搜索
动态规划
...
机器学习
机器学习是算法岗的核心能力。对于机器学习算法工程师而言,随着算法岗越来越内卷,对常用的机器学习模型与算法能够做到深入理解和手推已是普遍要求了。常用的机器学习模型包括:
单模型
线性回归
逻辑回归
Lasso
Ridge
knn
ID3
C4.5
CART
感知机
神经网络
SVM
集成学习
GBDT
AdaBoost
XGBoost
LightGBM
CatBoost
Random Forest
无监督模型
kmeans
层次聚类
谱聚类
PCA
SVD
LDA
概率模型
朴素贝叶斯
贝叶斯网络
EM
MCMC
最大熵
CRF
HMM
机器学习模型导图
深度学习
深度学习作为机器学习的一个最流行方向,不同的应用领域也相对有各自的侧重点,比如做图像算法的更侧重于CNN,做文本算法的更侧重于RNN。但常用的网络模型和发展沿革都应该做到了然于胸。
DNN
MLP
BP
CNN
分类
检测
分割
AlexNet/VGG/GoogleNet/ResNet/DenseNet
...
RNN
LSTM
Transformer
Attention
Bert
XLNet
...
GNN
...
Linux
Linux是算法工程师干活主要工具,基础和常用命令必须熟练。
Linux
Shell
Vim
Git
版本管理
远程仓库
分支管理
...
Python
Python的重要性就不多说了。完整教程可参考廖雪峰老师:
https://www.liaoxuefeng.com/wiki/1016959663602400
算法人员应熟练掌握的第三方库包括:
sklearn
tensorflow
keras
pytorch
cv2
nltk
...
C++
C++跟Python一样,甚至重要性还要强于Python,C++对于模型算法的工业化部署和落地至关重要。C++在线教程参考:https://www.w3cschool.cn/cpp/
SQL
SQL是算法人员的基础研发工具。能写一手熟练的SQL脚本也是非常重要的能力体现。
增删改查
MySQL
Oracle
SQLite
...
Docker
Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
爬虫
爬虫对于算法工程人员而言可以自主的编写脚本获取web页面上的一些结构化数据。基于Python的爬虫应掌握:
前端知识
html
css
javascript
Python第三方库
urllib
beautifulsoup
request
lxml
scrapy
以上仅为笔者根据个人经验列出的算法人员研发技能清单。不可能面面俱到,也不可能以偏概全。重在给大家一个参考。另有知道创宇公司的研发人员技能表PDF版,有需要的朋友可以加我微信获取。
往期精彩: