一、数据转换

如何对于训练数据做pairwise的transform,比如你原始数据是要么点击要么不点击,如何对这些样本数据做pairwise的transform?

下面的方法主要是做组合的方法,就是针对指定group的所有样本作两两组合,然后作相减操作。

样本格式 <X,y>--其中X是多维度变量 就是不通特征值

先上代码

然后解释该代码:

》》第一个if主要是过滤: skip if same target or different group

#主要是点击不点击0和1:比较的时候肯定是针对同一个query(group),如果不在一个group那么不会比较的;而且如果同一个group,比较的肯定是点击的和不点击的,如果二者同是点击或者同是不点击那么没有必要比较的

》》第二个if主要是做类别均衡:因为比较的是同一个query的点击或者不点击,无外乎就是1和0。做相减就是1或者-1两种情况。但是因为点击的次数比较少,不点击次数较多,但是为了类别均衡,希望+1和-1能够个数相同,所以用了-1^^k做判断,如果不是期待的结果-1^^k,就要做逆操作,就是取-1.

》》然后还要注意一个变成技巧,因为这里最后去用作训练的结构是Xp,yp都是list,做append操作。用下标 -1表示list当前元素。k是用作计数;comb表示所有样本{<x,y>}的组合操作!

》》xp,yp--p表示pair的意思

》》range()返回一个list,做组合,2表示组合元祖长度。因为长度为2所有后边会有 tuple(i,j)

二、训练

训练就可以用 xgboost或者rf或者lr之类的处理了

参考文献

http://qiita.com/rockhopper/items/bb3d46f01df5f6499123

关于learntorank http://qiita.com/rockhopper/items/bb3d46f01df5f6499123的更多相关文章

  1. ios archives 出现的是other items而不是iOS Apps的解决方案

    ios archives 出现的是other items而不是iOS Apps的解决方案 项目打包时出现的是不是出现在iOS Apps栏目下面,而是Other Items而且右边对应的Upload t ...

  2. 国内外三个不同领域巨头分享的Redis实战经验及使用场景

    Redis不是比较成熟的memcache或者Mysql的替代品,是对于大型互联网类应用在架构上很好的补充.现在有越来越多的应用也在纷纷基于Redis做架构的改造.首先简单公布一下Redis平台实际情况 ...

  3. haproxy实现自定义错误页面的内容

    现在利用haproxy实现自定义的haproxy的错误页面 我们现在实现自定义错误页面有以下的方法: 一种是自定义错误页面 haproxy.conf defaults errorfile 404 /e ...

  4. 【PHP】月末・月初の出力方法

    文章出处 : Qiita - http://qiita.com/shoridevel/items/0a2f4a64e55d84919a1c 今月の月初 echo date("Y-m-01&q ...

  5. Eclipse DDT

    http://www.eclipse.org/downloads/ https://github.com/DDT-IDE/DDT/blob/latest/documentation/UserGuide ...

  6. SVN图形管理工具-Submint

    1.安装svn及相关依赖包 yum install subversion httpd mod_dav_svn apr-util-sqlite   2.下载submin wget https://sup ...

  7. CentOS 7 vs CentOS 6的不同

    (1)桌面系统 [CentOS6] GNOME 2.x [CentOS7] GNOME 3.x(GNOME Shell) (2)文件系统 [CentOS6] ext4 [CentOS7] xfs (3 ...

  8. 定制centos安装iso

    参考 https://gist.github.com/pauljeff/4b9ad551cb6c35870d7c https://www.redhat.com/archives/kickstart-l ...

  9. iOS 8下使用xib/storybord AutoLayout导致的分割线问题

    /*** iOS8 分割线问题 在xib/storyboard下面解决方案 http://qiita.com/yimajo/items/10f16629200f1beb7852 http://www. ...

随机推荐

  1. JSP页面JSTL提供的函数标签EL表达式操作字符串的方法

    首先在jsp页面导入标签<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions&quo ...

  2. 在WebPart中获取Office 365中的未读邮件数

    // Create the web request HttpWebRequest request = WebRequest.Create("https://outlook.office365 ...

  3. git tag使用标记

    git跟其它版本控制系统一样,可以打标签(tag), 作用是标记一个点为一个版本号,如0.1.3, v0.1.7, ver_0.1.3.在程序开发到一个阶段后,我们需要打个标签,发布一个版本,标记的作 ...

  4. Ruby混合类型

    当一个类拥有可以从多个父类继承的特点,类应该显示多重继承. Ruby没有直接支持多继承,但Ruby模块有另一个精彩使用.他们几乎消除多重继承的需要,提供了一个工厂,称为混入. 混合类型给一个精彩的控制 ...

  5. ofbiz定时任务配置

    1.一个service的java类 2.在framework/service/servicedef/service.xml中配置上一步的service服务. <service name=&quo ...

  6. curl的用法以及个人理解(php)

    php curl的个人理解 1.首先curl的官方解释为:curl是利用URL语法在命令行方式下工作的开源文件传输工具.{它只是一种传输工具!} 2.curl就是抓取网页的升级版本,支持POST.GE ...

  7. android:configChanges="keyboard|keyboardHidden|orientation|screenSize"

    <activity android:name="xxxActivity" android:configChanges="keyboard|keyboardHidde ...

  8. resin实现热部署配置

    修改resin.xml文件 <host id="test.com" root-directory="."> <host-alias>te ...

  9. Stack Overflow: The Architecture - 2016 Edition(Translation)

    原文: https://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/ 作者:Nick Cra ...

  10. 增删改查--windows下mysql客户端--表的使用

    >>>>>>>>>>>>>>>>>>>> selet 5种子句之where常用运 ...