×
支撑199IT展开可参加常识交流群(4000+用户),最有价值数据同享和评论!
点击即可参加!
封闭

58同城智能引荐体系的演进与实践

58同城作为我国最大的分类信息网站,向用户供给找房子、找作业、二手车和黄页等多种日子信息。在这样的场景下,引荐体系能够协助用户发现对自己有价值的信息,进步用户体会,本文将介绍58同城智能引荐体系的技能演进和实践。

58同城智能引荐体系大约诞生于2014年(C++完结),该套体系先后阅历了招聘、房产、二手车、黄页和二手物品等产品线的引荐事务迭代,但该体系耦合性高,难以习惯引荐战略的快速迭代。58同城APP猜你喜爱引荐和推送项目在2016年快速迭代,产出了一套依据微服务架构的引荐体系(Java完结),该体系安稳、高功用且耦合性低,支撑引荐战略的快速迭代,大大进步了引荐事务的迭代功率。尔后,咱们对旧的引荐体系进行了重构,将一切事务接入至新的引荐体系,终究成功打造了一致的58同城智能引荐体系。下面咱们将对58同城智能引荐体系翻开介绍,首要会概览全体架构,然后从算法、体系和数据三方面做具体介绍。

全体架构

首要看一下58同城引荐体系全体架构,总共分数据层、战略层和运用层三层,依据58渠道发生的各类事务数据和用户堆集的丰厚的行为数据,咱们选用各类战略对数据进行发掘剖析,终究将成果运用于各类引荐场景。

  • 数据层:首要包括事务数据和用户行为日志数据。事务数据首要包括用户数据和帖子数据,用户数据即58渠道上注册用户的根底数据,这儿包括C端用户和企业用户的信息,帖子数据即用户在58渠道上发布的帖子的根底特点数据。这儿的帖子是指用户发布的房源、车源、职位、黄页等信息,为便利表达,后文将这些信息统称为帖子。用户行为日志数据来源于在前端和后台的埋点,例如用户在APP上的挑选、点击、保藏、打电话、微聊等各类操作日志。这些数据都存在两种存储办法,一种是批量存储在HDFS上以用作离线剖析,一种是实时流向Kafka以用作实时核算。
  • 战略层:依据离线和实时数据,首要会展开各类根底数据核算,例如用户画像、帖子画像和各类数据剖析,在这些根底数据之上便是引荐体系中最重要的两个环节:召回和排序。召回环节包括多种召回源的核算,例如抢手召回、用户爱好召回、相关规矩、协同过滤、矩阵分化和DNN等。咱们选用机器学习模型来做引荐排序,先后迭代了LR、FM、GBDT、交融模型以及DNN,依据这些根底机器学习模型,咱们展开了点击率、转化率和逗留时长多方针的排序。这一层的数据处理运用了多种核算东西,例如运用MapReduce和Hive做离线核算,运用Kylin做多维数据剖析,运用Spark、DMLC做大规划分布式机器学习模型练习,运用theano和tensorflow做深度模型练习。
  • 再往上便是运用层,咱们经过对外供给rpc和http接口来完结引荐事务的接入。58同城的引荐运用大多是向用户展现一个引荐成果列表,归于topN引荐办法,这儿介绍下58同城的几个重要的引荐产品:
    • 猜你喜爱:58同城最重要的引荐产品,引荐场景包括APP主页和不同品类的大类页,方针是让用户翻开APP或进入大类页时能够快速找到他们想要的帖子信息,这首要依据用户的个人偏好进行引荐。
    • 详情页相关引荐:用户进入帖子详情页,会向用户引荐与当时帖子相关的帖子。该场景下用户目的较显着,会选用以当时帖子信息为主用户偏好信息为辅的办法进行引荐。
    • 查找少无成果引荐:用户会经过品类列表页上的挑选项或查找框进入品类列表页获取信息,若当时挑选项或查找条件查找出的成果较少或许没有成果,便会触发引荐逻辑进行信息引荐。此刻会结合当时查找条件的扩展以及用户偏好信息进行引荐。
    • 个性化推送(Push):在用户翻开APP前,将用户感爱好的信息推送给他们,促运用户点击,进步用户活跃度。这儿包括推送告诉的生成和推送落地页上帖子列表的生成两个引荐逻辑。值得一提的是推送是强制性的引荐,会对用户构成打扰,因而怎么下降用户打扰并给用户引荐真实感爱好的信息尤为重要。
    • Feed流引荐:咱们的引荐产品在某些引荐场景下是以Feed流的办法展现的,例如APP音讯中心的今天引荐场景、推送落地页场景。用户能够在这些页面中不断下拉改写消费信息,相似时下炽热的各大资讯Feed流引荐。

