learning2rank

  • pointwise: 一个文档一个point,计算得分。可以排序; 回归问题,分类问题都可。
  • pairwise: 任何两篇的排序;
  • listwise:所有文档的排序损失之和。

lightgbm

LightGBM is a gradient boosting framework that uses tree based learning algorithms.
https://lightgbm.readthedocs.io/en/latest/

基于lightgbm的learning2rank

语料

https://webscope.sandbox.yahoo.com/catalog.php?datatype=c

格式:

0 qid:1 10:0.89028 11:0.75088 12:0.01343 17:0.4484 18:0.90834 21:0.77818 27:0.71505 29:0.77307 30:0.75925 39:0.65244 43
:0.79394 44:0.88406 45:0.87946 66:0.63696 69:0.24961 70:0.41479 71:0.82664 74:0.78587 77:0.70475 83:0.55661 85:0.7212 8
6:0.93081 91:0.34635 98:0.70029 101:0.96287 108:0.19608 122:0.85512 123:0.18873 124:0.46599 127:0.43434 129:0.048097 13
3:0.44747 139:0.92407 145:0.46578 146:0.57682 147:0.63382 149:0.84404 154:0.73041 155:0.50316 159:0.30671 170:0.89536 1
72:0.66755 173:0.40438 174:0.78512 177:0.88064 178:0.54927 179:0.51912 187:0.2056 192:0.47747 195:0.59496 197:0.83402 2
04:0.80444 208:0.50368 212:0.81822 216:0.29351 222:0.48201 227:2.6864e-05 235:0.2163 239:0.88083 241:0.21466 242:0.3951
8 243:0.68992 245:0.76751 246:1.592e-05 247:0.76309 253:0.54512 265:0.70421 266:0.26977 271:0.34358 276:0.58251 281:0.9
1145 282:0.75332 287:1.592e-05 300:0.43013 302:0.66278 305:0.22842 320:0.48644 325:0.54927 326:0.81728 329:0.63642 332:
0.25652 339:0.86446 341:0.66553 344:0.067189 347:0.4434 348:0.40427 349:0.83413 350:0.69668 353:0.83216 356:0.26036 359
:0.19518 374:2.1889e-05 376:0.3086 377:3.2834e-05 382:0.58666 383:0.54927 384:0.22842 385:0.22501 387:0.54927 395:0.515
88 397:0.78664 399:0.2066 405:0.86375 417:0.90713 418:0.087714 426:0.021835 427:0.51798 431:0.88408 433:0.76635 436:0.8
0754 437:0.83927 438:0.82536 439:0.84688 441:0.81958 442:0.31634 445:0.45793 446:0.30368 450:0.35208 451:0.20139 454:0.
84541 465:0.609 468:3.6814e-05 473:0.92185 474:0.36567 476:0.43744 480:0.30985 481:0.7371 483:0.79078 486:0.59763 487:0
.92985 488:3.5819e-05 499:0.23455 504:0.62898 513:0.81697 514:0.42767 515:0.44476 518:0.74652 527:0.77818 533:0.27975 5
35:0.43961 538:0.74678 540:0.8611 541:0.46581 558:0.72917 570:0.91611 571:0.89485 574:0.6785 575:0.70414 578:0.26276 57
9:0.31934 585:0.74199 586:0.4434 595:0.228 596:0.47662 603:0.73649 606:0.61591 607:0.85539 610:0.85791 616:0.64438 627:
0.54927 636:1.6915e-05 637:0.38146 638:0.2845 640:0.68023 641:0.59993 642:0.35761 648:0.98273 654:0.89037 657:0.79396 6
58:0.9292 665:0.78185 669:0.074045 671:0.69325 674:0.61727 677:0.94189 690:0.21568 691:0.89071 692:0.77798 693:0.80534
694:0.76245 697:0.046567 699:0.51653

– 第一个是label; 0-4; 4代表最相关; 0代表不相关,其他程度按序相关。

– qid可以认为是querygroup的概念,针对哪个词。
– 后面是feature和weight。

关于特征:
特征主要可以分为以下几大类:

  • web graph:表征doc在整个web库中的情况,其实就是权威性。就是pagerank的那种得分。

  • document statistics :对于doc自身的各项指标的统计,如文本长度,是否含有图片等等。

  • document classifier:对doc的一个分类情况,如是否是spam,adult,语言的等等。

  • query:对于query自身的一些统计,如term个数,频次,点击率等等。

  • text match:是对doc-query一个匹配情况的一个表述,这是一个很大的topic,即为相关性方面的工作。

  • topic matching:从topic角度来表征query和doc的相似性。(可以认为这个也是属于text
    match的一个子topic)

  • click:包括first click,last click,clicktime等等(目前click在中高频query上的作用非常的强,因为这是用户的强反馈信号,同时若是假设用户自上而下顺序查看的话,还可以得知用户的跳过情况,以及停留时长。点击可以评估doc的感知相关性,而停留时长可以评估doc的真实相关性。)

  • time:对于时间感知敏感的query,time也是一个重要的特征。(如某地突发地震,此时应有相关资讯,并且排在较高的位置。)

  • bert相似度

  • 类别相似度


  • 注:对于多分类的feature但不具有可比性,应该将其拆分成为多个二分类特征。(因为多分类各个类别不具有可比性,但是为其多分类赋值的话,相当于强制给了一个彼此间可以比较的假设。)

