推荐算法工程师需要掌握哪些核心技能点?(一)

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 推荐算法工程师需要掌握哪些核心技能点?(一)

有幸在去年4月份,被分配到鹅厂推荐组,接触了国内顶尖的算法团队,截止现在自己做推荐也有半年时间了,如果说以前自己的成长速度是线性成长,那么在这半年时间,自己的成长可以说是指数级成长。


鉴于目前工作上越来越驾轻就熟,逐渐从小白状态脱离出来,回答一下这个问题,算是给自己这半年算法工作的一个记录。


先给大家奉上,一名合格的推荐算法工程师所需要掌握的各项知识点和技能图:


310790ad464a7840156849da3a1e3a1f.png


如题主所说,推荐系统涉及到的知识点“大而杂”,是一项复杂的工程,那么一条完整的推荐系统学习进阶路径,需要包含哪些方面呢,我认为至少需要包含以下6大方面:


**1、数学基础:**微积分、线性代数和概率论


**2、机器学习:**需要掌握一些基础的术语和概念,以及常见的模型。


**3、深度学习:**TensorFlow和PyTorch这两大框架至少掌握一个,然后深度学习基础知识,比如训练算法、激活函数、正则化等内容也是必须掌握的。


**4、数据挖掘与分析:**熟练掌握相关工具包,包括numpy、pandas、matplotlib、Scikit-Learn等等。


**5、大数据:**掌握Hadoop、Spark两大生态,不过这部分不用学的太深,建议大数据这块可以先掌握到会用的层次,当做工具即可。


**6、推荐系统理论和实战:**主要包括推荐系统五大环节——召回、粗排、精排、重排和冷启动,其中每一个环节都涉及大量的知识点,此外除了掌握理论外,还需要进行必要的项目实战。


**其中,机器学习、深度学习、推荐算法理论和实战这三块是核心知识,也是面试中的重中之重。**而像数学、数据挖掘和分析、大数据这些算是基础知识,面试中考察相对比较少,后续等你参加工作后,再反过头来学习也是完全可以的。


以上6大模块,每一个模块都涉及大量的知识点需要学习,我本人推荐大家通过看一些经典的书籍来啃透推荐系统,因为,看书是效率最高的学习方式。


至于每个模块所涉及到的一些经典必读书籍,我已经帮大家总结好了,点击下方链接,就能领取。


我这里分享的书单,包含数学、机器学习,深度学习、数据分析、大数据和推荐算法等硬核内容,对我当年自学推荐系统有很大帮助,这些资料都是经过我本人验证过的,个人认为非常适合新手学习的学习资料,在这里免费分享给大家。