引荐体系是一个杂乱的工程,触及算法战略、工程架构和作用数据点评三方面的技能,后文将别离从这三方面介绍58同城引荐体系。

算法

引荐触及了前端页面到后台算法战略间的各个流程,咱们将引荐流程笼统成如下图所示的召回、排序、规矩和展现四个首要环节:

  • 召回环节即运用各种算法逻辑从海量的帖子中挑选出用户感爱好的帖子候选调集,一般调集巨细是几十到上百。
  • 排序即对候选调会集的帖子进行打分排序,这儿一般会运用机器学习排序模型,排序环节会生成一个排序列表。
  • 规矩环节即咱们或许对排序列表采纳必定的规矩战略,终究生成一个包括N条成果的列表。例如在规矩环节咱们或许会采纳不同的去重战略,如文本去重、图片去重、混合去重等,或许会采纳不同的列表打散战略,或许会迭代产品司理提出的各种规矩逻辑。因为引荐体系的终究点评是看核算作用,因而各种人为的规矩都会影响终究成果,咱们笼统出规矩环节后便能够对任何逻辑做线上ABTest,终究点评相关逻辑是否合理。
  • 生成N条引荐成果列表后,不同的前端展现办法也会影响终究的引荐作用,例如不同的UI规划,选用大图办法仍是小图办法,页面上展现哪些字段都会影响用户在引荐列表页上的点击,因而在引荐产品迭代进程中不同的展现款式迭代也很重要。

在上述的四个环节中,召回和排序是引荐体系最重要的两个环节。规矩和展现款式一般改变周期较长,而召回和排序有很大的发掘空间,会被不断的迭代,咱们的引荐算法作业也首要是环绕召回和排序进行。下图是咱们引荐算法的全体结构,首要包括根底数据的核算以及上层的召回战略和排序模型的迭代。

根底数据核算首要包括用户标签和帖子标签的发掘,这部分作业由用户画像、查找和引荐多个团队共同完结,终究各团队同享数据。依据用户注册时填写的根底特点信息和用户行为日志,能够发掘出用户人口特点和爱好偏好信息,如用户的年纪、性别、学历、收入等根底特点,用户感爱好的地域商圈、二手房均价、厅室、装饰程度等偏好信息。帖子标签发掘包括提取帖子的固定特点、发掘衍生特点以及核算动态特点。固定特点直接从帖子数据库提取即可,如分类、地域、标题、正文、图片、房源价格、厅室、小区等。咱们还会依据贴子信息是否齐备、价格是否合理、图片质量好坏、发帖人质量等多个维度来核算帖子质量分。依据用户行为日志数据能够核算帖子的PV、UV、点击率、转化率、逗留时长等动态特点。这些数据终究会在召回环节和排序环节运用,例如依据用户标签和帖子标签能够进行爱好召回,将用户标签和帖子标签作为特征迭代机器学习模型。

