【深度学习】【推荐系统】58同城招聘个性化推荐系统
DataFunTalk公众号文章学习。
1.简介
- 主要面向C端求职者和B端企业
- 推荐内容:职位推荐、企业推荐、标签推荐、简历推荐
- 推荐场景:
- app首页——职位聚合、职位feed流;
- 类目——用户点击某个类目,进行相关job推荐;
- 相似推荐——用户点击某个具体职位后,展示相似职位。
- 存在典型问题:
- 海量数据计算;
- 冷启动:不强制用户填写简历,无简历用户的冷启动问题
- askbob用户冷启动问题也存在
- 稀疏性:可能活跃两天找到了工作就不再活跃,回来平台之后可能想换一份工作,可能是职位升阶
- askbob用户可能下次回来是想问新的问题、发其他的指令
- 资源分配问题:招聘对于b端和c端都是有限资源,从职位和精力角度。不同于淘宝推荐,淘宝商品是无限量供应的。
2.个性化推荐
- 如何理解用户
- 无诚意用户识别:发布qq微信联系方式,向平台外导流。
- 采用关键词+正则识别“微信”“QQ”等,针对文字变形,数字转拼音等无效
- 采用命名实体NER挖掘,比如BiLSTM+CRF
- 分类算法,fastTextCNN
- 对抗:对平台伤害大,法律手段,对问题边界的,内容展示降权处理
- askbob从运维防止识别刷量用户
- NER从文本中提取关键信息
- 第一阶段构建招聘领域特有词库,已经有一些词典,采用bootstrap方法,快速迭代进行挖掘,结合半人工标注,构建更完整的样本集
- 第二阶段,将第一阶段的内容input,BiLSTM+CRF。采用训练样本增强技术,相近实体词进行替换扩大样本集,并将模型识别的结果有条件放回训练集进行迭代训练,减弱对标注数据集的依赖。目前识别准确率0.75,部分0.9
- 构建用户画像
- 通过窗口形式,对用户画像要进行更新,计算时加入时间衰减因子,行为权重因子,及标签置信度权重,深刻理解业务场景是关键。
- 冷启动
- 并非所有用户都会留下详细的简历,借助历史简历可以有效预测性别、年龄段、期望工作岗位等用户信息,优化简历不完善带来的冷启动问题。
- 基于行为序列预测
- 将用户搜索浏览、简历投递、在线沟通等行为,时间序列,用LSTM、GRU、Attention等训练模型预测用户兴趣。当前还在评估阶段
- askbob同样在评估阶段
3、召回模块
以上下文内容与精细画像结合的精准召回、协同过滤召回、深度向量化为核心策略的召回模块。
- 基于上下文+用户画像的精准召回
- 用户主动搜索的条件有限,借助用户画像中的历史兴趣以及知识图谱组织的实体关系,我们对岗位、薪资、行业等多个维度进行条件扩充,多路召回匹配用户的职位内容。
- 该策略的优点,可解释性好,实现简单
- 缺点:过度依赖标签挖掘的准确性
- 用户主动搜索的条件有限,借助用户画像中的历史兴趣以及知识图谱组织的实体关系,我们对岗位、薪资、行业等多个维度进行条件扩充,多路召回匹配用户的职位内容。
- 基于业务特殊性的协同过滤算法改进
- 参考了腾讯15年paper《TencentRec:Real-time Stream Recommendation in practice》,赋予职位点击、投递、在线沟通等不同行为权重,进行多行为融合,基于用户质量,设计用户惩罚因子,同时通过时间衰减因子增强近期行为表达,这三个因子的设计与Paper基本一致。算法上线后,在点击率、投递率方面都取得了正向收益,其中详情页的相关职位推荐提升超过25%。
- Embedding深度召回探索、
- 协同过滤虽然取得了不错的业务收益,但其依赖于用户与物品的行为矩阵,对于行为稀疏的场景天然表达有限,针对这类问题,想到基于深度学习的向量化Embedding召回,参考了YouTube的DNN召回思想,基于业务现状做出了调整。
- 职位向量化:word2Vector思想对求职者的行为序列看作一系列上下文,向量化表达,input部分,包括职位特征,职位所属的企业特征,求职者反馈特征。output构建,业务漏斗越深的行为选择的窗口越大,并基于用户平均的行为长度为窗口设定的参考值。针对无历史用户行为的新职位,使用职位的文本结构化信息,通过历史训练所得的标签向量表达经过average-pooling作为初始向量,解决冷启动。
- 很厉害,但是看不懂。askbob里就是把question向量化
- 用户向量化:构建一个多分类NN网络,embedding层将用户发生行为的职位向量化迁移过来使用,输入用户画像信息进行向量训练。以用户真实发生的数据作为正样本,未发生行为的数据作为负样本,构建损失函数进行最优化训练。负样本选择上使用随机采样,随机从求职者关注的城市及岗位下未发生行为的职位中按一定比例抽取负样本。
- 线上会实时采集用户行为,以窗口形式对用户向量进行更新。
- 线上服务:借鉴facebook的FAISS实现,线上用户发起请求时,通过求职者的向量表示,获取最相思的topN职位,返回给推荐系统。
4、排序迭代
- 第一阶段,提升点击规模为主要目标,搭建点击率预估模型,包括特征工程,ab实验框架。
- 第二阶段,在ctr预估模型基础上,增加CVR预估,ROR双边连接预估,。同时在工具上开展了针对性建设,特征模型的可视化分析监控。
- 第三阶段,wide&deep,DeepFM,多任务学习,强化学习,不断提升算法对高危特征的表达能力,提高预估模型的刻画能力
- 连接转化预估模型是多目标学习。使用不同算法对CTR点击率预估、CVR单边连接预估、ROR双边连接预估进行排序,最后多个模型进行融合支撑线上排序。
- 样本处理,去除异常用户 异常数据 误点击数据 ,增加停留时长埋点,将停留时长作为样本置信权重加入到模型训练中。
- 特征生产实现
- 特征pipeline的构建,减少了大量重复工作。核心是实现配置化的方式,集成了样本采集、特征变化、特征组合、特征离散化。整合后得到训练样本,输送给模型进行训练评估。
- 模型serving实现。
- 随着服务演进,构建了当前的模型