广告点击预测(CTR)

https://www.kaggle.com/c/criteo-display-ad-challenge

题目简介

广告展示是机器学习应用在互联网产业的核心。但是数据和方法通常都被各个公司所保密。在这个题目中CriteoLabs这个公司共享了一周的数据,方便我们开发预测广告点击率的模型,这道题的目标是解决:给定用户和其访问的网页,他点击一个广告的概率是多少。

image

这个题目的baseline最准确的ML算法的CTR估计。 所有获奖模式将根据开源许可证发布。 作为参与者,您将有机会访问Criteo的流量日志,其中包括各种未公开的功能以及点击标签。

文件内容

  • train.csv

    是Criteo这个公司7天的数据,字段的含义在下面介绍,T1-T13列正数为有点击,0或者负数表示没有点击。

  • test.csv

    测试集文件。

  • random_submission.csv

    一个提交的例子。

字段含义

详细的英文介绍在data/readme.txt中。

数据一共有1 + 13 + 26列

  • 第1列(Label) : 目标变量,点击记为1未点击记为0。
  • 第2-14列(I1-I13) : 整数特征,大部分是计数类型的特征。
  • 第15-30列(C1-C26) : 类别特征,均是32位的类别hash值。

评价标准

评价的标准使用的是log损失函数: image image

import scipy as sp
# act表示为真值0或者1,pred表示预测的概率值0 <= p <= 1
def logloss(act, pred):
    epsilon = 1e-15
    # 下面两行代码的含义为,
    # 如果概率大于1 - epsilon或者小于0 + epsilon
    # 就设置为这个1 - epsilon或小于0 + epsilon
    #保证log取值的有意义
    pred = sp.maximum(epsilon, pred)
    pred = sp.minimum(1-epsilon, pred)

    # 下面是实现log损失的公式
    ll = sum(act*sp.log(pred) + sp.subtract(1,act)*sp.log(sp.subtract(1,pred)))
    ll = ll * -1.0/len(act)
    return ll

R语言实现

MultiLogLoss <- function(act, pred){
  eps <- 1e-15
  pred <- pmin(pmax(pred, eps), 1 - eps)
  sum(act * log(pred) + (1 - act) * log(1 - pred)) * -1/NROW(act)
}

提交格式

第一列为用户Id,第二列为点击的概率 0 <= p <= 1

Id,Predicted
60000000,0.384
63895816,0.5919
759281658,0.1934
895936184,0.9572
...
powered by Gitbook该文件修订时间: 2016-12-26 09:09:40

results matching ""

    No results matching ""