2016年,YouTube发表论文,将深度神经网络应用推荐系统中,实现了从大规模可选的推荐内容中找到最有可能的推荐结果。
近年来,推荐系统被广泛的应用于电子商务推荐、个性化广告推荐、新闻推荐等诸多领域,如人们经常使用的淘宝、今日头条、豆瓣影评等产品。
推荐算法工程师是目前AI岗位比较紧缺的热门人才,市场上对人才的需求不断在水涨船高,
从招聘信息来看,凤凰网开出了50000以上的月薪,字节跳动给的月薪也平均在30000以上,携程网开出的月薪是30000-60000元,美袖信息给出的月薪是25000起,同程艺龙算法工程师搜索推荐方向的月薪是30000-60000元/月。
今天我们将解答推荐算法工程师是做什么的?需要什么能力?如何面试?面试会问什么等问题。
1.1招聘网站能力要求:
数据分析、数据挖掘能力
大数据处理技术(spark、Hadoop、)
扎实的算法基础:机器学习与推荐算法相关的LR、SVM、GBDT、DNN
丰富的Python、C开发经验
项目经验
1.2工作内容
数据分析与处理
用户画像
个性化推荐
CTR预估
销量预测
2.1基本技能准备
数据分析与数据挖掘:
数据缺失值与异常值处理,特征构建与选择(pandas)
大数据处理的相关技术:
Hadoop或者spark的基本命令、MapReduce原理(如统计一句话中单词出现的次数)
算法基础:
算法原理、建模、调试(sklearn、Keras)(LR、GBDT、SVM、DNN)
模型的可调参数有哪些?
gbdt和xgboost区别
SVM原理
推荐算法:
协同过滤(基于物品和基于用户)的原理,ItemCF、UserCF、SVD矩阵分解
原理与实现:给一个场景,给出解决方案
首先选择基于物品或者用户的协同过滤,用户行为如果比较少,需要细化特征,得到相似性
2.2项目准备
房价预测
智能客服
音乐推荐系统
文本分类
简历上面至少要有一个深度学习的项目,如图像或NLP
项目需要弄明白的东西:
项目来源
数据量,7天10个TB
做了多长时间,项目排期
用的算法和模型的原理
不同模型的区别,如何选择
模型参数的调试
结果如何评估,
可以改进的地方
项目突出的内容
推荐实时性很重要,两个小时的,一个是实时预测,一个是凌晨全量迭代
简历中项目要突出自己的工作量,实验结果,比如提升了多少auc
2.3其他
编程基本功:
排序算法,字符串查找
机器学习相关问答题:
3.1技术面
机器学习的步骤
分类器的选择
SVM原理
特征选择的方法:
filter、warpper、bedding、GBDT选择
树模型是否需要做归一化,为什么?
不需要
模型过拟合与欠拟合,如何解决?
使用正确率或者loss曲线
偏差与方差
GBDT与xgboost的区别
实际场景的解决方案
3.2HR面
自我介绍
语言表达能力、思维能力
对我们公司了解多少
薪水
解析:
常用的评价标准:
一类是线上的评测,比如通过点击率、网站流量、A/B test等判断。这类评价标准在这里就不细说了,因为它们并不能参与到线下训练模型和选择模型的过程当中。
第二类是线下评测。评测标准很多,我挑几个常用的。我就拿给用户推荐阅读相关链接来举例好了。
1. 精度Precision:P(k)
P(k) = c/k
我们给某个用户推荐了k个链接,他/她点击了其中的c个链接,那么精度就是c/k。
2. 平均精度Average Precision: ap@n
n是被预测的链接的总数,m是用户点击的链接的总数。
例子1: 我们一共推荐了10个链接,用户实际上点击了我们推荐当中的第1个和第4个链接,以及另外两个其他的链接,那么对于这个用户,
ap@10=(1/1+2/4)/4≈0.38
例子2: 我们一共推荐了10个链接,用户实际上点击了我们推荐当中的第2个,第3个和第5个链接,以及另外三个其他的链接,那么对于这个用户,
ap@10=(1/2+2/3+3/5)/6≈0.29
例子3: 我们一共推荐了10个链接,用户实际上点击了我们推荐当中的第2个,第7个,此外没有点击其他联系,那么对于这个用户,
ap@10=(1/2+2/7)/2≈0.39
例子4: 我们一共推荐了5个链接,用户实际上点击了我们推荐当中的第1个,第2个和第4个,以及另外6个其他链接,那么对于这个用户,
ap@5=(1/1+2/2+3/4)/5≈0.55
3. 平均精度均值Mean Average Precision: MAP@n
MAP计算的是N个用户的平均精度的均值。
这个N是用户数量。
比如说我们三个用户甲、乙、丙分别推荐了10个链接,
甲点击了我们推荐当中的第1个和第4个链接,以及另外两个其他的链接,那么(ap@10)1=(1/1+2/4)/4≈0.38.
乙点击了我们推荐当中的第3个链接,以及另外一个其他的链接,那么(ap@10)2=(1/3)/2≈0.17.
丙点击了我们推荐当中的第1个链接,第7个链接,以及另外三个其他的链接,那么(ap@10)3=(1/1+2/7)/5≈0.26.
那么这个模型的平均精度均值
MAP@10 = (0.38+0.17+0.26)/3 ≈ 0.27
解析:
精度/精确率,和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。
其中精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率;
召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率。
一般来说,Precision就是检索出来的条目(比如:文档、网页等)有多少是准确的,Recall就是所有准确的条目有多少被检索出来了。
正确率、召回率和 F 值是在鱼龙混杂的环境中,选出目标的重要评价指标。不妨看看这些指标的定义先:
1. 精确率 = 提取出的正确信息条数 / 提取出的信息条数
2. 召回率 = 提取出的正确信息条数 / 样本中的信息条数
顺便说一句,如果两者取值在0和1之间,数值越接近1,查准率或查全率就越高。比如定义:F值 = 正确率 * 召回率 * 2 / (正确率 + 召回率) (F 值即为正确率和召回率的调和平均值)
这就好比推荐系统根据你的喜好,推荐了10个商品,其中真正相关的是5个商品。在所有商品当中,相关的商品一共有20个,那么
k精度 = 5 / 10
k召回 = 5 / 20
咱们再看下先第二个例子。比如搜:北京大学,有三个网页被搜索到了:
a. 北京大学保安考上研究生
b. 北京互联网工作招聘
c. 大学生活是什么样的
其中只有a是被正确搜索到的,其他两个其实是和用户搜索词无关,而事实上数据库里还有这种网页:
d. 北大开学季
e. 未名湖的景色
这两个没被搜索到,但d、e和“北京大学”的相关度是超过b、c的,也就是应该被搜索(被召回)到的却没有显示在结果里,即:
精确率 = (a) / (a + b + c)
召回率 = (a) / (a + d + e)
不妨再看第三个例子:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:
代表查准率的正确率 = 700 / (700 + 200 + 100) = 70%
代表查全率的召回率 = 700 / 1400 = 50%
F值 = 70% * 50% * 2 / (70% + 50%) = 58.3%
不妨看看如果把池子里的所有的鲤鱼、虾和鳖都一网打尽,这些指标又有何变化:
正确率 = 1400 / (1400 + 300 + 300) = 70%
召回率 = 1400 / 1400 = 100%
F值 = 70% * 100% * 2 / (70% + 100%) = 82.35%
由此可见,正确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。
当然希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索出了一个结果,且是准确的,那么Precision就是100%,但是Recall就很低;而如果我们把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高。如果是做实验研究,可以绘制Precision-Recall曲线来帮助分析。
给想入推荐系统坑的小伙伴
想学推荐系统或者想读推荐系统就业班的小伙伴,
可以扫描下图二维码联系课程代表
报上来源于36大数据有200元的学费减免哦~