Skip to content

Criteo Dataset

潜心 edited this page Sep 1, 2020 · 1 revision

Criteo Dataset

Criteo广告数据集是一个经典的用来预测广告点击率的数据集。2014年,由全球知名广告公司Criteo赞助举办Display Advertising Challenge比赛。但比赛过去太久,Kaggle已不提供数据集。现有三种方式获得数据集或其样本:

  1. Criteo_sample.txt:包含在DeepCTR中,用于测试模型是否正确,不过数据量太少;
  2. kaggle Criteo:训练集(10.38G)、测试集(1.35G);(实验大部分都是使用该数据集)
  3. Criteo 1TB:可以根据需要下载完整的日志数据集;

数据结构

数据集的特征如下所示:

  • Label:标签,表示目标广告点击(1)或未点击(0);
  • I1-I13:13个数值特征,也称为计数特征;
  • C1-C26:26个分类特征(稀疏特征),为了匿名化的目的,这些特性的值被散列到32位上;
 label   I1   I2    I3  ...       C23       C24       C25       C26
0      0  1.0    1   5.0  ...  3a171ecb  c5c50484  e8b83407  9727dd16
1      0  2.0    0  44.0  ...  3a171ecb  43f13e8b  e8b83407  731c3655
2      0  2.0    0   1.0  ...  3a171ecb  3b183c5c       NaN       NaN
3      0  NaN  893   NaN  ...  3a171ecb  9117a34a       NaN       NaN
4      0  3.0   -1   NaN  ...  32c7478e  b34f3128       NaN       NaN

数据预处理

大部分的模型基本都使用了Criteo数据集进行实验,主要处理如下:

  1. 读取数据,由于数据量过大,可以选择读入部分数据
        if read_part:
         data_df = pd.read_csv(file, sep='\t', iterator=True, header=None,
                           names=names)
         data_df = data_df.get_chunk(sample_num)
    
     else:
         data_df = pd.read_csv(file, sep='\t', header=None, names=names)
  2. 数据存在缺失值,为简单起见,密集特征填充0,稀疏特征填充1;
    sparse_features = ['C' + str(i) for i in range(1, 27)]
     dense_features = ['I' + str(i) for i in range(1, 14)]
    
     data_df[sparse_features] = data_df[sparse_features].fillna('-1')
     data_df[dense_features] = data_df[dense_features].fillna(0)
  3. 密集型特征采取归一化处理,稀疏型特征采取Label Encoder编码;
    for feat in sparse_features:
     le = LabelEncoder()
     data_df[feat] = le.fit_transform(data_df[feat])
    
    mms = MinMaxScaler(feature_range=(0, 1))
     data_df[dense_features] = mms.fit_transform(data_df[dense_features])
  4. 分割训练集测试集;
    train, test = train_test_split(data_df, test_size=test_size)

具体见:utils.py

Experimental dataset

Model

Clone this wiki locally