(后续我还会持续不断更新推荐系统的优质干货资料,大家方便的话可以点个赞鼓励下~


**PS:**网上关于推荐系统的资料特别多,包括很多已经出版的书籍,质量也参差不齐,大家学习时候一定要注意辨别,以免浪费宝贵学习时间和精力投入。


接下来详细讲一下每个模块所涉及到的内容。


一、数学



主要是微积分、线性代数、概率论这三门课。


1、微积分


通常情况下,机器学习需要得到一个函数(模型,或者说假设)来预测未来的数据。既然是函数,那自然就离不开微积分了。微积分为我们研究函数的性质提供了理论依据,同时它也是学习概率论、最优化方法等后续课程的基础,是整个高等数学的基石。


重点掌握函数的求导法则(特别是链式法则),以及泰勒公式。这对后续的梯度下降法,牛顿法,拟牛顿法等优化算法的推导至关重要!


2、线性代数


机器学习算法的输入、输出、中间结果通常为向量、矩阵、张量。这些都属于线性代数里的知识。


重点掌握向量、矩阵含义及其数学运算公式。


3、概率论


对于机器学习来说,概率论是一种重要的工具。如果将机器学习算法的输入、输出看作随机变量/向量,则可以用概率论的观点对问题进行建模。使用概率论的一个好处是可以对不确定性进行建模,这对于某些问题是非常有必要的。另外,它还可以挖掘变量之间的概率依赖关系,实现因果推理。


重点掌握常见概率分布、概率公式。


总结


数学好是入门机器学习的优势,但并非关键。因为数学知识量太庞大了,花太多时间在其上,容易打击学习积极性。另外做算法一般分两种:理论模型和实际应用,前者的行业title是算法研究员,主要发paper、提出新的模型或者优化方法,所以对于数学能力要求很高。后者的行业title是算法工程师,致力于把模型应用于数据上,攫取商业价值,对于数学能力要求并不高。往往大部分人都属于后者,我个人也是后者。熟悉不同算法的应用场景、掌握模型落地工程技术,才是我们更应该投入精力的地方。


推荐资料:


  1. 《DeepLearning》,又名「花书」,被誉为深度学习领域圣经。它前面有必备数学知识的介绍,讲得挺不错的。


  1. B站搜索微积分、线性代数、概率论关键词,会有很多教学视频,随便选取时长较短的看看即可。


二、机器学习



人工智能、机器学习、深度学习关系如下:


5b687116a204cf7c0a9fcc4f95d25c75.png


我们一般说机器学习都是指除了深度学习以外的机器学习,也称为传统机器学习。虽然近几年深度学习越来越火,但是很多领域还是在使用机器学习,并且学好机器学习,对于AI算法基础和知识广度都有很大提高。这里可以先给大家罗列一些必备的基础知识:


首先要知道一些基础的术语和概念,比如有监督与无监督,训练集,验证集与测试集,经验误差与泛化误差,方差与偏差,过拟合与欠拟合等,再比如比较重要的一些模型性能度量方法(混淆矩阵,精确率,召回率,auc,roc等), 再比如经典的评估方法(留出,交叉验证,自助等)


其次是经典的模型。机器学习模型非常多,全部掌握不现实,我给大家罗列几个经典,也是面试中常考的模型:逻辑回归、SVM、树模型、集成学习、朴素贝叶斯、K-Means聚类、PCA。(EM、最大熵、概率图这些考的少,能了解是加分项)。


在学习过程中,各个模型是相互联系的,不要孤立去分析单个模型。比如:逻辑回归,我认为是最基础、也最重要的模型:


ad10f91b17ec25a6a063dd83a3f819ee.png


  1. 逻辑回归=线性回归+sigmoid激活函数,从而将回归问题转换为分类问题


  1. 逻辑回归+矩阵分解,构成了推荐算法中常用的FM模型


  1. 逻辑回归+softmax,从而将二分类问题转化为多分类问题


  1. 逻辑回归还可以看做单层神经网络,相当于最简单的深度学习模型


通过逻辑回归由点及面,就能演化出如此多模型。


再比如树模型。我们把以决策树为基础的一系列模型统称为树模型,也是AI比赛中最常用的模型。


  1. 决策树经历了三次改进,ID3、C4.5、CART,主要区别在于一个根据信息增益划分特征、一个根据信息增益率、一个根据基尼指数。


  1. 随机森林=决策树+Bagging集成学习


  1. GBDT=决策树+AdaBoost集成学习


  1. XGB是陈天奇2014年提出,相当于GBDT的工程改进版,在实用性和准确度上有很大提升。比如:使用泰勒二阶展开近似损失函数,支持处理缺失值、在特性粒度上并行计算等等特性。


  1. LGB是微软2016年提出,对XGB进行了改进,使用单边梯度采样算法减少不必要的样本;在寻找最优分割点时采用直方图算法使计算代价更小;支持类别特征…


  1. CGB是Yandex2017年提出,对类别特征进行了更完美的支持。


所以学习模型,要由点及面,层层递进。这样不仅方便理解,也有利于归纳总结,同时还能锻炼搭建知识体系的能力。


推荐资料:


  1. 如果是一个机器学习小白,那么推荐两个入门视频, 吴恩达或者李宏毅的ML视频(B站上都有),先快速过一遍,了解机器学习是什么。


  1. 如果有了一定的机器学习基础,就需要去进阶。建议是看书与高质量文章。推荐两本书:周志华的《机器学习》、李航的《统计学习方法》这两本书,可以好好先研究一本,注意这里是研究,一本通了,另一本也就差不多。如果发现看一遍很难看懂,这是正常现象,随着后面实践经历慢慢变多,再看一遍,会有很多新的感悟。


注意:学习过程中一定要跟着实战,否则知识很难真正理解。


三、深度学习



前面也提到了,深度学习本属于机器学习,但是鉴于其发展迅速、应用越来越广泛,所以单独拿出来说。深度学习每年新模型、新技术层出不穷,一味追求新技术不可取,要先打好基础。比如:对于一个简单的全连接神经网络,包含训练算法(正向传播、反向传播),激活函数(sigmoid、ReLU、Maxout、softmax等),正则化(L1和L2、Dropout、提前早停等),优化算法(随机梯度下降、Momentum、Adagrad、Adam等)


掌握了基础后,再根据自身领域学习相关的模型。大部分人找工作属于这三个领域:


  1. 计算机视觉(CV):卷积神经网络(CNN)及其改进。


  1. 自然语言处理(NLP):循环神经网络(RNN)及其改进,Transformer、Bert等。


  1. 推荐算法:Embeding、Wide & Deep及其改进。


推荐资料:


  1. 李沐《动手学深度学习》https://zh-v2.d2l.ai/


  1. 邱锡鹏《神经网络与深度学习》https://nndl.github.io/


  1. 吴恩达《深度学习》https://www.bilibili.com/video/BV1FT4y1E74V


  1. 《DeepLearning》,又名「花书」,被誉为深度学习领域圣经。


  1. TensorFlow、pytorch官网是最好的参考资料。如果英语不好,那么可以看看下面的资料:


  1. Pytorch学习笔记:https://blog.csdn.net/wuzhongqiang/category_10024538.html


  1. 《30天吃掉那只TensorFlow2》:https://github.com/lyhue1991/eat_tensorflow2_in_30_days


  1. 《20天吃掉那只Pytorch》:https://github.com/lyhue1991/eat_pytorch_in_20_days


  1. PyTorch深度学习快速入门教程:https://www.bilibili.com/video/BV1hE411t7RN


四、数据挖掘与分析



熟练使用相关工具包:numpy、pandas、matplotlib(seabron是matplotlib的简化版)、Scikit-Learn。完成数据的可视化、分析以及特征工程。工具包的学习建议边用边学,可以先看一些中文教程整体了解一下工具包的使用。在具体使用的时候,如果忘记了可以去对应工具包的官网查看详细的文档。


除了熟悉数据分析工具以外,其实更需要的是数据分析的方法,我觉得最好的学习方式就是看开源竞赛的方案,因为在开源方案中,作者会写很多他们分析问题的思路,以及对可视化结果给出的他们认为的正确观点。


推荐资料:(加我:xtyifan1019,领取以下参考资料)


英文教程首推官网,中文教程推荐Datawhale的开源项目


  1. numpy中文教程:https://github.com/datawhalechina/powerful-numpy


  1. pandas中文教程(这份文档可能比官方文档还适合学习):https://github.com/datawhalechina/joyful-pandas


  1. matplotlib中文教程:https://github.com/datawhalechina/fantastic-matplotlib


  1. 《Hands-on-Machine-Learning-with-Scikit-Learn》用sklearn工具实现各种机器学习模型


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
4月前
|
机器学习/深度学习 人工智能 算法
「AI工程师」算法研发与优化-工作指导
**工作指导书摘要:** 设计与优化算法,提升性能效率;负责模型训练及测试,确保准确稳定;跟踪业界最新技术并应用;提供内部技术支持,解决使用问题。要求扎实的数学和机器学习基础,熟悉深度学习框架,具备良好编程及数据分析能力,注重团队协作。遵循代码、文档和测试规范,持续学习创新,优化算法以支持业务发展。
219 0
「AI工程师」算法研发与优化-工作指导
|
3月前
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
70 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
5月前
|
人工智能 数据可视化 算法
算法金 | 让数据讲故事:数据可视化的艺术与科学,几乎是每个领域都需要掌握的技能
本文探讨了数据可视化的重要性,强调了其在决策中的作用。数据可视化应清晰传达信息,避免误导,如错误的颜色对比、过多数据、省略基线、偏见性文字和不合适图表类型。建议使用高对比色,限制图表数据量,正确选择图表类型,并注意相关性与因果的区分。此外,要警惕3D图形的误解和过度展示信息。好的可视化能提升决策效率。
44 6
算法金 | 让数据讲故事:数据可视化的艺术与科学,几乎是每个领域都需要掌握的技能
|
4月前
|
存储 算法 C语言
软考中级之数据库系统工程师笔记总结(二)数据结构与算法
软考中级之数据库系统工程师笔记总结(二)数据结构与算法
35 0
|
机器学习/深度学习 人工智能 JSON
在LLM浪潮下,prompt工程师需要很懂算法吗?
最近AI大神吴恩达推出prompt教程并给出了prompt构建三大原则,Prompt Engineering Guide也提出了诸多技巧,受AI技术的快速发展的影响,你觉得在LLM浪潮下,prompt工程师需要很懂算法吗?欢迎一起来聊一聊~
25518 50
在LLM浪潮下,prompt工程师需要很懂算法吗?
|
算法
增强能力:提升专业知识、熟练职业技能、持续总结面试题、英语词汇、学习数据结构和算法(提升逻辑思维)
增强能力:提升专业知识、熟练职业技能、持续总结面试题、英语词汇、学习数据结构和算法(提升逻辑思维)
|
算法 搜索推荐
开发工程师-常用算法基本思想 -分类-时间复杂度与空间复杂度概述
开发工程师-常用算法基本思想 -分类-时间复杂度与空间复杂度概述
|
缓存 算法 大数据
架构、框架侃侃而谈算法望而却步?吃透这份笔记轻松掌握算法技能
腾讯、百度阿里等国内的一线名企,在招聘工程师的过程中,对算法和数据结构都会重点考察。但算法易学难精,让很多程序员都望而却步,面试时总败在算法这一关,拿不到好 Offer。 面试时很多候选人,聊起架构、框架侃侃而谈,但一写代码,就暴露真实水平。说白了,还是基本功不够扎实。 其实,不管你是什么语言,基本功一定要扎实,最核心的一定是数据结构与算法。也因此,所有大厂面试,都必考算法题。
|
机器学习/深度学习 存储 人工智能
从产线到星空,这些AI工程师带着算法上天入地
从产线到星空,这些AI工程师带着算法上天入地
221 0
|
算法 NoSQL 数据挖掘
工程师应该学点算法——图论2
工程师应该学点算法——图论2
工程师应该学点算法——图论2
下一篇
无影云桌面