召回首要担任生成引荐的候选集,咱们选用多种召回源交融的办法来完结该进程。咱们先后迭代了如下各类召回战略:

  • 抢手召回。依据曝光和点击日志,咱们会核算不同粒度的抢手数据。以二手车事务线为例,从粗粒度到细粒度的数据包括:城市下的抢手商圈、商圈下的抢手车系和品牌、特定车系和品牌下的抢手车源等。每一个车源的热度咱们经过最近一段时刻内帖子的PV、UV、CTR等方针来衡量,这儿的CTR会经过贝叶斯和COEC做滑润处理。抢手召回战略会在冷启动时被很多选用。
  • 地域召回。58同城是向用户供给本地日子服务类信息,用户的每次拜访都会带上地域信息,如挑选的城市、定位的地址等。咱们首要结合地域信息和抢手数据做召回,如邻近最新或最热帖子召回、城市抢手帖子召回等。
  • 爱好召回。依据帖子根底特点字段和帖子标签信息,咱们构建了一套帖子检索体系,经过该体系能够以标签或特点字段检索出最新发布的帖子。在用户画像中,咱们核算了每个用户的爱好标签,因而依据用户爱好标签便能在检索体系中检索出一批帖子,这能够作为一种召回源。此外,在帖子详情页相关引荐场景中,咱们也能够运用当时帖子的特点和标签信息去检索体系中检索出相关帖子作为召回数据源。这两种检索召回其实便是咱们常说的依据内容的引荐。
  • 相关规矩。这儿并非直接选用传统Apriori、FP-growth相关规矩算法,而是参阅相关规矩思维,将最近一段时刻中每个用户点击一切物品作为一次事务,由此核算两两物品之间的支撑度,并在支撑度中融入时刻衰减因子,终究能够得到每个物品的topK个相关性强的物品。这种召回办法其实相似协同过滤中的item相似度矩阵核算,咱们首要将其运用在详情页相关引荐中。
  • 协同过滤。咱们运用Spark完结了依据User和依据Item的批量协同过滤核算,因为数据量大,批量核算会较耗费时刻,咱们又完结了依据Item的实时协同过滤算法。通常状况下咱们会直接将用户的引荐成果列表作为一种召回源,而在详情页相关引荐场景,咱们还会运用协同过滤核算出的Item相似度矩阵,将帖子最相似的topK个帖子也作为一种召回源。
  • 矩阵分化。咱们引进了SVD算法,将用户对帖子的点击、保藏、同享、微聊和电话等行为操作看作用户对帖子进行不同层次的评分,然后构建评分矩阵数据集来做引荐。
  • DNN召回。Google在YouTube视频引荐上运用了DNN来做召回,咱们也正在进行相关测验,经过DNN来学习用户向量和帖子向量,并核算用户最邻近的topK个帖子做为召回源。

上述不同的召回算法都发生出了一部分引荐候选数据,咱们需求将不同的召回数据交融起来以进步候选集的多样性和覆盖率,这儿咱们首要运用两种召回交融战略:

  • 分级交融。设置一个候选集方针数量值,然后依照作用好坏的次第挑选候选物品,直至满意候选集巨细。假定召回算法作用好坏的次序是A、B、C、D,则优先从A中取数据,缺少候选集方针数量时则从B中取数据,顺次类推。咱们的体系支撑分级交融战略的装备化,不同召回算法的先后次序能够灵敏装备。这儿的作用好坏次序是依据离线点评和线上点评来决议的,例如离线咱们会比较不同召回算法的召回率和准确率,线上咱们会比较终究点击或转化数据中不同召回算法的覆盖率。
  • 调制交融。依照不同的份额别离从不同召回算法中取数据,然后叠加发生终究总的候选集。咱们的体系也支撑调制交融战略的装备化,挑选哪些召回算法、每种召回算法的挑选份额均能够灵敏装备。这儿的份额首要依据终究线上点击或转化数据中不同召回算法的覆盖率来设置。

召回环节新召回源的添加或许新交融战略的上线,例如开发了一种新召回算法、需求修正调制交融战略中的配比等,咱们都会做线上ABTest,终究经过比较不同战略的作用来辅导咱们的迭代。值得一提的是,召回环节咱们还会有一些过滤规矩,例如过滤低质量帖子、在某些特定场景下对召回算法发生的成果加一些条件约束等。

排序环节咱们首要选用Pointwise办法,为每个帖子打分并进行排序,经过运用机器学习模型预估帖子的点击率、转化率和逗留时长等多方针来做排序。前期咱们首要优化点击率,现在咱们不只重视点击率外还会重视转化率的进步。在58同城的产品场景中,转化首要指用户在帖子详情页上的微聊、打电话操作。

