文章做者:曾钦榜 58同城 高级技术经理面试
编辑整理:周晓侠算法
内容来源:58技术沙龙bootstrap
出品社区:DataFun微信
注:欢迎转载,转载请在留言区内留言。网络
导读:随着科学技术的飞速发展,互联网被普遍应用于各个领域,而以互联网为基础的招聘模式也愈来愈受到企业的青睐。互联网招聘具备不受地域限制、覆盖面广、招聘成本低、针对性强、方便快捷、时效性强等优势,现已获得普遍应用,其中,58招聘是互联网招聘行业中规模最大的平台。今天主要跟你们分享下58招聘如何经过个性化推荐技术服务大规模求职者和招聘企业。分享题目是从零到一构建58招聘个性化推荐,主要经过如下三方面进行介绍:框架
招聘业务介绍ide
个性化推荐实践函数
心得分享与规划工具
——招聘业务介绍——学习
2018年我国全国总人口13.9亿多,其中就业人口7.7亿,招聘基数庞大。三大产业就业人口占比分别26.11%,27.57%,46.32%,其中第三大产业占比最大,部分发达国家第三大产业占比已达到70%~80%,随着经济的发展,我国将来就业市场和就业分布将发生大的变化。2019年8月城镇调查显示我国失业率为5.2%,其中25~59岁失业率4.5%,同时每一年有800多万的应届生加入就任市场。58招聘做为我国互联网招聘行业之首,天天服务于千万级求职者和大中小企业,平台天天生成千万级链接,促成大量求职者求职成功。
58招聘平台主要服务于求职者和招聘方,接下来主要经过求职者的角度介绍用户在整个平台流转的大体流程,具体以下:
基于求职偏好搜索职位并点击查看详情。
投递有意向职位,或经过平台在线微聊工具、电话与招聘方作进一步沟通。
双方达成共识后,进行面试与入职。
相比传统推荐系统,58招聘的业务漏斗更长更深,而且有一部分转化平台没法彻底捕捉,造成了58招聘个性化推荐开展的难点及挑战。
58招聘推荐场景主要面向 C 端求职者和 B 端企业,推荐内容主要包括:职位推荐、标签推荐、企业推荐、简历推荐。
C 端求职者的典型推荐场景包括:
App 首页招聘大类页:主要包括职位专区聚合、职位 Feed 流。
类目推荐: 用户点击某个类目后,进行相关职位推荐。
类似推荐: 用户点击某个具体职位后,在下方展示类似职位。
58招聘推荐相对其它行业主要存在如下典型问题:
海量数据计算:大多数公司都存在,此处不作详细说明。
冷启动问题: 58同城服务于多业务,包括招聘、房产、黄页、二手等,求职者进入招聘板块使用招聘功能,因为当前不强制用户填写简历,致使无简历用户冷启动问题。
稀疏性&实时性:58招聘的一部分群体为蓝领用户,他们在平台产生的行为是短期的、连续的以及稀疏的,可能活跃两天找到工做后就再也不活跃。其次,有些用户回到平台,求职意愿可能会发生变化,一部分可能想找别的工做(如以前是服务员,如今想找快递),另外一部分多是由于传统职业存在职位进阶的过程,这些都须要系统思考。
资源分配问题:第一,如何有效识别(企业,求职者)的真实意图,进而合理分配资源产生有效链接,针对不良意图进行差别化对待。第二,招聘对于 C 端和 B 端都是有限的资源,招聘方招聘职位有限,求职者与招聘方交互有限,很大程度上不一样于淘宝推荐,由于后者的商品是无限供应的。
——招聘个性化推荐实现——
58招聘个性化推荐的实现过程与大多数公司推荐模块基本类似,包括用户意图理解、内容召回、内容排序、内容展现四个核心模块。下面将结合业务特性,介绍每一个模块实现的关键点。
58招聘用户理解主要经过“言”和“行”识别用户真实意图,重点关注的属性主要包括招聘领域求职意向、用户我的属性以及外在形象(如上图左边)。围绕求职者与招聘方在平台产生的内容及行为,咱们构建了相应的知识图谱和用户画像。
2.1 无诚意用户识别
在理解用户以前,咱们首先须要识别出无真实招聘/求职意图的用户,并进行差别对待。如频繁发布包含联系方式的导流信息、发布高薪诱惑等恶意虚假信息等,将用户引导至平台外进行转化。针对以上业务咱们总结了一些特色,主要表现为:
暴露联系方式
内容不成句
高薪诱惑
在平台很“活跃”
针对以上业务特色,咱们主要的识别方法包括:
传统的关键词+正则识别方法,如针对"微信"、"QQ"这类联系方式的相关关键词等。
针对变形联系方式,基于拼音+滑动窗口进行识别。
采用命名实体 NER 识别进行挖掘,如 BiLSTM+CRF。
采用相关分类算法进行识别,如 fastText,CNN。
在无诚意用户识别过程当中,咱们总结了如下心得:
触类旁通:问题用户识别是典型的对抗场景,策略构建时须要更多思考对抗能力的刻画,将一些强对抗能力的特征加入到模型中(如文字变形、文字转拼音)。
刚柔并济:差别化惩处不一样问题类型的用户。对平台其余用户伤害巨大的群体,结合法律手段严厉惩处;处于问题边界的,则主要经过较柔和的方式处理(如内容展现降权),减小剧烈对抗现象的产生。
2.2 知识图谱构建
知识图谱是一个很是复杂的系统,包括多元异构数据搜集->知识获取->知识融合表示->知识推理->知识管理多个部分,主题及时间因素,咱们重点介绍下在 NER 方面的探索。招聘业务场景含有大量的文本内容,经过 NER 技术可以有效提取文本中的关键信息,进一步提升系统的结构化理解能力。
NER 开展经历了两个阶段:
第一阶段:基于平台已有的部分结构化实体词,以及很多半结构化组织的职位描述基础,咱们采用 bootstrap 方法,快速迭代进行挖掘,并结合半人工标注,为深度学习构建更完整的样本数据集。
第二阶段:将第一阶段的内容做为 input,核心采用 BiLSTM+CRF 构建实体识别深度网络,有两个优化点取得了较好效果。第一个是输入层基于字到词的优化,构建招聘领域的专有词库。第二个是采用训练样本加强技术,将相近实体词和同类实体词进行替换扩大样本集,并将模型识别的结果有选择的放回训练集从新进行迭代训练,减弱对标注数据集的依赖。目前命名实体识别仍在不断优化,识别准确率平均达到0.75+,部分准确率可达到0.9+。
2.3 构建用户画像
用户画像是个性化推荐系统的基础模块,决定了对用户意图理解的准确与否。基于标签传递思想,咱们经过统计规则、传统分类模型和深度模型多种算法结合捕获用户行为的兴趣表达,构建长短时间用户画像。
基于统计规则:经过窗口形式,近实时对用户画像进行计算更新,计算时加入时间衰减因子、行为权重因子及标签置信度权重。深入理解业务场景,进行合理数学设计是关键。如信息列表页的点击数据,在使用时要差别化处理列表页直接展现的显性标签及隐藏在详情页的兴趣标签,避免人为引入噪音。
基于传统分类预测:采用分类算法,应用到用户属性填充、异经常使用户/行为识别及用户分类多个方面。并不是全部的求职用户都会留下较详尽的简历,咱们借助历史的招聘简历与用户行为组织样本,可有效预测性别、年龄段、指望工做岗位等用户信息,优化简历缺失或不完善的冷启动问题。同时,针对用户行为的聚焦状况,经过模型可以有效识别出一些异常数据、识别求职目的明确型及发散型两类求职用户,进而剔除掉部分噪音数据提升样本精度,对不一样用户定制差别化策略,提高推荐总体刻画能力。
基于行为序列预测:借助统计规则及传统分类,基本建设出一个可用画像,但对用户多个行为之间的信息捕获有限。咱们将用户搜索浏览、简历投递、在线沟通等行为组织成行为事件序列,采用 LSTM、GRU、Attention 等训练模型预测用户兴趣,当前还在探索评估阶段。
58招聘推荐围绕个体、群体、全局三个召回不断细化演进,不一样召回知足不一样须要,三者结合服务于各种场景。从2016年到如今,咱们前后主要经历了基于上下文内容、协同过滤、精细画像、深度召回几个阶段,演变成当前以上下文与用户画像结合的精准召回、协同过滤召回及深度向量化召回为核心策略的召回模块。
3.1 基于上下文+用户画像的精准召回
该策略是业内十分经常使用的召回方法之一,核心在于结合用户画像对请求进行丰富改写。绝大部分场景,用户主动搜索或点选的条件有限,借助用户画像中的历史兴趣及知识图谱组织的实体关系,咱们对岗位、工做地、薪资、行业等多个维度进行条件扩充或必要改写,多路召回匹配用户的职位内容。
该策略的主要优势:可解释性好、实现时间成本低,缺点和难点是过分依赖标签挖掘的准确性。
3.2 基于业务特殊性的协同过滤算法改进
协同过滤是推荐系统经典的召回方法,经过用户与物品的行为挖掘用户与用户、物品与物品之间的关联关系。招聘业务的求职者数量巨大,且是短期的稀疏行为场景,咱们采用基于物品的协同过滤,同时但愿能近实时的将实时行为信息组织进服务。
在技术实现过程当中,咱们参考了腾讯2015年发表的Paper《TencentRec: Real-time Stream Recommendation in Practice》,赋予职位点击、投递、在线沟通等不一样的行为权重进行多行为融合,基于用户行为序列的长度以及用户质量设计用户惩罚因子,同时经过时间衰减因子加强近期行为的表达,这三个因子的设计与 Paper 基本一致。另外针对业务特殊性,咱们改进了职位类似度的计算,加入了职位类似度控制,避免求职目标发散的用户影响职位关系的组织。算法上线后,在点击率、投递率方面都取得了正向收益,其中详情页的相关职位推荐提高超过25%。
3.3 Embedding 深度召回探索
协同过滤虽然取得了不错的业务收益,但其依赖于用户与物品的行为矩阵,对于行为稀疏的场景自然表达有限。而刚好,58招聘业务的流量构成中,有一部分是三四五线城市,城市越下沉数据稀疏的状况也越凸显。针对这类问题,咱们但愿进一步挖掘行为数据的信息,很天然的想到基于深度学习的向量化 Embedding 召回。咱们核心参考了 Youtube 的 DNN 召回思想,基于业务现状作了调整优化。
职位向量化:咱们将求职者对职位的行为序列看做一系列上下文,利用 word2vector 思想进行向量化表达。Input 部分,包括职位特征、职位所属的企业特征和求职者反馈特征。Output 构建,业务漏斗越深的行为选择的窗口越大,并基于用户平均的行为长度做为窗口设定的参考值。针对无历史用户行为的新职位,使用职位的文本结构化信息,经过历史训练所得的标签向量表达通过 average-pooling 做为初始向量,解决冷启动。
用户向量化:构建一个多分类 NN 网络,Embedding 层将用户发生行为的职位向量化直接迁移过来使用,输入用户的简历及画像信息进行向量训练。最上层理想状况是一个极限分类,以用户真实发生行为的数据做为正样本,未发生行为的数据做为负样本,构建损失函数进行最优化训练。58招聘场景有千万级别的职位,极限分类须要巨大的计算消耗,当前资源没法知足。所以在负样本选择上,咱们使用降采样机制,随机从求职者关注的城市及岗位下未发生行为的职位中按必定比例抽取负样本。线上会实时的采集用户行为,以窗口形式对用户向量进行更新。
线上服务:借鉴 Facebook 的 FAISS 实现,线上用户发起请求时,经过求职者的向量表达,去获取与其最类似的 TopN 职位,返回给推荐系统。
Embedding 向量化召回,还处于初期探索,仍须要在样本、输入特征及网络参数调优开展大量工做,期待有更显著的业务收益进一步与你们分享。
相比其余推荐场景,58招聘的漏斗更深,而且是典型的双边业务。系统不断优化提高求职者点击、投递职位的同时,还须要关注职位背后的招聘方是否反馈造成了有效双边链接,进而达到更接近求职链条的预测目的。结合不一样时期的业务目标,咱们前后经历了几个主要阶段。
第一阶段:以提高点击规模为主要目标,从零到一构建点击率预估模型,开发模型建设的基本框架,包括特征工程、AB 实验框架及线上 CTR 服务。该阶段在较少人员的状况下,创建了排序模型及服务的大致框架,在点击层面支撑业务增加。
第二阶段:业务目标深刻,从点击过分到单边链接直至双边链接,在 CTR 预估模型的基础上,增长了 CVR 预估及 ROR 双边链接预估。同时在工具上开展了针对性建设,包括特征生产 Pipeline、AB 实验框架升级为可配置化中心及特征模型的可视化分析监控等,解耦算法和工程依赖,支持更多算法和工程人员的并行高效迭代。
第三阶段:围绕深度学习的算法探索,wide&deep、DeepFM、多任务学习、强化学习等,不断提高算法对高维特征的表达能力,提升预估模型的刻画能力。预计在2020年全面落地业务,达到更为理想的迭代状态。
4.1 链接转化预估模型
58招聘转化预估模型是多目标学习,设计实现如上图,底层共建样本及特征,使用不一样算法对 CTR 点击率预估、CVR 单边链接预估、ROR 双边链接预估进行建模,最后对多个模型进行融合支撑线上排序。
总体排序实现是业务常见的方法,总结开展过程当中比较关键的点:
样本处理:围绕减小样本噪音,咱们开展了多个优化。去除异经常使用户及异常数据,包括非招聘意图的用户数据、误点击数据;增长真实曝光及停留时长埋点,去除用户下拉信息流过程当中非真正看见的数据,将停留时长做为样本置信权重加入到模型训练中;基于求职者维度进行采样,去除对同一职位屡次正负样本的矛盾可能。
特征工程:关注及监测特征显隐性的变化,尤为是信息列表展现样式的产品调整,需及时进行特征调整及模型迭代。58招聘业务的特殊性,实时类特征很重要,须要关注特征一致性方面的保障机制,避免发生特征穿越现象或线上线下特征不一致问题。
模型:重视模型认知,并非简单的关注离线 AUC 或者线上转化率 AB 对比,在特征表达上多些分析,迭代过程当中重视先后模型的特征比较,可以有效提升模型实验迭代的有效性。
4.2 特征生产实现
特征 Pipeline 的构建,减小了大量特征工程重复工做,显著提升模型迭代效率。其核心功能是实现配置化的方式,集成了样本采样、特征变换、特征组合、特征离散化,整合后获得训练样本,一方面输送给模型进行训练评估,另外一方面也输出到分析平台支持可视化分析。
4.3 模型 serving 实现
线上模型服务有按期更新及大量 AB 实验的要求,随着服务演进构建了当前的模型 Serving 框架,实现了对模型的按期自动更新以及模型的自动加卸载功能,同时也具有了更强的扩展性,可接入不一样算法的模型实现。离线部分,样本通过特征 Pipeline 构建增量训练数据,模型训练模块会获取 Base 模型文件初始化并进行增量模型训练,模型评估无异常,系统会将模型存储至模型仓库及 HDFS 文件。线上部分,模型仓库增删改模型后,会发起模型热加载或卸载指令更新至线上服务内存;对于线上的排序请求,实时修改相应使用模型的存储生命周期,对于长期无用的模型,模型仓库将自动删除。
模型 Serving 可以自动化管理线上模型,但咱们也不能彻底托管系统,依然须要关注模型变化。一方面在离线部分的模型评估环节,除了对 AUC 等评估指标的自动监测,也将模型内存大小、模型特征表达做为监测的一部分;另外一方面线上监测业务转化指标的变化,当指标发生较大波动时发出警报,人工进行模型检查。
4.4 重排序机制
因为业务的特殊性,以 CTR 预估、CVR 单边链接预估、ROR 双边链接预估支撑排序仍然存在刻画能力不足的问题,体如今如下几个方面:
招聘关系到我的生计及国家民生,是件极为严肃的事情,内容质量是基础保障。但链接预估模型没法有效刻画质量问题,存在一些职位链接效率很不错但属于问题职位,所以推荐系统须要增长质量相关的因子。
转化率高不等同于双边匹配。线上招聘,没法很好追踪到面试及入职环节,求职者与招聘方造成的双边链接,多是出于其余缘由(如对本身或对方的错误判断)。所以,系统须要考虑匹配方面的控制。
资源浪费问题,对于绝大部分用户,求职及招聘都是周期性行为,一个已经招满人的职位可能依然在线上展现。系统还须要增长职位活跃度或周期方面的刻画,减小相应的资源浪费。
针对这些须要,系统增长了重排序机制,经过分段处理手段,在粗排阶段打压甚至过滤掉低质量内容,在重排序对不活跃/不匹配内容进行降权,达到保障平台质量生态、提升有效链接规模的目的。
内容展现方面,咱们也结合算法作了一些工做,来提升内容的可解释性、提供更多有价值的信息来辅助用户决策。结合个性化模型挖掘亮点标签,将更深预估模型的核心特征包装成标签形式展现在列表页,如距离多远、职位的福利标签、职位的热门状况等;使用 NLG 文本生成技术,自动生成简短描述进行展现,弥补标题及其简单职位的文本信息不足。
推荐系统包括召回、过滤、排序、展现几个核心模块,且每一个模块都有长期进行实验迭代的诉求。咱们搭建了 AB 实验配置中心,实现可视化配置,与线上服务及数据分析平台联动,更灵活高效地开展实验迭代工做。
58招聘个性化推荐通过不断演进,最终造成了如上图的技术框架。离线部分包含数据仓库层,知识图谱、用户画像、预测模型的挖掘层,知识数据存储层;线上部分包含数据服务及推荐引擎。线上产生的行为数据,实时流转至离线的计算挖掘模块,反馈到线上达到个性化体验效果。
——心得分享及规划——
58招聘推荐系统最近四年优化收益整理如上图,贡献大小依次是召回、特征、数据、算法、样式、工程。深刻理解业务及算法、注重细节积累是作好算法工做的保证;前期在样本及特征上多下功夫,不只能得到不错的业务增加,也是以后算法深刻的基础;工具性建设尽量先行,可以提升总体迭代效率。
将来的核心工做:
多任务学习、强化学习等的全面探索落地。
集公司内外资源,丰富招聘数据源,提升用户画像的覆盖率,更好的支持千人千面。
分享嘉宾
▬
曾钦榜
58同城 | 高级技术经理 ——END—— 欢迎关注DataFunTalk同名公众号,收看第一原创技术文章。