LTR|怎么理解基于机器学习“四大支柱”划分的学习排序方法
Learning to rank(LTR,L2R)也叫排序学习,泛指机器学习中任何用户排序的技术,是指一类监督学习(Supervised Learning)排序算法。 LTR被应用在很多领域,比如信息检索(Information Retrieval)、推荐系统(Recommend System)、搜索引擎(Search Engine)。
LTR框架
一般来讲,根据机器学习的“四大支柱”,LTR分为三类方法:Pointwise Approach、Pairwise Approach、Listwise Approach。不同的方法通过不同的方式去训练模型,他们定义不同的输入、不同的输出、不同的假设、不同的损失函数。
什么是机器学习的四大支柱?看下图
LTR框架对应的则是排序模型,一个通用的LTR框架如下:
通常来说,一个训练集由 n n n个query组成 q i ( i = 1 , 2 , 3... , n ) q_i(i=1,2,3...,n) qi(i=1,2,3...,n),每一个query都会有一系列与之相关的documents(通常每个documents都有向量表示,向量内容可以是有意义的特征,也可以是embedding得出的向量) X i = { x j ( i ) } y = 1 m ( i ) X^i = \{ x_j^{(i)} \}_{y=1}^{m^{(i)}} Xi={xj(i)}y=1m(i), m ( i ) m^{(i)} m(i)表示与 q i q_i qi相关的documents个数, y y y代表documents的正确标签(可能是0或者1,也能是相关度)。上图中对应的流程是:准备训练数据->特征提取->训练模型-数据预测->效果评估
Pointwise Approach
解释
Pointwise是“逐样本”的训练方法,即仅考虑单个样本的得分 h ( x i ) h(x_i) h(xi)与样本的真实得分 y ( i ) y^{(i)} y(i)的关系。
Pointwise 将问题转化为多分类或回归问题。如果归结为多分类问题,对于某个 Query,对文档与此 Query 的相关程度打标签,标签分为有限的类别,这样就将问题转为多分类问题;如果归结为回归问题,对于某个 Query,则对文档与此 Query 的相关程度计算相关度 Score,这样就将问题归结为回归问题。
例如,对于一组样本数据,用户一段时间内在几个商品类别下的浏览,收藏,分享,购买次数,然后label为喜好等级或是否喜欢,如下表所示(数据伪造只为了说明问题):
用户 | 类别 | 浏览 | 收藏 | 分享 | 购买 | 喜好等级 | 是否喜欢 |
---|---|---|---|---|---|---|---|
userA | 数码产品 | 43 | 8 | 4 | 2 | 高 | 是 |
userB | 生活用户 | 24 | 4 | 2 | 1 | 中 | 否 |
userC | 办公用品 | 12 | 1 | 4 | 0 | 低 | 否 |
userD | 衣服 | 25 | 5 | 1 | 1 | 中 | 是 |
如上表所示,用户在每个类别下的行为特征有四个,喜好等级分为:高、中、低三档。然后我们可以采用机器学习中的任意一种多分类方法计算用户对物品类别的喜好等级,当然我们也可以采用二分类的方法计算用户是否喜欢这个类别,这和推荐系统中基于CTR来做物品排序和pointwise中的二分类思路是一致的。
缺点
- Pointwise完全从单文档的分类角度计算,没有考虑文档之间的相对顺序。而且它假设相关度是查询无关的,只要 ( q u e r y , y i ) (query,y_i) (query,yi)的相关度相同,那么他们就被划分到同一个级别中,属于同一类。比如在CTR场景中构建的训练集中,所有正样本之间的相关性,Pointwise是不会考虑,同样所有的负样本之间的相关性Pointwise也是不会考虑的。
- 损失函数中没有捕获预测排序中的位置信息,因此,损失函数可能无意的过多强调那些不重要的结果,即那些排序在后面对用户体验影响小的结果。
Pairwise Approach
解释
相对Pointwise而言,Pairwise更在乎的是文档之间的顺序,他主要将排序问题归结为二元分类问题,这时候相应的机器学习算法就比较多了,比如Boost、SVM、神经网络等。对于同一query的相关文档集中,对任何两个不同label的文档,都可以得到一个训练实例 ( y i , y j ) (y_i,y_j) (yi,yj),如果 y i > y j y_i>y_j yi>yj则赋值+1,反之-1,于是我们就得到了二元分类器训练所需的训练样本了。
Pairwise通常用在搜索系统中,系统接收到用户査询后,返回相关文档列表,所以问题的关键是确定文档之间的先后顺序关系。Pointwise方法完全从单个文档的分类得分角度计算,没有考虑文档之间的顺序关系。文档对方法将排序问题转化为多个pair的排序问题,比较不同文章的先后顺序。
在Pairwise算法中,每个输入数据为一对具有偏序关系(preference relation)的文档,通过对这些数据对的有监督学习来获得一个排序模型,其学习目标是使得结果列表中的错误的偏序对越少越好。
目前公认最为经典的三个Pairwise算法是:基于SVM的Ranking SVM算法、基于神经网络的RankNet算法和基于Boosting的RankBoost算法。
缺点
- 样本数据大多数为有序类别,转化成 pairwise preference 后必定会损失掉一些更细粒度的相关度标注信息。
- 转化成 pairwise preference 后,样本数量将会增加很多倍,在进行模型训练时也会需要更大的计算资源。
- Pairwise 类方法相对 Pointwise 类方法对噪声标注更敏感,即一个错误标注会引起多个pair 标注错误。
- Pairwise 类方法仅考虑了pair 的相对位置,同样也没有考虑样本在预测排序中的位置信息,同时也没有考虑同一个label对应的数据的内部依赖性。
Listwise Approach
解释
Pariwise和Pointwise忽视了一个事实就是答案选择就是从一系列候选句子中的预测问题,相对于 Pointwise 和 Pairwise 方法来说,它不再将排序问题转化为一个分类问题或者回归问题,而是直接针对评价指标对文档的排序结果进行优化,在listwise中单一训练样本是:query和它的所有候选回答句子。
ListWise中常用的优化指标有:MAP、NDCG。常用的ListWise方法有:LambdaRank、AdaRank、SoftRank、LambdaMART。
优缺点
- 优点:相较 Pointwise、Pairwise 对 ranking 的 model 更自然,解决了 ranking 应该基于 query 和 position 问题。
- 缺点:一些 ranking 算法需要基于排列来计算 loss,从而使得训练复杂度较高。
Pointwise VS Pairwise
在推荐系统领域,Pointwise的应用是比Pairwise更广的,因为效果更好,但是在搜索系统领域Pairwsie表现比Pointwise更加出色。
在搜索系统中,搜索是带 query 的、有意识的被动推荐,对于搜索而言,相关性是及其重要的事情。query 限制了你召回商品相关性,比如 “华为手机”,召回回来一批相似性极高的手机,基于用户的主观诉求也决定了他将高度关注商品之间的细微差别,比如价格、颜色、配置等,因此这些商品才有必要比个高下。
在推荐系统中,推荐是发散的、无意识的主动推荐,相比搜索而言,准确性不再是第一要务(想象下因为你点过一些手机给你出一整屏手机的感觉),多样性是一个必要的指标,这导致了推荐结果极其发散。用户对推荐结果多样性的诉求使得他不关注两个商品之间的比较,对于算法而言不再关注商品之间两两的比较,我只要每个都预测准了,反正最后也要打散的。而且多样性也导致了推荐场景没有像搜索一样适合做 Pairwise 的样本。
因为虽然用的都是学习排序算法,但是在不同的场景中,算法的选择和使用还是有区别的,要因地制宜!
这篇文章分享就到这里,如果你有不懂的可以在留言区留言,当然如果你觉得不错,可以分享给更多人!
扫一扫关注「搜索与推荐Wiki」!号主「专注于搜索和推荐系统,以系列分享为主,持续打造精品内容!」
LTR|怎么理解基于机器学习“四大支柱”划分的学习排序方法相关推荐
- 深入理解苹果系统(Unicode)字符串的排序方法
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由iminder发表于云+社区专栏 Unicode编码 我们知道计算机是不能直接处理文本的,而是和数字打交道.因此,为了表示文本,就建立 ...
- 机器阅读理解中文章和问题的深度学习表示方法
/*版权声明:可以任意转载,转载时请标明文章原始出处和作者信息.*/ author: 张俊林 注:本文是<深度学习解决机器阅读理解任务的研究进展>节选,该文将于近期在"深度学习大 ...
- [当人工智能遇上安全] 5.基于机器学习算法的主机恶意代码识别研究
您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...
- 基于机器学习和背景流量数据的加密恶意流量检测
文章目录 1 加密流量现状 1.1 加密流量检测的必要性 1.2 加密恶意流量的检测方法 2 加密流量特征分析 2.1 可观察的数据元统计特征 2.1.1 传统流数据 2.1.2 字节分布 2.1.3 ...
- 基于机器学习的恶意软件加密流量检测研究分享
1 概述 2 恶意软件加密流量介绍 3 加密HTTPS流量解析 4 特征工程 5 模型效果 6 具体实施 7 总结 1 概述 近年来随着HTTPS的全面普及,为了确保通信安全和隐私,越来越多的网络流量 ...
- AV1基于机器学习的变换块快速划分
AV1基于机器学习的变换块快速划分 在上一篇文章<AV1基于机器学习的快速变换模式选择>中讲解了AV1如何使用机器学习技术为每个变换块选择合适的变换模式,本节将讲解AV1如何利用机器学习技 ...
- 基于机器学习技术的用户行为分析:当前模型和应用研究综述(A survey for user behavior analysis based on machine learning technique)
A survey for user behavior analysis based on machine learning techniques: current models and applica ...
- [当人工智能遇上安全] 6.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例
您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...
- 机器学习--聚类分析(划分方法,层次方法、密度方法)
本节学习聚类分析,聚类属于无监督学习,其中聚类的方法有很多种常见的有K-means.层次聚类(Hierarchical clustering).谱聚类(Spectral Clustering)等,在这 ...
最新文章
- Java中几种常见的循环
- 什么是O/RMapping?为什么要用O/R Mapping?
- pythonpip安装与使用_Python pip 安装使用与问题
- dota2比分网_红黑电竞比分横空出世 LPL夏季赛火热进行
- linux之openssl简单介绍
- 不填写内容用哪个斜杠代替_python3用单反斜杠代替双反斜杠
- CSS浮动为什么不会遮盖同级元素
- mysql日期函数转换_Mysql日期函数大全 转
- C++中10的N次方如何表示
- 未来教育计算机二级学生文档,未来教育计算机二级MS-office题库(解题步骤)题库.docx...
- android 2k屏分辨率是多少,手机2k屏幕是什么意思 2k屏幕几大问题
- 我喜欢计算机作文300字,关于我喜欢作文300字
- 使用七牛云存储解决app部署问题,免申请https认证
- CentOS cowsay “会说话的小动物”
- docker创建CentOS云主机(docker实践)
- 传奇世界私服务器端制作,关于内网架设传奇世界私服问题的一些解答
- java与javax有什么区别?
- 【多项式最小二乘拟合实验】
- PHP 观察者模式 理解
- Linux中的timedatectl时间设置及ntp时间同步服务搭建
热门文章
- 美团外卖Flutter动态化实践
- 本地缓存、服务器缓存、分布式缓存介绍
- 博客系统(界面设计)
- 大学计算机基础模拟试题
- 赛门铁克Symantec通配型SSL证书(Symantec Secure Site Wildcard SSL Certificates)
- Opencv2.4学习::边缘检测(4)Roberts算子
- 100集华为HCIE安全培训视频教材整理 | Agile Controller终端安全管理特性(六)
- 计算机常用的函数类型,珍藏版:计算机二级考试MS office 常用函数
- m基于FPGA的通信数据帧加扰解扰verilog实现,包含testbench
- 在职场如何应对他人的关注