排序离线流程首要包括样本生成和挑选、特征抽取、模型练习和点评。首要对埋点日志中的曝光、点击、转化和逗留时长等数据做抽取解析,如依据曝光序列号相关各类操作、解析埋点参数(例如日志中记载的实时特征)、解析上下文特征等,并一起打上label,生成模型样本。然后对样本进行过滤,例如过滤歹意用户样本、过滤无效曝光样本等。然后对样本做特征抽取,生成带特征的样本,咱们首要从用户、帖子、发帖人和上下文四个维度做特征工程。之后,依照必定正负样本份额做采样,终究进行模型练习和点评,离线点评方针首要参阅AUC,离线作用有进步后会进行ABTest上线,逐步迭代。咱们先后迭代上线了如下排序战略:

  • 规矩序。前期未上线机器学习模型时,对候选会集的帖子会直接运用改写时刻、核算CTR或许一些产品规矩来做排序。
  • 单机器学习模型。咱们最早实践的是LR模型,它是线性模型,简略高效、可解释性好,但对特征工程要求较高,需求咱们自己做特征组合来增强模型的非线性表达能力,前期咱们运用LibLinear来练习模型,后来搬迁到了Spark上。之后咱们引进了XGBoost树模型,它非线性表达能力强、高效安稳,是现在开源社区里最炽热的模型之一,开端咱们选用单机版别练习,后期将XGBoost布置在咱们的yarn集群上,运用分布式版别进行练习。一起,咱们运用了FM模型,比较于LR模型它引进了特征组合,能够处理大规划稀少数据下的特征组合问题,咱们首要运用分布式FM (DiFacto,FM on Yarn)来进行模型练习。上述这些模型都是批量更新,通常是一天更新一次,为了快速捕捉用户行为的改变,咱们还引进Online Learning模型,首要测验运用FTRL办法去更新LR模型,在某些场景下取得了安稳的作用进步。
  • 交融模型。相似Facebook、Kaggle的做法,咱们实践了GBDT+LR和GBDT+FM的模型交融计划。首要运用XGBoost对原始特征做处理生成高阶特征,然后输入到LR和FM模型中,现在咱们的点击率预估模型中作用最佳的是GBDT+LR交融模型,转化率预估模型中作用最佳的是GBDT+FM交融模型。此外,咱们还会测验将某个单方针(如点击率)下多个模型的猜测成果进行交融(如相加或相乘等),也会将多个方针(点击率、转化率和逗留时长)的模型进行交融(如相乘)以调查作用。
  • 深度模型。深度学习正逐步被各大公司运用于引荐体系中,咱们也正在进行测验。现在,咱们已将FNN(Factorisation machine supported neuralnetwork)模型运用在咱们的引荐排序中,比较单机器学习模型,FNN有较安稳的作用进步,但比交融模型作用要稍差,现在咱们正在进行深度模型的调优,并在测验引进Wide&Deep等其他深度模型。

依据上述根底机器学习东西,现在咱们首要会迭代点击率、转化率和逗留时长预估模型,线上会ABTest上线单方针模型、多方针交融模型,以进步引荐作用。

架构

关于引荐体系来说,一套支撑算法战略高效迭代的引荐后台体系至关重要,咱们依据微服务架构规划了引荐后台体系,它扩展性好、功用高,体系架构如下图所示,体系分为数据层、逻辑层和接入层,数据层供给各类根底数据的读取,逻辑层完结召回和排序战略并支撑不同战略的ABTest,接入层对外供给了通用的拜访接口。

