工作▍推荐系统算法工程师是搞啥的?工作内容、技能、面试题全解析

640?wx_fmt=jpeg

推荐算法工程师就业指导

2016年,YouTube发表论文,将深度神经网络应用推荐系统中,实现了从大规模可选的推荐内容中找到最有可能的推荐结果。


近年来,推荐系统被广泛的应用于电子商务推荐、个性化广告推荐、新闻推荐等诸多领域,如人们经常使用的淘宝、今日头条、豆瓣影评等产品。


推荐算法工程师是目前AI岗位比较紧缺的热门人才,市场上对人才的需求不断在水涨船高,


从招聘信息来看,凤凰网开出了50000以上的月薪,字节跳动给的月薪也平均在30000以上,携程网开出的月薪是30000-60000元,美袖信息给出的月薪是25000起,同程艺龙算法工程师搜索推荐方向的月薪是30000-60000元/月。


今天我们将解答推荐算法工程师是做什么的?需要什么能力?如何面试?面试会问什么等问题。

640?wx_fmt=jpeg

640?wx_fmt=gif 1.推荐算法公工程师做什么?


1.1招聘网站能力要求:


  • 数据分析、数据挖掘能力

  • 大数据处理技术(spark、Hadoop、)

  • 扎实的算法基础:机器学习与推荐算法相关的LR、SVM、GBDT、DNN

  • 丰富的Python、C开发经验

  • 项目经验


1.2工作内容


  • 数据分析与处理

  • 用户画像

  • 个性化推荐

  • CTR预估

  • 销量预测


640?wx_fmt=gif 2.怎样准备


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其他


编程基本功:

  • 排序算法,字符串查找

  • 机器学习相关问答题:


640?wx_fmt=gif 3.面试会问那些问题


3.1技术面


  • 机器学习的步骤

  • 分类器的选择

  • SVM原理

  • 特征选择的方法:

  • filter、warpper、bedding、GBDT选择

  • 树模型是否需要做归一化,为什么?

  • 不需要

  • 模型过拟合与欠拟合,如何解决?

  • 使用正确率或者loss曲线

  • 偏差与方差

  • GBDT与xgboost的区别

  • 实际场景的解决方案


3.2HR面

  • 自我介绍

  • 语言表达能力、思维能力

  • 对我们公司了解多少

  • 薪水


640?wx_fmt=gif 面试大题


1、推荐系统有哪些常用的评价标准?


解析:

常用的评价标准:

一类是线上的评测,比如通过点击率、网站流量、A/B test等判断。这类评价标准在这里就不细说了,因为它们并不能参与到线下训练模型和选择模型的过程当中。

第二类是线下评测。评测标准很多,我挑几个常用的。我就拿给用户推荐阅读相关链接来举例好了。

1. 精度Precision:P(k)
P(k) = c/k
我们给某个用户推荐了k个链接,他/她点击了其中的c个链接,那么精度就是c/k。

2. 平均精度Average Precision: ap@n

640?wx_fmt=png

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个用户的平均精度的均值。

640?wx_fmt=png

这个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

2、搜索和推荐中的精度和召回(recall)分别是什么意思?


解析:

精度/精确率,和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。

其中精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率;
召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率。

一般来说,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元的学费减免哦~


640?wx_fmt=png

640?wx_fmt=png


  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法工作原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值