ndcg

搜索排序算法

ⅰ亾dé卋堺 提交于 2019-12-28 03:47:57
排序模型LTR(L2R,learning to rank) Pointwise:对排序列表中的每一项,直接学习一个值,比如可以是预估点击率(Predict CTR,pCTR),然后按照预估值从大到小排序即可。常见模型有LR、FFM、GBDT、XGBoost。GBDT是LTR中应用较多的非线性模型。Additive Groves(简称AG)是在随机森林基础上构建的模型,加入Bagging算法,使得模型的泛化能力更强。AG由很多Grove 组合(bagging)而成,每一个Grove由多棵树组成,在训练时每棵树的拟合目标是真实值与其它树预测结果之和的残差。在训练的过程中达到了指定数目的树时,重新训练的树会替代掉以前的树。谷歌提出的FTRL方法能够在线对线性模型进行更新。 Pairwise:两两学习两个项的先后关系。常见模型有GBRank、RankNet、LambdaMart、RankSVM。LambdaMart是Lambda和MART(Multiple Additive Regression Tree,GBDT的别名)的结合,是GBDT的一种针对排序问题的改进。在计算梯度时LambdaMart重新计算了Lambda,重新赋予了排序梯度的物理意义,它利用sigmoid来计算各pair的排序概率,使用交叉熵作为损失函数来判断拟合程度,并将排序离线指标(如MAP、NDCG)考虑到梯度中去。

大众点评搜索基于知识图谱的深度学习排序实践

余生颓废 提交于 2019-12-07 17:52:22
1. 引言 挑战与思路 搜索是大众点评App上用户进行信息查找的最大入口,是连接用户和信息的重要纽带。而用户搜索的方式和场景非常多样,并且由于对接业务种类多,流量差异大,为大众点评搜索(下文简称点评搜索)带来了巨大的挑战,具体体现在如下几个方面: 意图多样 :用户查找的信息类型和方式多样。信息类型包括POI、榜单、UGC、攻略、达人等。以找店为例,查找方式包括按距离、按热度、按菜品和按地理位置等多种方式。例如用户按照品牌进行搜索时,大概率是需要寻找距离最近或者常去的某家分店;但用户搜索菜品时,会对菜品推荐人数更加敏感,而距离因素会弱化。 业务多样 :不同业务之间,用户的使用频率、选择难度以及业务诉求均不一样。例如家装场景用户使用频次很低,行为非常稀疏,距离因素弱,并且选择周期可能会很长;而美食多为即时消费场景,用户行为数据多,距离敏感。 用户类型多样 :不同的用户对价格、距离、口味以及偏好的类目之间差异很大;搜索需要能深度挖掘到用户的各种偏好,实现定制化的“千人千面”的搜索。 LBS的搜索 :相比电商和通用搜索,LBS的升维效应极大地增加了搜索场景的复杂性。例如对于旅游用户和常驻地用户来说,前者在搜索美食的时候可能会更加关心当地的知名特色商户,而对于距离相对不敏感。 上述的各项特性,叠加上时间、空间、场景等维度,使得点评搜索面临比通用搜索引擎更加独特的挑战。而解决这些挑战的方法

排序中AUC,MAP,NDCG,MRR 计算方式

匿名 (未验证) 提交于 2019-12-03 00:26:01
现在的排序评估指标主要包括MAP、NDCG和AUC三个指标。NDCG考虑多指标,MAP和AUC考虑单个指标。 1.AUC 例如在排在n=5的正样本,共有4个样本与其组合的值小于5。。。 2.MAP MAP(Mean Average Precision):单个主题的平均准确率是每篇相关文档检索出后的准确率的平均值。 主集合的平均准确率(MAP)是每个主题的平均准确率的平均值。 MAP 是反映系统在全部相关文档上性能的单值指标。 系统检索出来的相关文档越靠前(rank 越高),MAP就可能越高。如果系统没有返回相关文档,则准确率默认为0。 例如: 假设有两个主题,主题1有4个相关网页,主题2有5个相关网页。 某系统对于主题1检索出4个相关网页,其rank分别为1, 2, 4, 7; 对于主题2检索出3个相关网页,其rank分别为1,3,5。 对于主题1,平均准确率为(1/1+2/2+3/4+4/7)/4=0.83。对于主题2,平均准确率为(1/1+2/3+3/5+0+0)/5=0.45。 则MAP= (0.83+0.45)/2=0.64。 3.NDCG NDCG(Normalized Discounted Cumulative Gain):计算相对复杂。对于排在结位置n处的NDCG的计算公式如下图所示: 在MAP中,四个文档和query要么相关,要么不相关,也就是相关度非0即1

XGBoost参数设置中文版及PXGBoost的Python模块解释

匿名 (未验证) 提交于 2019-12-02 22:56:40
本文来源于XGBoost官方文档 , 原文链接 。 XGBoost参数官方文档: XGBoost Parameters (official guide) 。 XGBoost的Python模块介绍官方文档: Python Package Introduction 命令行参数取决于xgboost的CLI版本 XGBoost参数设置 General Parameters booster 决定使用哪个booster,可以是gbtree,gblinear或者dart。 gbtree和dart使用基于树的模型,而gblinear 使用线性函数. silent 设置为0打印运行信息;设置为1静默模式,不打印 nthread 下面的两个参数不需要设置,使用默认的就好了 num_pbuffer 预测结果缓存大小,通常设置为训练实例的个数。该缓存用于保存最后boosting操作的预测结果。 num_feature 在boosting中使用特征的维度,设置为特征的最大维度 Parameters for Tree Booster eta 范围: [0,1] gamma 在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。这个参数的值和损失函数息息相关,所以是需要调整的。 (设置此参数应该属于预剪枝操作

机器学习排序算法:RankNet to LambdaRank to LambdaMART

守給你的承諾、 提交于 2019-11-28 23:51:31
使用机器学习排序算法LambdaMART有一段时间了,但一直没有真正弄清楚算法中的所有细节。 学习过程中细读了两篇不错的博文,推荐给大家: 梯度提升树(GBDT)原理小结 徐博From RankNet to LambdaRank to LambdaMART: An Overview 但经过一番搜寻之后发现,目前网上并没有一篇透彻讲解该算法的文章,所以希望这篇文章能够达到此目的。 本文主要参考微软研究院2010年发表的文章 From RankNet to LambdaRank to LambdaMART: An Overview 1 1,并结合自己的理解,试图将RankNet、LambdaRank和LambdaMART这三种算法的所有算法细节讲解透彻。 1. 概述 RankNet、LambdaRank和LambdaMART是三个关系非常紧密的机器学习排序算法。简而言之,RankNet是最基础,基于神经网络的排序算法;而LambdaRank在RankNet的基础上修改了梯度的计算方式,也即加入了lambda梯度;LambdaMART结合了lambda梯度和MART(另称为GBDT,梯度提升树)。这三种算法在工业界中应用广泛,在BAT等国内大厂和微软谷歌等世界互联网巨头内部都有大量应用,还曾经赢得“Yahoo!Learning To Rank Challenge(Track 1)"的冠军