火山引擎DataLeap的Catalog系统搜索实践(三):Learning to rank与后续工作

news2024/11/25 14:14:49

Learning to rank

 

Learning to rank主要分为数据收集,离线训练和在线预测三个部分。搜索系统是一个Data-driven system,因此火山引擎DataLeap的Catalog系统设计之初就需要考虑数据收集。收集的数据可以用来评估和提升搜索的效果。数据收集和在线预测前面已有介绍,不再赘述,下面主要介绍离线训练部分。

离线训练的过程主要包括数据标注,特征工程,模型训练和评估。这四个步骤并非从前往后一气呵成,而是有可能进行评估,发现不足,然后增加标注数据,增加特征,重新训练,再次评估。评估效果有比较明显的收益时,才会上线测试。

数据标注

作为Data Catalog的搜索系统,不太容易获取大规模的人工标注数据,主要有两个原因:一是标注的成本较高,二是领域知识的专业性导致不容易找到合适的标注人员。因此,火山引擎DataLeap的Catalog系统标注数据来源主要有两个:一是来自搜索日志中有点击的部分,火山引擎DataLeap的研发人员将这部分数据划分为三档,曝光有点击,曝光排名前五且未点击和曝光未点击,赋予不同的分数;二是火山引擎DataLeap的研发人员根据资产名称结合日志中未点击的输入,基于规则生成一定的训练数据。

训练数据集需要持续更新,在review badcase时,可以针对需要改进的场景添加相应的训练数据。

特征

特征工程是一个持续的过程。经过一系列的选取,火山引擎DataLeap的Catalog系统的主要特征分为4大类型,涵盖了搜索的文本特征,数据的权威性,用户的个性化数据和数据的时效性。

下面列举了一些用到的主要特征和分类:

  • 文本特征

    • 输入相关的文本特征

      • 输入长度,比如有多少个词,总长度等等

      • 输入语言类型,中文或英文

    • 文本匹配度相关的特征

      • 基于词袋的CQR

      • Elasticsearch查询返回分数,基于BM25

  • 数据权威性

    • 热度:AssetRank, 基于资产的使用量和血缘关系,通过Weighted PageRank算法计算得到的资产热度

    • 元数据完整度,包含资产的业务元数据,如项目,主题,产品线等

    • 资产的最近1天/7天/30天的全平台使用总次数

    • 资产所处的生命周期:如上线,待下线,废弃等

    • 资产的总点赞数

  • 用户个性化数据,分为三大类

    • 静态个性化数据

      • 负责人:当前用户是否是该资产的负责人

      • 收藏:当前用户是否收藏了该资产

      • 点赞:当前用户是否点赞了该资产

    • 历史搜索查询行为数据

      • 当前用户历史上最近1天/7天/30天全平台使用该资产的次数

      • 当前用户历史上最近1天/7天/30天在Data Catalog平台查询点击该资产的次数

    • 协同数据

      • 同部门人员历史上最近1天/7天/30天在Data Catalog平台查询点击该资产的次数

      • 当前用户历史上最近1天/7天/30天在Data Catalog平台查询点击该资产所属部门所有资产的次数

      • 当前用户历史上最近1天/7天/30天在Data Catalog平台查询点击该资产所属负责人所有资产的次数

  • 数据时效性,用户会更倾向于使用最近创建或者有数据更新的资产

    • 资产创建时间

    • 资产数据的最近更新时间等

模型

Learning to rank通常有三类方法:Pointwise,Pairwise和Listwise。这三类方法各有优缺点,细节介绍如下:

  • Pointwise,对每个输入,对每个召回的资产单独打分(通常是Regression),然后按照分数进行排序。

    • 优点:简单直观。

    • 缺点:排序实际上不需要对资产进行精确打分,这类方法没有考虑召回资产之间的互相关系,考虑到用户在一组资产中只会点击其中一个,排名靠后的和排名靠前的资产在损失函数上的贡献没有体现。

  • Pairwise,对每个输入,考虑召回结果中所有资产的二元组合<资产1, 资产2>, 采取分类模型,预测两个资产的相对排序关系。

    • 优点:基于点击与原有相关性分数排序标注简单,相比pointwise考虑到选项之间关系。

    • 缺点:同样没有考虑排序前后顺序的重要性不同,样本生成复杂,开销大。对异常标注敏感,错误点影响范围大。

  • Listwise,考虑给定输入下的召回资产集合的整体序列,优化整个序列,通常使用NDCG作为优化目标。

    • 优点:优化整个序列,考虑序列内资产之间的关系。

    • 缺点:单条样本训练量大。样本过少,则无法对所有样本预测得到好的效果。

火山引擎DataLeap研发人员对Pointwise和Listwise都做了实验,最终火山引擎DataLeap的Catalog系统采用了Listwise的方案。主要原因是在我们的标注方式下,Listwise的方案更容易标注。具体实现上是采用了LightGBM的框架。

评估

