今天在《推荐系统开发实战》的读者群里聊天,在探讨技术问题的时候发现也有朋友对一些非技术的问题比较感兴趣,这里进行总结和分享,希望能够帮助到看这篇文章的人。
欢迎加我的微信进行技术交流,非技术的人生思考问题也可以进行探讨。我的微信号如下图
以下问题,随机排序,不分先后!
A:这个问题真的是很直接呀,当然可以理解,毕竟我们工作就是为了赚钱,为了生活。推荐算法工程师和算法工程师的待遇基本差不多,不过不同地方、不同级别的推荐算法工程师待遇肯定是不一样,比如一线的北上广深,刚进入工作环境的应届毕业生起码也得在10K以上了,当然对于一些很优秀的应届毕业生(比如清北、985、211、双一流的硕士起步的)再加上头部互联网公司的SP,月薪待遇起码得20K以上了。
当然你付出多少,就会有多少收获,一个普本的本科毕业生想要从事推荐算法工程师,我觉得在北上广深这样竞争激烈和人才辈出的市场中,能有一个机会去实践自己的知识和想法就已经很不错了,所以对于薪资这块,还是要结合自身的知识水平取争取薪资,俗话说得好,打铁还需自身硬,所以奋斗吧少年!
另外大家不要被网上的薪资待遇所迷惑,毕竟网上吹牛是不需要打草稿的,理性对待薪资,认真工作,磨砺技术!
A:首先我们要搞清楚推荐系统的意义是什么?本质是从海量的信息中筛选用户感兴趣的内容推荐给用户,从而节约用户获取有效信息的时间,继而增加用户对平台的好感,发展成为一个深度用户。
因此,不要为了使用推荐系统而用推荐系统(不过从私心角度讲,比如一个Java开发者想要学习推荐系统的知识,但是公司的业务还没有达到使用推荐的程度,这个时候可以适当的进行鼓吹和挑起重任,哈哈有点卑劣了),那业务达到什么程度可以使用推荐系统?我个人的见解是业务有流动和转化的用户,同时内容是持续稳定的增长,且用户和内容都有一定的存量,但具体的增长速度和存量的规模需要结合自己的业务进行判断,这个东西目前还没有办法进行量化,前期可以使用一些简单的推荐策略进行推荐,然后随着业务发展可以慢慢进行策略到算法的迭代,继而搭建推荐架构,为推荐算法进行服务。
A:正常!俗话说得好,三个臭皮匠顶个诸葛亮,这里诸葛亮就类比推荐算法,人工运营就好比“臭皮匠”。人工运营集众人的智慧和思路进行接近于完全个性化的推荐,刚引入的推荐算法在其算法先进性、数据完备性/准确性/完整性、整理流程的准确性上都可能存在或多或少的问题。
但是,理论上算法的效果是不应该低于人工运营的,如果低了,说明这整个推荐过程中肯定存在问题,这时候就要去分析自己的业务逻辑和推荐的算法流程,分析为什么曝光量整体增加很多,但是点击率没有上去的原因。需要考虑曝光的物品是不是用户真正感兴趣的,对自己的数据产出逻辑和算法推荐逻辑进行check。
作为推荐算法工程师要对自己的算法和算法带来的效果自信! 要为自己的算法和效果负责,不要过多的被需求牵扯!
A:数据挖掘和推荐算法都是AI领域的子集,两者是有交叉的,但并不是完全重合的,比如数据挖掘和推荐算法都会涉及一些算法(比如分类、回归等算法),但两者不同的是对业务的理解和关注的指标,数据挖掘更多是结合算法对数据进行深层次的分析继而得到一些有效的结论,但推荐算法关注的是线上的业务指标(比如点击率、GMV、用户停留时长等)。
其实在AI领域,很多算法都是重叠的,同一个算法在不同的领域可以做不同的事情,但不会背离其算法的本质,比如一个聚类算法Kmeans,你让他去做回归拟合函数,kidding me?
A:是需要的,因为大数据时代,数据量的规模都是比较大,单纯的靠一些单机的代码去处理数据是不现实的。
目前推荐算法的主流有两种方式,一种是使用Spark进行模型的训练和保存,前提也是使用Spark进行训练样本数据的准备;另一种方式是使用深度学习进行模型的训练和保存,但前提也是使用Spark进行训练样本数据的准备。而且作为算法工程师,对于数据的分析、查看也是需要大数据的知识的,比如操作Hive、Hbase、Spark等。
当然也有例外,比如一下数据量不那么大的业务,往往单机版的程序也可以满足需求,这时候其实不需要大数据的知识,但这种情况是比较少的,更何况多一种技能傍身岂不更好。所以还是建议积累一定的大数据相关的知识,主要集中在Hive、Spark,有精力的话多学一些也无妨!
A:想要系统的学习推荐算法,必须要大概了解一下推荐算法的发展历程,比如从开始的协同过滤,到现在的深度学习、强化学习等,这中间经历多年的发展,目前已经有比较完备的体系了,但是那些学术界和工业界的实践者门也在努力的探索和研究新的算法,创造更大的价值,推动推荐算法的发展。
可以参考文章:传统机器学习和前沿深度学习推荐模型演化关系
基础版本的推荐算法和实战可以参考我的书籍《推荐系统开发实战》,相信你学习完这本书之后能有一个0到1的飞跃。然后可以参考王喆老师的《推荐系统深度学习》了解基于深度学习的推荐算法,当然王喆老师的书是比较偏理论的,实践的话可以从Github上搜索一些实战项目进行学习。当然也可以关注公众号:搜索与推荐Wiki。
所以整体的思路就是从简单学习,再到复杂!从0到1再进阶,同时结合实战项目进行学习。
A:具体要分业务场景,比如多分类,CTR中情况是不一样的。CTR中效果停滞的时候,需要思考业务和整体数据流程,挖掘有效特征,尝试不同的CTR算法进行效果的提升测试。当然这个时候需要结合深层次的数据理解和探查,继而尝试效果的提升。
同样对于多分类场景,上述的方法也同样适用,除此之外不是盲目的增加特征就能解决问题,有时候也要适当的做减法,分析特征的重要性,剔除不必要的特征,剔除存在多重共线性的特征,同时分析正负样本,分析数据的准确性,且在必要的时候积累更多量的数据进行尝试。
A:不同企业,不同业务实习生做的工作是不一样的,但肯定做的都是推荐相关的事情,当然如果运气不好,遇见没有责任心的负责人,做的事可能会偏离推荐的方向,不过这种概率很小。
不过其实我个人更关心的一个问题是:如何做好新人的培养和引领,避免从学校步入社会后的脱轨。首先我觉得新人进入职场后,是需要一个“师父”进行带领的,第一可以帮助其快速融入公司和团队,第二可以给一些工作和技术的帮助,让其快速成长。其次要尊重毕业生或者实习生的兴趣方向,毕竟做自己喜欢的事情和擅长的事情,才能有动力和有效果的输出内容。
关于如何向上级汇报工作,我觉得首先个人要养成一个好的工作习惯,首先记录每天的工作内容,形成自己的日报(不需要发给其他人),方便自己进行回顾和总结,其次结束每天的工作之后总结一下自己今天遗留的问题和技术上的收获,在脑海里回忆一遍,加深印象。正常周五都是会写周报的,这时候就会突显个人的工作内容了,写周报的时候要注意工作的分类、事情的关键点和取得的成效。下面是我整理的一个样例,写的也有不好的地方仅供参考。
周报:
1、用户兴趣模型
- 调研用户品类偏好模型构建的方案和相关技术资料,整理成文档,链接如:xxxxx
- 尝试适用xxx算法进行用户品类偏好模型的构建,完成了样本数据准备和代码开发,模型待训练
2、需求开发
- 针对xxx提出的需求,进行讨论和方案制定、讨论,并敲定最终方案,如文档:xxxxx
- 上述方案的逻辑实现,目前已经产出数据,并进行了初步分析,符合预期,已经反馈给xxx,后续问题跟进中
以上只是我的拙见,我也不并不擅长写这个,只是想把自己做的事和成果描述清楚,大家有更好的想法可以在评论区留言进行讨论。
A:同样还是分地区和公司,以北京举例,头部互联网公司对于应届生的要求肯定是要比创业型互联网公司高的,当然这是一个普遍的现象,但并不能代表整体。
对于创业型的互联网公司更加看重的面试者的实战能力,因为毕竟业务紧张,人员有限,希望入职之后就能尽快的 融入到业务开发中,这时候对于我们来讲,项目经验+和团队契合的擅长的技能将会加速你获取offer。基本关键要求点如下(仅做参考)
对于头部互联网公司要求肯定是比较高了,不仅要求其编码水平强硬,对于其算法的理论能力要求也比较高,如果你在顶会发表一些paper的话,肯定是更好了。头部互联网公司除了上边的核心要求点外,对深度学习的要求更高,不仅要求了解,更多的是熟练掌握。
所以说具体上述列的基本关键要求点是必须的,在此基础之上努力耕耘,实力越强,机会越多。
当然会存在一些特殊情况,有一些技术水平很水的人也会得到不错的推荐工作,但这是少数的,且运气成分较大,团队招人也会有特定情景的考虑,有时候真的不是水平越强就一定获得offer(当然这是少数),希望大家还是搞好技术,通过面试,拿到高薪!
A:我之前总结过一个关于推荐系统的模块分解,如下图所示:
推荐系统中可以拆分的职责很多,对应的岗位也很多,所以想要从事推荐系统相关的工作不一定要从事推荐算法。
下图是从网上get的两个推荐算法工程师技能树和推荐系统工程师既能出,列的还算比较全面,大家可以参考。
另外如果大家对于推荐算法的招聘要求不明确的话,可以看心仪公司的推荐算法招聘的岗位要求和职责,这才是最明确的。
另外对于推荐算法的技能,我觉得更重要的是把自己的知识体系给建立出来,这样根据自己的技能树进行查漏补缺,同时关注业界发表的论文和技术文章,提升自己的知识。大体可以分为几个方向:
最后更多精彩内容可以关注我的公众号:搜索与推荐Wiki。小编一直从事推荐算法相关的工作,会在公众号分享相关的技术知识!
最后附上推荐系统演变史
扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!