干货 | 当你在携程搜索时,背后的推荐系统是如何工作的

于磊-携程AI和推荐系统的云化实践 于磊-携程AI和推荐系统的云化实践于磊-携程AI和推荐系统的云化实践于磊-携程AI和推荐系统的云化实践 立即下载

作者简介

葛荣亮,携程搜索部门高级研发工程师。2015年加入携程,目前主要负责搜索平台的前端+数据挖据工作。


一、前言


随着旅游业的发展,人们对搜索的要求越来越高。智能化大趋势下,个性化的推荐系统的应用及用户需求也越来越广泛。


旅游推荐系统主要面临的问题及挑战包括:


  • 用户维度,用户的需求多种多样,如本地异地的差异,年龄、家庭结构的差异等;

  • 时间、地理维度,每个时间点的需求都是不同的,如季节(冬季的温泉,夏季避暑...)、早中晚的需求差异,不同城市用户对同一目的地的旅游产品类别需求可能不同;

  • 产品维度,如何输出多样性的产品也是推荐系统考虑的重点,如相似的酒店、景点等。


针对以上面临的问题和挑战,本文将分享携程推荐系统的更新迭代过程。


二、推荐系统架构



携程搜索推荐系统架构如下:


640?wx_fmt=png

                           

抛开业务和数据部分,这里只简单介绍推荐服务的结构,其简要构造如下:


640?wx_fmt=png

 

2.1 用户行为


用户行为数据展示了用户的操作习惯和偏好。对这部分数据进行离线分析,可以更好地理解用户,以此来做线上产品的推荐源。


对线上需要的行为数据,可以取一个月或者近7天的历史数据,以保证数据的时效性。


2.2 可用产品


这部分指的是可供用户使用的产品及可以提供帮助的文章等。主旨在于告诉系统,我们有什么产品,哪些产品是可以提供给用户的,及哪些是优质的产品。产品的定义比较广泛,可以不限定具体的售卖产品,也可指定用户偏好,比如用户对酒店、景点的偏向等。


2.3.召回


这部分是整个系统的重点,也是规划场景最多的地方。这部分可以细分成几大召回策略(以推荐实际酒店、文章、景点的系统为例):


2.3.1 补充策略


这部分主要输出当前热门的产品信息,比如当季热门的酒店、景点等。


在具体实现的时候可以考虑季节性的变化,比如以两周为周期,统计产品的点击情况,当用户对于温泉搜索量增加时,可以输出一些热门的温泉景点。


这部分补充策略,只是为了解决冷启动问题,即当用户没有行为,或者没有地理位置信息时,做最基本的补充。


2.3.2 基于位置召回


当得到具体位置信息之后,可以做更具体的补充召回:


1)根据当前用户所在地,推荐当地的热门产品;

2)判断用户是否在常住地。如常驻上海的用户,在上海搜索产品时,更喜欢周边游,而常驻北京的用户,在上海搜产品时,更喜欢东方明珠和迪士尼。

具体分类为:

本地需求(定位城市=常驻城市),输出当地人热搜/点击的产品;

外地需求(定位城市!=常驻城市),输出外地人热搜/点击的产品;

3)根据地理位置信息,输出用户周边的几公里内的产品。


2.3.3 基于历史关联策略


这部分内容是基于用户历史行为,推出相关的产品。需要对数据和行为进行总结,并提供相应的产品展示逻辑,丰富推荐召回的内容。比如用户预定迪士尼乐园的门票,可以推迪士尼附近的酒店等。


2.3.4 协同过滤


协同过滤是推荐系统经典的算法。其对用户行为、产品的相关性做了抽象和泛化。协同过滤算法主要分为USER CF和ITEM CF,即基于用户的协同过滤和基于物品的协同过滤。


在这里我们主要用到基于物品的协调过滤,相比用户的协同过滤,物品的内容属性和数量更便于统计和计算。具体算法可以参看《推荐系统实践》这本书。


