• 关于learntorank http://qiita.com/rockhopper/items/bb3d46f01df5f6499123


    一、数据转换

    如何对于训练数据做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

  • 相关阅读:
    CSS overflow 隐藏属性
    CSS visibility 隐藏属性
    多线程中的detach
    多线程中join的解释(转)
    lib 和 dll 的区别、生成以及使用详解:(包括变量,函数,类导出3种情形)(转)
    堆和栈的区别
    ZMQ相关
    不同类型的指针加减(就是向前或向后移动)[转]
    memset函数及其用法,C语言memset函数详解
    zmq中的router和dealer
  • 原文地址:https://www.cnblogs.com/amazement/p/5703160.html
Copyright © 2020-2023  润新知