-
Notifications
You must be signed in to change notification settings - Fork 492
Criteo Dataset
潜心 edited this page Sep 1, 2020
·
1 revision
Criteo广告数据集是一个经典的用来预测广告点击率的数据集。2014年,由全球知名广告公司Criteo赞助举办Display Advertising Challenge比赛。但比赛过去太久,Kaggle已不提供数据集。现有三种方式获得数据集或其样本:
- Criteo_sample.txt:包含在DeepCTR中,用于测试模型是否正确,不过数据量太少;
- kaggle Criteo:训练集(10.38G)、测试集(1.35G);(实验大部分都是使用该数据集)
- 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数据集进行实验,主要处理如下:
- 读取数据,由于数据量过大,可以选择读入部分数据;
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)
- 数据存在缺失值,为简单起见,密集特征填充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)
- 密集型特征采取归一化处理,稀疏型特征采取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])
- 分割训练集测试集;
train, test = train_test_split(data_df, test_size=test_size)
具体见:utils.py