大体可以理解为,定了某一酒店的用户,又定了哪些酒店,及通常订了又订的逻辑。比如,以用户一个月的点击或订单数据为基础,计算出物品的相似度,当用户搜了某条产品时,推荐与其相似的其他产品。具体示例为:假设东方明珠、外滩、迪士尼产品相似,当用户搜索东方明珠的时,推荐外滩和迪士尼。


2.4 排序


上述召回策略,会召回大量的产品,如何对这些产品进行合理排序,是推荐系统的核心部分,同时也是反映系统优劣的指标。


这部分,经历几次迭代。


在1.0时代,在排序策略上进行了几次变动:


1)对召回产品按照类别,对相同类型产品,进行销量排序;

2)考虑到操作时间问题,加入操作时间权重。对历史行为的时间进行归一化得出权重,最大为1。操作时间越近,权重越大;

3)考虑规则的重要性,加入规则分;


上述排序策略取得一定效果,但很难完善排序问题。


最终,选取了机器学习的排序算法。其基本实现为:对每个输出产品,规划特征,输出特征集。比如季节特征,当地人/外地人特征,一天内的早、中、晚特征等。接下来根据订单和点击数据,输出训练样本,为每个召回产品做一个打分,最高5分,最低1分。最后使用XGBoost工具,对样本进行训练,这样就能得出基本模型。


通过模型,对线上每个召回产品进行打分并排序,得出最终结果。同时在系统上线后,定期的进行更新,并通过ABTest系统不断对模型进行迭代。


大致流程如下:



640?wx_fmt=png


2.5 过滤输出


这部分内容,主要做格式化输出,并过滤一些无效,黑名单产品。


每个场景的输出,都不太一样,就需要对其数据进行筛选。比如进入搜索默认页时,提前给出推荐产品,减少用户操作。还可以在用户搜某个具体城市时,输出相应的结果。


这里需要注意的是马太效应。由于推出的内容有限,对于一些产品,会导致点击多的会越来越多,而点击少的,则慢慢退出推荐序列。这里需要对那些不常用产品做展示规划。比如随机出一两条,给一定曝光,消除一部分马太效应。


三、展望



目前推荐系统已经运用在多个场景,但对场景及产品的引入毕竟有限,同时对query 分析还不够完善,后续将丰富产品,并引入更多机器学习的内容,让系统更智能化和自动化。同时会加入更多深度学习内容,在搜索意图和NLP相关方面做更进一步的分析。




抓紧上车

了解百度/阿里/携程的最新架构实践

6月15日,等你来~

戳下方图片报名


640?wx_fmt=png


【推荐阅读】



Qt Design Studio 入门指南:从零开始打造炫酷UI(详细+实用+轻松上手) 本文是Qt Design Studio的详细入门指南,旨在帮助UI设计新手从零开始轻松打造炫酷界面。文章系统介绍了软件的核心概念、安装步骤、主界面解析,并通过创建一个完整的登录界面实例,手把手教学如何拖拽组件、设置属性、添加交互状态与动画。同时,分享了创建自定义组件、管理资源以及提升效率的实用技巧与常见问题解决方案,让读者能够快速上手并应用于实际项目开发。 阅读详情

相关推荐

基于STM32的红外测温系统设计

为了实现本次的毕业设计,我搜集了大量的文献与资料,通过这些资料了解到红外测温的优点,与实现所需的基本器件,并设计了几个方案,最终选择了STM32作为主控芯片,为此还查阅了关于STM32的资料,在此次设计中采用的是MLX90614医用红外测温模块,通过查阅其数据手册了解其测量精度高且自带温度补偿,所以选择了该传感器作为红外测温模块,本次设计到此已经基本完成,硬件部分和软件部分的设计已基本完成。

weixin_112233的博客 1420

携程个性化推荐算法实践

携程作为国内领先的OTA,每天向上千万用户提供全方位的旅行服务,如何为如此众多的用户发现适合自己的旅游产品与服务,挖掘潜在的兴趣,缓解信息过载,个性化推荐系统与算法在其中发挥着不可或缺的作用。而OTA的个性化推荐一直也是个难点,没有太多成功经验可以借鉴,本文分享了携程在个性化推荐实践中的一些尝试与摸索。推荐流程大体上可以分为3个部分,召回、排序、推荐结果生成,整体的架构如下图所示。召回阶段,主要是

