• 关于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

  • 相关阅读:
    关于各种好玩的神奇函数
    模板——AC自动机
    模板——造数据
    VIM常用操作
    springboot注解
    面试题
    Linux常用命令
    Zookeeper
    对cpu与load的理解及线上问题处理思路
    top
  • 原文地址:https://www.cnblogs.com/amazement/p/5703160.html
Copyright © 2020-2023  润新知