数据层供给引荐逻辑所需求的各类数据,这些数据存储在WRedis、文件、WTable等多种设备上,咱们将一切数据的读取都封装成RPC服务,屏蔽了底层的存储细节。这儿包括检索服务、召回源读取服务、帖子特征中心和用户特征中心:

  • 检索服务。咱们搭建了一套查找引擎用做召回检索,支撑依据各类查找条件去检索数据,例如能够检索出价格在200万至300万之间的回龙观两室的房源、检索出中关村邻近的最新房源。该服务首要运用于这几类场景:在猜你喜爱引荐场景中依据用户标签去检索帖子、在相关引荐场景中依据当时帖子特点去检索相关帖子、冷启动时依据地域信息召回邻近的帖子等。
  • 召回源读取服务。供给各类召回源数据的读取,这些召回源数据经过离线或实时核算得到,包括抢手数据、协同过滤数据、相关规矩数据、矩阵分化成果等。该服务规划得较灵敏,支撑恣意召回源的添加。
  • 帖子特征中心。供给帖子一切特点字段的读取,在召回、排序和引荐主体逻辑中会运用到这些帖子特点,一般状况咱们会在召回环节读取出一切帖子特点,然后运用于排序和规矩逻辑中。召回得到的候选集巨细一般是几十到几百,为了支撑高功用的批量读取,咱们挑选运用WRedis集群存储帖子特点,并经过多线程并发读取、缓存、JVM调优等多项技能确保服务功用。现在,该服务每天接受数亿级恳求,均匀每次读取150条数据,耗时确保在2ms之内。
  • 用户特征中心。UserProfile数据包括用户离线/实时爱好标签、人口特点等,该数据会在召回环节运用,例如运用用户爱好标签去检索帖子作为一种召回源,也会在排序环节运用,例如将用户标签作为机器学习排序模型的特征。

逻辑层完结了具体的引荐战略,包括引荐主体服务、召回服务、排序服务和ABTest试验中心。这些服务由不同的开发人员保护,确保了引荐战略的高效迭代,例如召回和排序是咱们常常迭代的环节,由不同的算法人员来完结,召回服务和排序服务的别离下降了耦合,进步了迭代功率。

  • 引荐主体服务。接纳引荐恳求,解析引荐场景参数,调用用户特征中心获取用户信息,恳求ABTest试验中心获取对应场景的ABTest试验参数,如召回战略号、排序算法号、规矩号和展现号。然后将引荐场景参数、ABTest试验参数等发送至召回服务取得候选集列表,之后再调用排序服务对候选集进行排序,终究对排序列表做相关规矩处理,将成果列表封装回来。
  • 召回服务。接纳场景参数和召回战略号参数,调用检索服务和召回源读取服务读取各类召回数据,并进行分级交融或调制交融。咱们完结了召回战略的装备化,一个召回号对应一种召回战略,战略选用哪种交融办法、每种交融办法下包括哪些召回源、不同召回源的数量均经过装备来完结。咱们将召回装备进行Web化,算法或产品人员只需在Web页面上装备即可收效战略。此外,召回层还包括一些过滤规矩,例如过滤低质量信息、过滤用户前史阅览记载、过滤产品指定的契合某些特定条件的数据等。
  • 排序服务。接纳场景参数、用户信息、候选集列表和排序算法号等参数,调用机器学习排序模块,对候选集列表做排序。咱们规划了一套通用的特征提取结构,确保机器学习离线模型练习和线上排序共用相同的特征提取代码,并灵敏支撑不同模型之间的特征同享。在排序服务中上线一种模型本钱很低,只需求供给模型文件和特征装备文件即可,后续咱们将会对排序装备进行Web化,简化上线流程。现在,咱们的排序服务中运行了依据LR、XGBoost、FM、XGBoost+LR、XGBoost+FM、DNN的几十个排序模型。
  • ABTest试验中心。咱们规划了一套灵敏通用的ABTest试验渠道(内部称作“日晷”)来支撑引荐体系的战略迭代,它包括流量操控、实时作用数据核算和可视化等功用,支撑用户在Web页面上装备试验和流量,并能展现实时作用数据。这套试验渠道不只能够运用于引荐体系,还能够用于任何其它需求做ABTest试验的事务体系中,它支撑多层ABTest试验,能充分运用每份流量去完结事务迭代。例如咱们的引荐体系ABTest试验就包括召回、排序、规矩和展现四层,不同层之间完结了流量的从头打散,确保了不同层之间试验的正交性。当恳求抵达咱们的引荐体系时,引荐主体服务便恳求“日晷”以取得该恳求对应的召回号、排序号、规矩号和展现号等试验参数,之后该恳求便会被这些试验参数打上符号,贯穿于后续的引荐流程,决议每层中将走哪部分逻辑,终究这些试验参数会记载到后台和客户端埋点日志中,用于终究的试验作用核算。