架构文摘 1465

STM32_WS2811驱动

STM32的WS2811驱动

健身房 2839

干货 | 携程酒店搜索引擎AWS上云实践

作者简介宮娴,携程高级后端开发工程师;Spike,携程高级后端开发专家。随着携程国际化业务的快速推进,搜索引擎作为用户体验中至关重要的一环,上云变得志在必行。本文主要分享酒店搜索引擎迁移AWS的探索与实践过程,内容将涵盖一个HTTP请求的全链路处理过程:包括从APP发出请求到网关,再到内网错综复杂的微服务,最后到所依赖的各种持久化存储。一、微服务架构带来的挑战这次上云的...

携程技术 2786

DEAP数据集实战指南:从脑电信号到情绪分类的完整流程解析

本文提供了DEAP数据集在脑电信号情绪识别领域的完整实战指南。详细解析了数据下载、结构理解、频带功率特征提取等核心步骤,并演示了如何构建和评估机器学习分类模型,为研究者实现从原始脑电信号到情绪分类的完整流程提供了清晰路径。

jj890的博客 889

2024年上市公司ESG评级全解析:六大权威数据源横向对比与应用指南

本文深度解析2024年国内主流ESG评级数据源,包括华证、商道融绿、Wind、富时罗素和彭博,横向对比其覆盖范围、评分逻辑与应用侧重点。文章提供实战指南,帮助投资者与企业根据投资决策、风险管理和学术研究等不同场景,精准选择并有效应用ESG数据,实现从概念到实用分析工具的转变。

weixin_29229055的博客 311

用户案例|向量引擎在携程酒店搜索中的应用场景和探索

然而,这种方法存在一定的局限性。针对于 Milvus 数据库的部署模块,集群部署方式需要部署以下 8 个组件,分别是访问代理层(proxy)、协调节点(Root coordinator,Query coordinator ,Data coordinator,Index coordinator)和执行节点(Query node,Data node,Index node)。常规的解决方案是添加同义词"好莱坞"和"荷里活"之间的关联,例如将"荷里活"作为"好莱坞"的别名,并在商区实体维护中进行相应的标注。

ZILLIZ 1479

7-1 链式基数排序 (20 分)

7-1 链式基数排序 (20 分) 实现链式基数排序,待排序关键字n满足1≤n≤1000,最大关键字数位≤5。 输入样例: 第一行输入待排序个数n(1≤n≤1000),再输入n个数(n的数位≤5)。 10 278 109 63 930 589 184 505 269 8 83 输出样例: 输出每趟分配-收集后链表中的关键字,趟数为序列中最大值的数位(如样例中930的数位为3),每行结尾有空格。 930 63 83 184 505 278 8 109 589 269 505 8 109 930 63 26

OwemShu的博客 4236

21年Java面经分享,绝对干货

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家[外链图片转存中…(img-HQUZEJZz-1710152434208)][外链图片转存中…(img-0MBP0td5-1710152434208)]本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录。

m0_60607675的博客 1055

保姆级教程:在RK3568上调试RGMII网口,从设备树到PHY驱动的完整避坑指南

本文提供RK3568开发板上RGMII网口调试的完整指南,涵盖硬件检查、设备树配置、驱动加载及性能优化。通过详细步骤和实战案例,帮助开发者避开常见陷阱,确保以太网功能稳定运行,特别关注PHY驱动和MDIO总线的调试技巧。

weixin_26821003的博客 320

YALMIP介绍及怎么在Matlab中加YALMIP、SDPT3

目录YALMIP简介怎么在Matlab中加YALMIP?1. 创建决策变量:2. 添加约束:3. 参数配置4. 求解怎么在MatlabR2019a中加YALMIP?1.下载工具包2.放置工具包3.添加路径4.测试安装结果怎么在MatlabR2019a中加SDPT3? YALMIP简介 怎么在Matlab中加YALMIP? yalmip是一位“集大成者”,它不仅自己包含基本的线性规划求解算法,比如linprog(线性规划)、bintprog(二值线性规划)、bnb(分支界定算法)等,他还提供了对cpl