火山引擎DataLeap研发人员使用了NDCG,AUC和验证点击率的方式对模型进行评估。

  • NDCG,归一化折损累计增益。NDCG是推荐和搜索中比较常用的评估方法,用来整体评估排序结果的准确性。

  • AUC,AUC主要反映排序能力的相对性,用于在正负样本不均衡的情况衡量离线模型拟合情况。

  • 重放有点击历史数据的点击率,使用待评估的模型预测有点击的历史输入,排序后得到Top3, Top5, Top10 点击率作为参考。这种方式比较直观,缺点是不能反映出在无点击历史数据上的效果。

衡量指标

搜索服务变更或新模型上线后,火山引擎DataLeap研发人员需要对线上搜索的真实效果进行衡量。目前火山引擎DataLeap研发人员主要通过搜索的点击率和Top3点击率来衡量。由于Data Catalog搜索的特殊性,火山引擎DataLeap研发人员更看重模糊搜索的总体点击率和Top3点击率(输入和资产名称完全一致的为精确搜索,其它为模糊搜索)。

实际上,点击率并非越高越好,过高的点击率可能意味着:

  • 搜索结果页透出的信息过少,用户不得不点击结果进入资产详情,即使只想查看一些简单的信息。

  • 用户在系统上探索的兴趣较小,只搜熟悉的资产或者确定能搜到的输入。

当然过低的点击率意味着较差的搜索体验。因此,点击率保持在一定健康的区间后,火山引擎DataLeap研发人员也需要关注模糊搜索和精确搜索的占比等指标。

其它模式

除了个性化的搜索需求,也会有一些场景,用户不需要精细化的排序,只需要把包含相关文本的资产都列举出来,因此我们也支持单纯的列表模式,用户可以在列表模式通过指定字段来对搜索结果进行排序。我们也在规划实现一些query syntax的功能,以此来支持用户在列表模式下更灵活地约束输入。

后续工作

火山引擎DataLeap Catalog系统的搜索功能还有很多有意义的工作值得我们继续探索,例如:

  • 血缘中的搜索。当一个资产的一级下游就超过上千个时,想从当前资产的众多下游中查找到相关的资产并不容易,因此提供基于血缘的筛选和搜索是一个不错的选择。

  • 多租户之间模型的迁移。作为支持多租户的公有云服务,由于租户之间数据的差异,新租户的冷启动问题,以较小的数据量和成本来支持不同租户都有好的搜索体验,也是一个值得挑战的方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/610716.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于国民技术N32G435的FLASH读写测试

一、测试工具&#xff1a; 1.国民技术N32G43XCL-STB开发板----主控为N32G435CB 2.创芯工坊PW200加密离线烧录器 3.PowerWriter上位机&#xff0c;配合PW200查看FLASH数据。 4.keil5 二、测试背景 现在很多的应用中都需要保存离线数据&#xff0c;例如一些传感器的校正数…

基于C#制作一个鼠标连点器

秒杀抢券、压枪换弹都是网上冲浪的基本操作,制作一个鼠标连点器,从此在互联网所向披靡。 一、项目搭建1.1、创建1.2、界面设计 二、功能实现2.1、类型库调用2.2、窗口句柄定义2.3、线程处理2.4、快捷键 一、项目搭建 1.1、创建 打开Visual Studio&#xff0c;右侧选择创建新项…

ARM体系结构和RAM的工程搭建、程序编写

目录 工程搭建 程序编写 带标志位的加法ADC ADCS 跳转指令B\BL 栈的应用->叶子函数的调用过程 栈的应用->非叶子函数的调用过程 异常中断产生指令 协处理器指令 伪操作 安装交叉编译工具 Makefile 宏定义 预编译指令 申请一个字的空间 .word 申请多个字节空间 嵌套编程 方…

如何查询期刊的SCI分区

好消息是CSDN AI写作助手上线了 我不用自己一个字一个字去写SCI分区是啥&#xff08;x&#xff09; 然而—— 麻了还是自己写吧&#xff0c; 在人工智能这条路上&#xff0c;CSDN还是需要努力。 简单来说&#xff0c;我们做科研、发文章&#xff0c;肯定是需要比较的 谁的…

记录一次Mysql死锁事件(由Insert与uniqueKey导致)

| 导语记录一次于2023年01月23日遇到的死锁问题。 1、基础 1.1 数据库隔离级别 1.1.1RC READ COMMITTED&#xff1a;只能读取已经提交的数据&#xff1b;此时&#xff1a;允许幻读和不可重复读&#xff0c;但不允许脏读&#xff0c;所以RC隔离级别要求解决脏读&#xff1b; 1.1…

Mac下通过Docker安装ElasticSearch集群

1、安装ElasticSearch 使用docker直接获取es镜像&#xff0c;执行命令docker pull elasticsearch:7.7.0 执行完成后&#xff0c;执行docker images即可看到上一步拉取的镜像。 2、创建数据挂在目录&#xff0c;以及配置ElasticSearch集群配置文件 创建数据文件挂载目录 mkdir -…

如何快速掌握Facebook运营+独立站运营基础?

