美团点评作为国内最大的生活服务平台,业务种类涉及食、住、行、玩、乐等领域,致力于让大家吃得更好,活得更好,有数亿用户以及丰富的用户行为。随着业务的飞速发展,美团点评的用户和商户数在快速增长。在这样的背景下,通过对推荐算法的优化,可以更好的给用户提供感兴趣的内容,帮用户更快速方便的找到所求。我们目标是根据用户的兴趣及行为,向用户推荐感兴趣的内容,打造一个高精准性、高丰富度且让用户感到欣喜的推荐系统。为了达到这个目的,我们在不停的尝试将新的算法、新的技术进引入到现有的框架中。
自2012年ImageNet大赛技惊四座后,深度学习已经成为近年来机器学习和人工智能领域中关注度最高的技术。在深度学习出现之前,人们借助SIFT、HOG等算法提取具有良好区分性的特征,再结合SVM等机器学习算法进行图像识别。然而SIFT这类算法提取的特征是有局限性的,导致当时比赛的最好结果的错误率也在26%以上。卷积神经网络(CNN)的首次亮相就将错误率一下由26%降低到15%,同年微软团队发布的论文中显示,通过深度学习可以将ImageNet 2012资料集的错误率降到4.94%。
随后的几年,深度学习在多个应用领域都取得了令人瞩目的进展,如语音识别、图像识别、自然语言处理等。鉴于深度学习的潜力,各大互联网公司也纷纷投入资源开展科研与运用。因为人们意识到,在大数据时代,更加复杂且强大的深度模型,能深刻揭示海量数据里所承载的复杂而丰富的信息,并对未来或未知事件做更精准的预测。
美团点评作为一直致力于站在科技前沿的互联网公司,也在深度学习方面进行了一些探索,其中在自然语言处理领域,我们将深度学习技术应用于文本分析、语义匹配、搜索引擎的排序模型等;在计算机视觉领域,我们将其应用于文字识别、图像分类、图像质量排序等。本文就是笔者所在团队,在借鉴了Google在2016年提出的Wide & Deep Learning 的思想上,基于自身业务的一些特点,在大众点评推荐系统上做出的一些思考和取得的实践经验。
与大部分的推荐系统不同,美团点评的场景由于自身业务的多样性,使得我们很难准确捕获用户的兴趣点或用户的实时意图。而且我们推荐的场景也会随着用户兴趣、地点、环境、时间等变化而变化。点评推荐系统主要面临以下几点挑战:
针对上述问题,我们定制了一套完善的推荐系统框架,包括基于机器学习的多选品召回与排序策略,以及从海量大数据的离线计算到高并发在线服务的推荐引擎。推荐系统的策略主要分为召回和排序两个过程,召回主要负责生成推荐的候选集,排序负责将多个算法策略的结果进行个性化排序。
召回层:我们通过用户行为、场景等进行实时判断,通过多个召回策略召回不同候选集。再对召回的候选集进行融合。候选集融合和过滤层有两个功能,一是提高推荐策略的覆盖度和精度;另外还要承担一定的过滤职责,从产品、运营的角度制定一些人工规则,过滤掉不符合条件的Item。下面是一些我们常用到的召回策略:
Model-Based 协同过滤:用一组隐含因子来联系用户和商品。其中每个用户、每个商品都用一个向量来表示,用户u对商品i的评价通过计算这两个向量的内积得到。算法的关键在于根据已知的用户对商品的行为数据来估计用户和商品的隐因子向量。
Item-Based 协同过滤:我们先用word2vec对每个Item取其隐含空间的向量,然后用Cosine Similarity计算用户u用过的每一个Item与未用过Item i之间的相似性。最后对Top N的结果进行召回。
Query-Based:是根据Query中包含的实时信息(如地理位置信息、WiFi到店、关键词搜索、导航搜索等)对用户的意图进行抽象,从而触发的策略。
Location-Based:移动设备的位置是经常发生变化的,不同的地理位置反映了不同的用户场景,可以在具体的业务中充分利用。在推荐的候选集召回中,我们也会根据用户的实时地理位置、工作地、居住地等地理位置触发相应的策略。
排序层:每类召回策略都会召回一定的结果,这些结果去重后需要统一做排序。点评推荐排序的框架大致可以分为三块:
离线计算层:离线计算层主要包含了算法集合、算法引擎,负责数据的整合、特征的提取、模型的训练、以及线下的评估。
近线实时数据流:主要是对不同的用户流实施订阅、行为预测,并利用各种数据处理工具对原始日志进行清洗,处理成格式化的数据,落地到不同类型的存储系统中,供下游的算法和模型使用。
在线实时打分:根据用户所处的场景,提取出相对应的特征,并利用多种机器学习算法,对多策略召回的结果进行融合和打分重排。
具体的推荐流程图如下:
从整体框架的角度看,当用户每次请求时,系统就会将当前请求的数据写入到日志当中,利用各种数据处理工具对原始日志进行清洗,格式化,落地到不同类型的存储系统中。在训练时,我们利用特征工程,从处理过后的数据集中选出训练、测试样本集,并借此进行线下模型的训练和预估。我们采用多种机器学习算法,并通过线下AUC、NDCG、Precision等指标来评估他们的表现。线下模型经过训练和评估后,如果在测试集有比较明显的提高,会将其上线进行线上AB测试。同时,我们也有多种维度的报表对模型进行数据上的支持。
转自:美团点评技术团队
点击“阅读原文”查看全文