m0_51431440的博客 2万+

干货面试教程!java数组和链表

前言 Java作为最全面的语言,国内开发者也是最多的,Java综合起来各方面都不错,在大部分场景下是一种稳健的技术选择。加上近年来安卓的推动,目前也是最流行的一种语言。 现在Java的就业市场看起来还是挺大的,而且工资也是比较可观的,**但我为什么说是看起来呢?**其实,最主要的原因还是市场决定的,每年涌入市场的Java开发人员应该是最多的,但是市场上Java初级开发人员早已经饱和了,也就造成了就业市场较大的假象。如果初级程序员一直不提升技术,那么注定要被淘汰。 那么要如何才能系统的学习Java语言,从一名

m0_56711468的博客 170

YOLO12涨点改进| 损失函数改进篇 |AAAI 2025| 一种小目标检测SDLoss损失函数,解决现有损失函数对不同目标尺度敏感度不足的局限,提高了网络检测不同尺度目标的敏感能力,助力高效涨点

本文提出了一种改进的小目标检测方法SDLoss,通过动态调整尺度损失与位置损失的权重,优化了YOLOv12模型的性能。针对红外小目标检测中存在的两个主要问题:1)标准卷积难以捕捉目标的高斯空间分布特性;2)现有损失函数对不同尺度目标的敏感度不足,研究团队开发了Pinwheel-shaped卷积(PConv)和Scale-based Dynamic损失函数(SDLoss)。PConv通过不对称卷积核设计显著提升感受野,SDLoss则根据目标大小动态平衡尺度与位置损失的影响。

Ai缝合怪、助力小伙伴高效发论文 236

2024Java面试真题精选干货整理,应届生面试java开发工程师的题

外链图片转存中…(img-v5UqktnT-1710148599326)][外链图片转存中…(img-R9QLimkk-1710148599326)][外链图片转存中…(img-CKKwohGB-1710148599327)]本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录。

m0_60721860的博客 399

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

干货!阿里大佬亲授“Java性能调优技术宝典”,架构师必备技能

开头 如果Redis的读写请求量很大,那么单个实例很有可能承担不了这么大的请求量,如何提高Redis的性能呢?你也许已经想到了,可以部署多个副本节点,业务采用读写分离的方式,把读请求分担到多个副本节点上,提高访问性能。要实现读写分离,就必须部署多个副本,每个副本需要实时同步主节点的数据。 Redis也提供了完善的主从复制机制,使用非常简单的命令,就可以构建一个多副本节点的集群。 同时,当主节点故障宕机时,我们可以把一个副本节点提升为主节点,提高Redis的可用性。可见,对于故障恢复,也依赖Redis的主从复

m0_56675448的博客 262

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java获取当前系统日期和时间的函数名为,终于搞明白了

大数据、算法项目在任何大厂无论是面试还是工作运用都是非常广泛的,我们精选了50个百度、腾讯、阿里等大厂的大数据、算法落地经验甩给大家,千万不要做收藏党哦,空闲时间记得随时看看! 如果你没有大厂项目经验,对大厂算法、大数据的项目运用不了解建议你看看! 算法 大数据 基于知识图谱的语义理解技术及应用-百度 知识图谱在人工智能应用中的重要价值日益突显。百度构建了超大规模的通用知识图谱,并在搜索、 推荐、智能交互等多项产品中广泛应用。同时,随着文本、语音、视觉等智能技术的不断深入,知识图谱在复杂知识表示、多模

jixuczy的博客 483

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

技术内容创作如何应对算法流量焦虑?从反机器人声明看高质量分享