接入层直接和客户端交互,从客户端接纳恳求并调用引荐主体服务取得引荐帖子id列表,然后查询出帖子具体特点回来给客户端做展现。在大部分引荐场景中,接入层由事务方保护,或许是PHP或Java完结的http接口;也有少部分场景的接入层是咱们自主保护,咱们选用58自研的MVC结构WF完结了相关http接口。

咱们选用58自研的RPC结构SCF完结了上述微服务架构的引荐体系,选用58自研的监控体系WMonitor完结了引荐体系的立体监控,整个技能栈是Java。咱们选用多线程、异步、缓存、JVM调优、降级、限流等办法确保了引荐体系的安稳和高可用,现在咱们的引荐体系日均处理数亿的引荐恳求,均匀耗时约30毫秒。

数据

这儿的数据首要指引荐埋点数据和引荐作用数据:埋点数据是引荐体系的柱石,模型练习和作用数据核算都依据埋点数据,需确保埋点数据的正确无误;作用数据是对引荐体系的点评,指引引荐战略的迭代,构建齐备的作用数据体系至关重要。

咱们的引荐埋点日志数据包括曝光日志、点击日志、转化日志和页面逗留时长日志等,这些日志数据都需求客户端经过埋点来发生。这儿简略解释一下这些操作的意义:客户端恳求一次引荐接口得到引荐成果列表叫做一次曝光;用户点击引荐成果列表上的某条帖子进入帖子详情页叫做一次点击;用户在帖子详情页上进行微聊、打电话、保藏等操作叫做转化;用户在帖子详情页上的阅览时刻叫做页面逗留时长。这儿的曝光、点击和转化是一个漏斗,操作数量是逐步递减的趋势。因为58同城上用户对帖子的拜访或许来源于引荐、查找和运营活动页等场景,为了标识出引荐发生的点击/转化/逗留时长,咱们需求在埋点中参加引荐相关的参数。咱们将埋点参数规划成一个固定格局的字符串,它包括了曝光仅有序列号、引荐位标识、召回号、排序号、规矩号、展现号、帖子id列表、帖子id等字段,这些字段将会作用于机器学习模型练习样本生成和引荐作用核算中。埋点参数首要分为列表参数和单贴参数两类:引荐接口回来一个帖子列表,会对应回来一个列表参数,包括了曝光序列号、引荐位标识、召回号、排序号、规矩号、展现号、帖子id列表等字段;回来的帖子列表中,每个帖子会对应回来一个单贴参数,包括曝光序列号、引荐位标识、召回号、排序号、规矩号、展现号、帖子id等字段。客户端得到引荐接口回来的埋点参数后,会将列表参数埋入到曝光日志中,将单贴参数埋入到点击日志、转化日志和逗留时长日志傍边,留意这儿埋点时需求引荐列表页向帖子详情页传递单贴参数,一般需求经过修正跳转协议来完结。终究埋点日志中有了这些参数后,咱们便可依据曝光仅有序列号将曝光、点击、转化、时长数据join起来,发生模型练习样本以及漏斗作用数据。值得一提的是,咱们采纳透传的办法在引荐后台、接入层、客户端间传递埋点参数字符串,一切埋点参数由引荐体系后台生成,接入层和客户端均不做任何处理。埋点参数仅由咱们引荐一方担任,这样能够防止多方改动埋点参数,然后削减埋点过错的或许性,因为是透传处理,也便于往后埋点参数的扩展。

