全球软件案例研究峰会同城推荐系统设计与实现•业务场景简介•推荐系统简介•常见推荐算法•推荐系统难点•推荐系统实现细节全球软件案例研究峰会同城推荐系统设计与实现•架构上:58同城推荐系统设计与实现细节•业务上:如何在招聘业务线实现简历与职位的推荐全球软件案例研究峰会沈剑沈剑,分布式领域技术专家。曾任百度高级工程师,参与过多个百度HI重大项目的研发。现任58同城高级系统架构师,技术委员会主席。负责过58同城即时通讯,支付系统重构,摊销系统重构,数据库中间件,推荐系统等多个系统与项目的设计与实现。58同城优秀讲师,曾多次代表58同城作为嘉宾参与velocity,系统架构师大会,lamper人社区,top100summit等技术会议,分享58同城的架构技术。全球软件案例研究峰会招聘•简历与职位的推荐全球软件案例研究峰会业务场景推荐在豆瓣•豆瓣电影的推荐全球软件案例研究峰会业务场景推荐在百度•百度知道的推荐全球软件案例研究峰会推荐简介什么是推荐?•用户在在某个场景下对某个商品或信息产生了某种行为,系统会对另一些商品或信息进行推荐•要素:(1)用户-user(2)场景-scene(3)商品或信息-item(4)行为-action(5)系统-recommendation-system(6)推荐结果集合-recommendation-result/item-set全球软件案例研究峰会推荐简介什么是推荐-举例•用户在58同城发布了一份简历•要素:user-info:uidscene-info:entry、local、cateiditem-info:jidaction:postsystem:rec-systemitem-set:setzid全球软件案例研究峰会推荐简介推荐系统简介•用户在58同城发布了一份简历全球软件案例研究峰会•协同过滤:collaborativefilteringRecommendation•原理:用户的相似喜好进行推荐•举例:商家下载简历的推荐jid1jid2jid3jid4jid5jid6…jid1000wuid1yesyesyes…uid2yesyesyesyes…uid3yesyesyesyesyes…uid4yesyes……uid100w全球软件案例研究峰会常见算法内容推荐•内容推荐:content-basedRecommendation•原理:抽取共有属性•举例:商家下载简历的推荐•步骤:(1)历史行为收集(2)id详情查询(3)共性内容挖掘(4)推荐详情jid1(司机,北京,8000月薪,5年经验,NULL)jid2(司机,北京,NULL,2年经验,硕士研究生)zid1(司机,北京,NULL,3年经验,NULL)历史行为jid1,downloadjid2,downloadzid1,post共性(司机,北京,NULL,2年经验,NULL)全球软件案例研究峰会预估•CF算法推荐了50个jid,内容推荐算法推荐了100个jid,最终页面只需要返回5个jid,如何返回?哪个排前面?•综合排序•什么决定综合排序?•CTR由什么决定?•CTR预估打分公式?用户产品:ctrCPC商业产品:ctr*priceCPA商业产品:ctr地区+职位+薪酬范围+工作经验+学历发帖时间+是否下载过+是否浏览过+…ctr-score=a*f(地区)+b*f(职位)+c*f(薪酬)+d*f(工作经验)+e*f(学历)+f*f(发帖时间)+g*f(是否下载过)+h*f(是否浏览过)+…全球软件案例研究峰会难点设计实现线下+线上的系统•线下系统•线上系统•几个问题(1)线下数据如何存储?(2)线上数据如何存储?(3)如何进行数据转化?全球软件案例研究峰会难点设计实现支持实验的系统•如何做算法测试?•如何快速支持一个算法平台?•如何实现分流AB测?全球软件案例研究峰会难点设计实现支持实验的系统-分流平台•作用?需求?(1)支持random分流(2)支持取模分流(3)支持与或非表达式(4)支持集合操作(5)配置热加载•支持哪些属性的与或非,集合操作?全球软件案例研究峰会难点设计实现支持实验的系统-推荐内核•作用?需求?•设计与实现(1)算法平台的抽象(2)实验平台的扩展(3)上下文动态数据(4)异步框架+状态机全球软件案例研究峰会难点设计实现实时计算的检索系统•作用?•通用需求(1)正排数据(2)倒排索引(3)数据(4)map-reduce•业务需求全球软件案例研究峰会难点设计实现工程+算法的系统•如何让工程和算法解耦?•线下算法如何分离?•实验平台算法如何分离?•排序打分算法如何分离?全球软件案例研究峰会难点设计实现效果实时监测的系统•作用?•步骤(1)结果展示(2)结果上报,点击上报(3)数据收集,数据统计(4)数据展示全球软件案例研究峰会难点设计实现总揽•总揽全球软件案例研究峰会案例启示总结+启示•总结(1)线下+线上的系统(2)支持实验的系统(3)实时计算的检索系统(4)工程+算法的系统(5)效果实时监测的系统•启示:一切不以支持业务为目的的技术选型及架构设计都是耍流氓全球软件案例研究峰会讨论&交流全球软件案例研究峰会!