在当今的互联网环境中,算法推荐系统已成为内容分发的核心机制,其基本原理是通过分析用户互动数据(如点赞、评论、收藏)来预测兴趣并优化内容曝光。这一机制在提升信息获取效率的同时,也带来了新的挑战:当流量激励与内容创作深度绑定,单纯追求互动数据可能扭曲技术内容的价值衡量标准,催生“标题党”或诱导性文案,甚至引发对“点赞机器人”等虚假互动的对抗。从技术价值角度看,高质量的技术分享应侧重于内容的准确性、深度、清晰度与可复用性,而非表面的互动指标。在应用场景上,无论是技术博客、视频教程还是开源项目文档,创作者都需要在理

cuml0912的博客 449

干货 | 携程酒店排序推荐广告高效可靠数据基座--填充引擎

作者简介yang,携程资深后端开发工程师,专注推荐系统架构、数据流批一体、系统稳定性、效率提升等领域;kevin,携程高级研发经理,专注以技术驱动解决推荐系统中产品业务上的共性问题,创新生产模式,重构生产力;莫秃,携程高级后端开发工程师,负责酒店机器学习平台的研发工作;一、背景与思考1.1 背景携程酒店排序推荐广告工程(以下简称酒店推荐工程)在数据层面引入抽象化的统一数据协议UnifiedPB,解...

携程技术 1183

查询耗时降低2/3,携程度假搜索引擎架构优化 v2020

作者简介少伟,负责度假起价、搜索的研发工作,资深技术控。锦涛,负责度假搜索及相关子系统的建设,对搜索引擎、NLP等有浓厚兴趣。携程度假搜索引擎(以下简称为引擎):携程度假搜索引擎是一个专注在旅游行业的垂直搜索引擎,用来查找符合从出发地到目的地的相关旅游产品(跟团、自由行、邮轮、游学、主题游等),是一个典型的O2O搜索引擎(Online To Offline)。本文将分享度假搜索引擎的优化过程及相关思路,希望可以给公司同类项目以及行业同类需求提供一些启发和借鉴。主要业务范围:团队游、自由行、游学、主题游、玩乐

Java搜索工程技术栈 492

干货 | 深度学习在携程搜索词义解析中的应用

作者简介携程旅游研发部大数据与AI研发团队,为旅游事业部提供丰富的AI技术产品和技术能力。一、背景介绍搜索是电商最重要的门面之一,大部分用户通过搜索来找到他们想要的商品,因此搜索是用户表达意图最直接的方式,也是转化率最高的流量来源之一。绝大部分的电商搜索是通过搜索框输入搜索词(Query)来完成,因此,搜索词的词义解析和意图理解成为了搜索中的重要一环。主流的搜索词义解析和Query理解需要经过纠错...

携程技术 3130

干货 | 携程酒店推荐模型优化

作者简介Yorkey,携程高级算法专家,主要从事大规模分布式推荐系统设计和算法研发工作。一、背景当用户在线上浏览酒店时,作为旅行平台,如何挑选更合适的酒店推荐给用户,降低其选择的费力度,...

携程技术 2261

干货 | Elasticsearch 布道者Medcl对话携程Wood大叔核心笔记

Elastic Podcast 第二期来啦, 这一次我们来到了位于上海的携程旅行网,携程内部大量运用了 Elasticsearch来进行集中式的运维日志管理和为业务部门提供统一的搜索服务平台, 目前线上总共部署了多达 94 个 Elasticsearch 集群和超过 700 多个 Elasticsearch 节点,每天新增日志 1600 亿条,峰值达到 300 万每秒,存放在 E...

铭毅天下Elasticsearch 4094

携程推荐系统架构学习

下图是携程推荐系统的架构图,参考携程大数据实践:高并发应用架构及推荐系统案例 这个图,画的较携程应用系统整体架构学习清晰。 对我的技术选型和架构设计有很多借鉴参考的地方 1 数据采集 采集的是哪些数据? 采集数据的格式是什么? 采集数据的工具是什么?采集数据时间窗如何? 数据传输方式是什么? 2 数据清晰

warrah 南极狼 3797
上一篇: 程里人 | 听说携程技术GG们去划龙舟了
下一篇: 干货 | 快速融入云原生,携程开源 Dubbo for Go 版本
携程技术
博客等级 码龄10年 3715粉丝 324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值