埋点数据是引荐体系的柱石,不能有遗失或许过错,这就要求咱们严厉把控开发测验流程,尤其是APP上的埋点,若发版之后发现有过错,便要比及下一次发版时处理。客户端开发和测验搭档不清楚埋点参数的意义但熟练掌握测验环境布置及具有Android和IOS测验机,而引荐后台搭档清楚埋点参数意义但对测验环境较陌生并缺少测验机,因而咱们总结出了测验搭档担任环境布置、引荐后台搭档担任查验埋点参数的测验流程,具体流程如下图所示。此外,58同城上的APP开发比较杂乱,不同产品线各自开发自己的APP事务模块,APP渠道方开发主模块,每次发版前都有一个集成阶段,兼并一切事务方提交的代码,发生终究的APP包,集成阶段很或许会发生事务方埋点未收效的状况。因而,咱们的埋点测验包括事务方内部测验和集成测验两个阶段,以确保埋点满有把握。

咱们的引荐作用数据是一个多维数据集,咱们首要重视引荐位上的点击、转化、逗留时长等方针。日常作业中咱们需求从不搭档务线、不同客户端、不同引荐位、不同引荐算法等多个维度去剖析这些方针数据,例如咱们会调查房产和车在相同引荐位上的数据比照、猜你喜爱场景上不同召回或排序算法的数据比照、二手房详情页在Android和IPhone上数据比照等。各种数据剖析比照能协助咱们优化引荐战略,甚至能发现某些事务线功用逻辑上的躲藏BUG,例如在咱们引荐项目攻坚阶段,咱们经过剖析比较二手房详情页在Android和IPhone两头的引荐作用,发现了IPhone上详情页阅览回退的BUG,终究反应给事务方并处理了该问题,该BUG的处理使得咱们在二手房详情页引荐位上的引荐点击量进步了数十万。

咱们从离线和实时两方面构建引荐作用数据,数据核算流程如下图所示:

前期,离线作用数据核算是经过 MapReduce + Hive + MySQL 来完结的,咱们首要会编写MapReduce程序对原始埋点日志进行抽取生成Hive表,然后会编写很多的Hive SQL来核算各类方针数据,并将成果数据写入MySQL数据表,终究做可视化展现和邮件报表。因为咱们比较的维度和方针多,Hive SQL句子的编写耗费了咱们不少人力。在数据渠道部分布置了Kylin多维剖析体系后,咱们将作用数据核算作业搬迁到了Kylin上,咱们只需求规划好Hive源数据表,并设置好维度和衡量,Kylin便能依据维度和衡量来主动预核算成果数据,这省去了咱们编写Hive SQL的作业,大大进步了功率。关于怎么运用Kylin构建多维数据集能够参阅此文《依据Kylin的引荐体系作用点评体系》。

实时作用数据咱们选用Storm + HBase 来核算,实时作用数据首要用于反常埋点监控、新上线引荐算法作用快速反应、模型反常监控等,咱们完结了一个包括较少维度的多维数据核算,往后咱们将测验引进Druid等实时多维剖析体系来完善引荐实时作用数据的建造。

总结

本文介绍了58同城智能引荐体系在算法、工程和数据三方面的技能演进。咱们在最近一年加快了引荐事务的迭代速度,接入了房产、车等事务线在APP、PC、M三端合计近百个引荐位,咱们的引荐点击占比方针(引荐位上发生的点击量在整体点击量中的占比)比较一年之前进步了2~3倍,达到了20%~30%,每天能够发生数千万的引荐点击量,为事务线带来了流量进步。

任何引荐体系的展开必会阅历引荐位扩大和引荐算法深化优化两个阶段,流量方针能够经过扩大引荐位来快速进步,当引荐位安稳之后,就需求依靠愈加深化的算法优化来持续进步方针,而此刻的作用进步也会相对缓慢。现在,咱们的流量方针已相对安稳,咱们会更进一层去重视转化方针,进步用户进入帖子之后与发帖人进行微聊或电话交流的或许性,协助用户找到真实有用的信息。

作者:詹坤林,58赶集集团TEG架构线智能引荐部担任人、算法架构师,前腾讯高级工程师,从事引荐算法和架构规划作业。

感谢支撑199IT
咱们努力为我国互联网研讨和咨询及IT职业数据专业人员和决策者供给一个数据同享渠道。

要持续拜访咱们的网站,只需封闭您的广告拦截器并改写页面。
翻滚到顶部