计算广告之CTR预估-DIN数据构造解析

数据来源:论文中用的是Amazon Product Data数据,包含两个文件:reviews_Electronics_5.json, meta_Electronics.json.

文件格式链接中有说明,其中reviews主要是用户买了相关商品产生的上下文信息,包括商品id, 时间,评论等。meta文件是关于商品本身的信息,包括商品id, 名称,类别,买了还买等信息。

1、亚马逊数据格式

图1
图2

亚马逊数据集包含产品评论和产品原始数据,用作基准数据集。 我们对名为Electronics的子集进行实验,其中包含192,403个用户,63,001个商品,801个类别和1,689,188个样本。 此数据集中的用户行为很丰富,每个用户和商品都有超过5条评论。 特征包括goods_id,cate_id,用户评论goods_id_list和cate_id_list。用户的所有行为都是(b1,b2,...,bk,... ,bn),任务是通过利用前k个评论商品来预测第(k + 1)个评论的商品。 训练数据集是用每个用户的k = 1,2,...,n-2生成的。 在测试集中,我们预测最后一个给出第一个n - 1评论商品。

## 2、代码解读

数据格式转换:

1_convert_pd.py文件的作用:json格式转化为pandas的dataframe格式,并保存为pickle二进制文件格式。解释一下为什么要保存pickle文件格式,因为pickle文件是二进制形式,读取速度快。

2_remap_id.py文件的作用:将asin,categories,reviewerID三个字段进行位置编码。位置编码主要通过build_map。

特别解读一下build_map函数的作用,就是将id排序,并转换成对应的位置索引,举个例子[d,a,c,b] → [4,1,3,2]。


meta_df格式

asin categories

d          dd

a          aa

c          cc

b          cc

####################

asin_map, asin_key = build_map(meta_df, 'asin')

cate_map, cate_key = build_map(meta_df, 'categories')

####################

meta_df格式

asin categories

4          3

1          1

3          2

2          2

####################

asin_map = [a, b, c, d]


meta_df = meta_df.sort_values('asin')

meta_df = meta_df.reset_index(drop=True) #meta_df的长度也是63001

cate_list = [meta_df['categories'][i] for i in range(len(asin_map))]

cate_list = np.array(cate_list, dtype=np.int32) #cate_list长度 63001,和item_count一样长

cate_list = [3, 1, 2, 2]

build_dataset.py生成训练集和测试集:

根据用户看过的产品数组生成训练集和测试集

图3

根据上述的一条记录可以生成2条正样本和2条负样本的训练集,1条测试集

图4

你可能感兴趣的:(计算广告之CTR预估-DIN数据构造解析)