code

def train_and_save_model(train_X, train_y, train_group,valid_X, valid_y, valid_group,save_model_path):""":param train_X: train feature:param train_y: train label:param train_group: train group:param valid_X: valid feature:param valid_y: valid label:param valid_group: valid group:param save_model_path: path to of the model to been saved:return: None测试集[500]    test's ndcg@1: 0.729212   test's ndcg@3: 0.733854   test's ndcg@10: 0.793273"""model = lgb.LGBMRanker(boosting_type='gbdt',num_leaves = 255,num_trees=500,learning_rate = 0.1,num_threads = 16,min_data_in_leaf = 0,min_sum_hessian_in_leaf = 100,#n_estimators=200,n_jobs=4,)model.fit(X=train_X,y=train_y,group=train_group,eval_set= [(test_X, test_y)],eval_names=['test'],eval_group=[test_group],eval_metric=['ndcg'],eval_at=[1, 3, 10],)
[500]    test's ndcg@1: 0.729212   test's ndcg@3: 0.733854   test's ndcg@10: 0.793273

分析总结

  1. learning2rank的本质是判定相关还是不相关
  2. 构建feature是核心
  3. lightgbm可以提供更好的回归和分类性能

lightgbm分类

如果lightgbm做分类,我们举个例子。
比如还有很多特征, 类别是0、1. 那么我们如何解决。

数据样例:

 0 0:2.0895979404449463 1:-0.20361362397670746 2:1.0640857219696045 3:1.5437382459640503 4:0.7074388861656189 5:0.6418917775154114 6:0.7367056608200073 7:-1.4585059881210327 8:0.0 9:0.6918397545814514 10:1.2094205617904663 11:-0.747006893157959 12:2.214872121810913 13:0.7270723581314087 14:0.6009370684623718 15:1.264147400856018 16:0.0 17:1.1381717920303345 18:-0.44435545802116394 19:-0.04632202535867691 20:3.101961374282837 21:0.8120074272155762 22:1.0134272575378418 23:0.998248279094696 24:1.54702627658844 25:0.938119649887085 26:1.0631071329116821 27:1.0378938913345337
1 0:0.4520324766635895 1:-2.0931129455566406 2:-0.6239078044891357 3:0.677103579044342 4:0.5539864301681519 5:1.7567516565322876 6:-1.1348289251327515 7:0.024553388357162476 8:0.0 9:2.023772954940796 10:-0.5409948229789734 11:-1.5193301439285278 12:2.214872121810913 13:0.8803898096084595 14:1.315482258796692 15:-1.5473566055297852 16:0.0 17:1.854032278060913 18:0.2194046527147293 19:0.9393047094345093 20:0.0 21:1.4134663343429565 22:1.1185426712036133 23:0.9920850992202759 24:1.1502020359039307 25:0.5419580936431885 26:1.0713579654693604 27:1.025450587272644

数据来自https://archive.ics.uci.edu/ml/datasets/HIGGS

import lightgbm as lgb#load svm data
train_data = lgb.Dataset('higgs.train')
test_data = lgb.Dataset('higgs.test')print(test_data.data)#param'''
'lambda_l1': 0.004107624022751344,'bagging_fraction': 0.7934712636944741,'feature_fraction': 0.686612409641711,
'''
param = {'num_leaves': 255, 'objective': 'binary',"metric":{'auc'},  #'binary_logloss','learning_rate': 0.1,'min_data_in_leaf':0}
num_round = 500 # trees#train
bst = lgb.train(param, train_data, num_round, valid_sets=[test_data])
bst.save_model('higgs.model')

运行结果如下:

...
[496]   valid_0's auc: 0.844026
[497]   valid_0's auc: 0.844027
[498]   valid_0's auc: 0.844028
[499]   valid_0's auc: 0.844024
[500]   valid_0's auc: 0.844025

引用

https://zhuanlan.zhihu.com/p/24532015
https://lightgbm.readthedocs.io/en/latest/
http://www.cda.cn/uploadfile/image/20151220/20151220115436_46293.pdf
https://yahoo-webscope-publications.s3.amazonaws.com/mohan11a.pdf
https://zhuanlan.zhihu.com/p/84206752
https://www.ccs.neu.edu/home/vip/teach/IRcourse/6_ML/other_notes/chapelle11a.pdf
https://github.com/guolinke/boosting_tree_benchmarks
https://lightgbm.readthedocs.io/en/latest/Experiments.html#data

搜索排名:基于lightgbm的learn2rank相关推荐

  1. 推荐搜索炼丹笔记:双塔模型在Airbnb搜索排名中的应用

    作者:一元,公众号:炼丹笔记 Improving Deep Learning For Airbnb Search(KDD20) 本文是一篇偏实践的文章,不讲太多虚的,什么有效什么无效,您请细品! 将深 ...

  2. 双塔模型在Airbnb搜索排名中的应用

    Improving Deep Learning For Airbnb Search(KDD20) 本文是一篇偏实践的文章,不讲太多虚的,什么有效什么无效,您请细品! 将深度学习应用于搜索排名是Airb ...

  3. 网页搜索怎么显示排名_深圳seo搜索排名优化效果怎么样

    效果怎么样l31b10seo搜索排名优化深圳,企业商家为了自己的网站有更好的排名,获得更好的流量,往往会采用SEO优化,那么SEO优化有哪些方法呢?或者是哪些方法更有效呢? 这是一个多媒体的时代,内容 ...

  4. 这是 Google 工程师 Amit Singhal 发表在 Google 官方博客的一篇文章,讲述了 Google 搜索排名背后的一些技术,涉及到 Google 对网页,对语义,对用户意图的理解。

    XEIM这是 Google 工程师 Amit Singhal 发表在 Google 官方博客的一篇文章,讲述了 Google 搜索排名背后的一些技术,涉及到 Google 对网页,对语义,对用户意图的 ...

  5. 苹果和谷歌应用商店的APP搜索排名算法

    谷歌和苹果应用商店各自都有几百万的APP!这么多的App让很多软件产品开发商"脑壳疼":自己的App进店后能有人找到吗?能有用户吗? 67%的人到应用商店后,都是自己搜索关键词找到 ...

  6. 白杨SEO:百度算法更新大全合集49条(截至2021年9月),做百度关键词搜索排名必看!

    百度重要算法更新大全[以下加粗重点看看] 要看图片公众号:白杨SEO优化教程上 1.李彦宏1997年就提交了一份名为"超链文件检索系统和方法"的专利申请.李彦宏提出了与传统信息检索 ...

  7. 机器学习算法(七): 基于LightGBM的分类预测(基于英雄联盟10分钟数据判断红蓝方胜负)

    机器学习算法(七)基于LightGBM的分类预测 1. 实验室介绍 1.1 LightGBM的介绍 LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个开源项目,由20 ...

  8. 机器学习应用篇(七)——基于LightGBM的分类预测

    机器学习应用篇(七)--基于LightGBM的分类预测 文章目录 机器学习应用篇(七)--基于LightGBM的分类预测 一.Introduction 1 LightGBM的优点 2 LightGBM ...

  9. 【数据分析与挖掘】基于LightGBM,XGBoost,逻辑回归的分类预测实战:英雄联盟数据(有数据集和代码)

    机器学习-LightGBM 一.LightGBM的介绍与应用 1.1 LightGBM的介绍 1.2 LightGBM的应用 二.数据集来源 三.基于英雄联盟数据集的LightGBM分类实战 Step ...

最新文章

  1. javascript进阶教程第一章案例实战
  2. 谷歌大脑发布神经网络的「核磁共振」,并公开相关代码
  3. 2018-08-12 长大
  4. 室外电磁赛道铺设补充说明
  5. (五)stm32工程代码HardFault异常查错调试方法
  6. pycharm 配置引用 docker 中的环境
  7. mysql忘记密麻麻_mysql忘记密码怎么办
  8. python type函数
  9. 大学c语言第三章作业,华中科技大学光电子学院C语言第三章
  10. Linux服务器的攻防技术
  11. android 7.0原生动态,Android7.0适配教程,心得
  12. 【工艺】 CNC(数控机床)加工工艺
  13. 霍乱时期的爱情——简写(下)
  14. 单精度浮点数和双精度浮点数有什么区别
  15. Linux下/etc/mdev.conf学习
  16. QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之02【EC20模组硬件供电和开关机复位操作】
  17. OpenVINO使用OpenCL内存执行,避免拷贝
  18. 如何基于Arduino开发板使用APDS9960 RGB和手势传感器
  19. \反斜杠“\”的几个用法!
  20. 构造方中的this关键字

热门文章

  1. 爬虫之js加密参数破解步骤分析-百度翻译移动版sign值的获取
  2. Adobe Flash Player 因过期而遭到阻止 更新插件 运行一次 解决方法
  3. PDF、图片格式转换
  4. Mac 中 vim 插件配置 —— 以YouCompleteMe 为例
  5. android 百度地图 marker设置忽明忽暗闪烁点
  6. UML——旅店入住管理系统(业务模型)
  7. 书论04 崔瑗《草书势》
  8. vue权限路由实现的方法示例总结
  9. vue.js部署_如何将安全Vue.js应用程序部署到AWS
  10. 内网或者没有公网IP,如何轻松通过公网访问?