在当今数字化时代&#xff0c;Facebook运营和独立站运营成为许多企业和个人创业者的关键战略。通过巧妙地结合这两个渠道&#xff0c;你可以有效地推广品牌、吸引目标受众并实现商业目标。本文将为你介绍如何快速掌握Facebook运营和独立站运营的基础知识&#xff0c;为你的业务…

微服务组件之Eureka

1、什么是Eureka&#xff0c;为什么要有Eureka 在传统的RPC远程调用中&#xff0c;管理每个服务于服务之间依赖关系复杂&#xff0c;管理复杂&#xff0c;所以需要使用服务治理&#xff0c;管理服务于服务之间依赖关系&#xff0c;可以实现服务调用、负载均衡、容错等&#xf…

一文搞懂KMP算法!!!

一文搞懂KMP算法&#xff01;&#xff01;&#xff01; &#x1f341;什么是KMP算法?&#x1f341;什么是 next() 数组 和 前缀表?前缀表有什么作用呢最长公共前后缀如何计算前缀表 &#x1f680; 构造next数组&#x1f680; 使用next数组来做匹配 &#x1f341;什么是KMP算法…

基于SSM+Vue的旅游资源网站设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

我们不打价格战!大众的倔强

2023年即将过半&#xff0c;在价格战席卷市场的同时&#xff0c;汽车制造商必须在市场份额、销量、营收以及利润之间做出权衡。“无论如何&#xff0c;大众都不会参与中国市场的价格战。“本周&#xff0c;大众汽车首席运营官Ralf Brandstaetter表示。 这家曾经在中国市场长期占…

留学生ChatGPT的正确打开方式及推荐使用方式

ChatGPT是什么? ChatGPT可以代写论文吗&#xff1f; ChatGPT推荐打开方式是什么&#xff1f; 今天就为大家梳理一下火爆全网的ChatGPT在留学中的正确打开方式&#xff0c;让同学可以更好地体验ChatGPT带来的便利。 什么是Chat GPT&#xff1f; ChatGPT&#xff08;Chat G…

Office Visio 2016安装

哈喽&#xff0c;大家好。今天一起学习的是Visio 2016的安装&#xff0c;这是一个绘制流程图的软件&#xff0c;用有效的绘图表达信息&#xff0c;比任何文字都更加形象和直观。Office Visio 是office软件系列中负责绘制流程图和示意图的软件&#xff0c;便于IT和商务人员就复杂…

微信电脑版二维码( NATIVE 扫码支付)

后端代码 /** * 微信支付->扫码支付(模式二)->统一下单->微信二维码 * return */ PostMapping (value “/qrcode”) RequestLog(“微信支付二维码”) ApiOperation(“微信支付二维码”) AnonAccess public ResponseEntity wxpayPay(Validated RequestBody SysMember…

GreatSQL 8.0.32-24 今日发布

1.新增特性 1.1 SQL兼容性1.2 MGR1.3 性能优化1.4 安全 2.稳定性提升 3.其他调整 4.bug修复 5.GreatSQL VS MySQL 6.GreatSQL Release Notes GreatSQL 8.0.32-24版本发布&#xff0c;增加并行load data、&#xff08;逻辑 & CLONE&#xff09;备份加密、MGR读写节点可绑定…

MyBatis的创建和单表使用

前言&#xff1a; 之前我们了解到MySQL。接下来了解一下MyBatis&#xff0c;它不是一种数据库&#xff0c;那是什么呢和数据库有什么联系了&#xff1f; 目录 一&#xff1a;MyBatis的定义 二&#xff1a;MyBatis的创建 三&#xff1a;MyBatis的简单使用 3.1:准备工作 3.…

后端服务架构高性能设计之道

“N 高 N 可”&#xff0c;高性能、高并发、高可用、高可靠、可扩展、可维护、可用性等是后台开发耳熟能详的词了&#xff0c;它们中有些词在大部分情况下表达相近意思。本序列文章旨在探讨和总结后台架构设计中常用的技术和方法&#xff0c;并归纳成一套方法论。 前言 本文主…

视频采集到录制 - MP4生成

录制最终格式是MP4&#xff0c;视频流是采用H264编码流&#xff0c;音频是aac编码流 最终需要将两个流合并到一个文件里 采用的方案&#xff0c;是通过mp4v2的库&#xff0c;进行合并 原理很简单&#xff1a; 先创建文件&#xff0c;输入编码参数 需要创建视频流初始 也需要…

制造业在数字化时代如何应对挑战和机遇?

随着数字化时代的到来&#xff0c;制造业不可避免地会受到一些对应的挑战和机遇。以下是一些关键部分&#xff1a; 数字化转型&#xff1a;制造商已经采用数字技术来转变他们的运营。包括采用高级分析、自动化、人工智能 (AI) 和物联网 (IoT)。这些技术可以提高生产力、质量控制…

2.项目数仓、项目工具

项目数仓 数仓(Data Warehouse)是指用于存储和管理企业数据的一种大型数据库系统,以支持企业的决策分析活动。它采用了ETL(抽取、转化、加载)等技术来集成和清洗数据,并提供了灵活的查询和报表功能,使得分析师和决策者可以更好地理解企业的业务情况和趋势。 项目工…