淘宝展示广告点击率分析

1 篇文章 2 订阅
订阅专栏

一、 项目背景

大数据时代的背景下,广告投放成为了互联网各个行业中运营推广的主流。对于电商行业来说,广告投放的效果,取决于广告投放后为平台带来了多少转化。要有转化,首先就要有流量(点击),因此,如何对广告进行精准投放,提高广告的点击率,进而实现精准营销就显得尤为重要。
下面我们以阿里巴巴提供的淘宝展示广告点击率数据集为例进行分析。

二、数据来源

https://tianchi.aliyun.com/dataset/dataDetail?dataId=56.
Ali_Display_Ad_Click是阿里巴巴提供的一个淘宝展示广告点击率数据集。

三、数据简介

1.原始样本骨架raw_sample:
从淘宝网站中随机抽样了114万用户8天内的广告展示/点击日志(2600万条记录),构成原始的样本骨架。
字段说明如下:

字段说明
user_id脱敏过的用户ID
adgroup_id脱敏过的广告单元ID
time_stamp时间戳
pid资源位
noclk为1代表没有点击;为0代表点击
clk为0代表没有点击;为1代表点击

由于数据量较大,本文中只截取其中前200W条数据进行分析。
2.用户基本信息表user_profile:
本数据集涵盖了raw_sample中全部用户的基本信息。字段说明如下:

字段说明
user_id脱敏过的用户ID
cms_segid微群ID
cms_group_idcms_group_id
final_gender_code性别 1:男,2:女
age_level年龄层次
pvalue_level消费档次,1:低档,2:中档,3:高档
shopping_level购物深度,1:浅度,2:中度,3:深度
occupation是否大学生 ,1:是,0:否
new_user_class_level城市层级

3.广告基本信息表ad_feature:
本数据集涵盖了raw_sample中全部广告的基本信息。字段说明如下:

字段说明
adgroup_id脱敏过的广告ID
cate_id脱敏过的商品类目ID
campaign_id脱敏过的广告计划ID
customer_id脱敏过的广告主ID
brand脱敏过的品牌ID
price宝贝的价格

其中一个广告ID对应一个商品(宝贝),一个宝贝属于一个类目,一个宝贝属于一个品牌。

四、数据预处理

4.1 数据导入

1. 导入类库

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
sns.set_style('darkgrid')         # 设置网格类型,默认

# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False

2. 导入数据集

# 用户基本信息表
user_data = pd.read_csv('D:/淘宝展示广告点击率预估数据集/user_profile.csv')  # 读取数据
print(user_data.shape)         # (1061768, 9):说明该表中一共有1061768行、9列
user_data.head()  # 输出数据前5行

# 广告基本信息表
ads = pd.read_csv('D:/淘宝展示广告点击率预估数据集/ad_feature.csv')
print(ads.shape)       # (846811, 6):说明该表中一共有846811行、6列
ads.head()

# 从原始样本骨架数据raw_sample中选取200W数据作为样本数据
raw_sample = pd.read_csv('D:/淘宝展示广告点击率预估数据集/raw_sample.csv',nrows=2000000)
# 将截取的前200W行数写入sample_data.csv文件中
raw_sample.to_csv('D:/淘宝展示广告点击率预估数据集/sample_data.csv',index=False,sep=',')
dataset = pd.read_csv('D:/淘宝展示广告点击率预估数据集/sample_data.csv')  # 读取数据
print(dataset.shape)  # (2000000, 6):说明该表中一共有2000000行、6列
dataset.head()

从上到下依次为用户基本信息表user_data、广告基本信息表ads、样本数据表dataset,如下图所示:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

4.2 缺失值处理

1. 缺失值检测

# 获取用户基本信息表user_data每列的缺失值占比
user_data_null = user_data.isnull().sum()/len(user_data)*100
user_data_null = user_data_null.drop(user_data_null[user_data_null==0].index).sort_values(ascending=False)     # 将缺失值占比从高到低排序
missing_data = pd.DataFrame({'Missing Ratio(%)':user_data_null})
print(f'user_data含有缺失值的属性个数:{len(user_data_null)}')
print(missing_data)
print('-' * 60)

# 获取广告基本信息表ads每列的缺失值占比
ads_null = ads.isnull().sum()/len(ads)*100
ads_null = ads_null.drop(ads_null[ads_null==0].index).sort_values(ascending=False)     # 将缺失值占比从高到低排序
missing_data = pd.DataFrame({'Missing Ratio(%)':ads_null})
print(f'ads含有缺失值的属性个数:{len(ads_null)}')
print(missing_data)
print('-' * 60)

# 获取样本数据表dataset每列的缺失值占比
dataset_null = dataset.isnull().sum()/len(dataset)*100
dataset_null = dataset_null.drop(dataset_null[dataset_null==0].index).sort_values(ascending=False)     # 将缺失值占比从高到低排序
missing_data = pd.DataFrame({'Missing Ratio(%)':dataset_null})
print(f'dataset含有缺失值的属性个数:{len(dataset_null)}')
print(missing_data)

分析获取三个表中每个表中有缺失值的属性个数以及该属性中的缺失值占比,输出结果如下图所示:
在这里插入图片描述
由结果明显可知:
用户基本信息表user_data有2个属性含缺失值:pvalue_level(缺失54.24%)、new_user_class_level(缺失32.49%);
广告基本信息表ads有1个属性含缺失值:brand(缺失29.09%);
样本数据表dataset不含缺失值。
所以只需对 user_data、ads 两个表进行缺失值填充。

2. 缺失值填充

缺失值填充说明:
1.user_data表
‘pvalue_level’(消费档次:1低2中3高):通过KNN算法(基于K个最近邻的填充算法)进行预测填充;
'new_user_class_level '(城市层次):该属性值为分类属性,对其进行众数填充。
2.ads表
‘brand’(品牌ID):由于该数据为id类数据,填充其上下条数据的值,在本文中使用的是填充上一条数据的值。

# 对 'new_user_class_level '进行众数填充
from sklearn.impute import SimpleImputer   # 导入缺失值处理所需的库impute.SimpleImputer
# 使用reshape(-1,1)对数据升维,原本是一维,但在sklearn当中的特征矩阵必须是二维的
city_level = user_data.loc[:,'new_user_class_level '].values.reshape(-1,1)  # loc:对索引名进行切片   
si = SimpleImputer(strategy = 'most_frequent')  # 实例化,使用众数填补
user_data.loc[:,'new_user_class_level '] = si.fit_transform(city_level) # fit_transform一步训练导出结果
user_data.info()

输入结果如下图,可观察到 'new_user_class_level ’ 列中已经不含缺失值:
在这里插入图片描述

# 调整数据集user_data的列顺序:将'pvalue_level'列调至最后一列
columns = ['userid', 'cms_segid', 'cms_group_id', 'final_gender_code', 'age_level',
       'shopping_level', 'occupation', 'new_user_class_level ','pvalue_level']
user_data = user_data[columns]
"""
按'pvalue_level'列值是否为空对数据集user_data进行分离
"""
# 'pvalue_level'列值为空
pvalue_null = user_data.loc[user_data['pvalue_level'].isnull().values == True]
# 'pvalue_level'列值为空
pvalue_nonull = user_data.loc[user_data['pvalue_level'].isnull().values == False]
"""
对数据集pvalue_null和pvalue_nonull
分离训练集和测试集
X_train_user:'pvalue_level'列以外的,且'pvalue_level'列值不为0的部分
y_train_user:'pvalue_level'列中的,且值不为0
X_test_user:'pvalue_level'列以外的,且值为0
y_test_user:'pvalue_level'列中的,且值为0
"""
X_train_user,y_train_user = pvalue_nonull.iloc[:,:-1],pvalue_nonull.iloc[:,-1]
X_test_user,y_test_user = pvalue_null.iloc[:,:-1],pvalue_null.iloc[:,-1]
# 运用K最近邻(k-Nearest Neighbor,KNN)分类算法对'pvalue_level'列预测
from sklearn.neighbors import KNeighborsClassifier    
knn = KNeighborsClassifier(n_neighbors=3,weights='distance')  # 根据消费档次1浅2中3深分为3类,weights='distance'表示用欧氏距离进行相似度衡量
knn.fit(X_train_user,y_train_user)   # 训练数据集
y_test_user = knn.predict(X_test_user)   # 导出结果
y_test_user   # 输出结果为:array([2., 2., 2., ..., 1., 2., 2.])
"""
对KNN算法预测的数据进行整理合并填充,将整理后的数据写入新表user
"""
y_test_user = pd.DataFrame(y_test_user)   # 将y_test_user由array转换成DataFrame结构
y_test_user.columns = ['pvalue_level']  # 修改y_test_user的列名为'pvalue_level'
X_test_user.reset_index(drop=True,inplace=True)  # 重置X_test_user索引
# X_test_user.drop('index',axis=1,inplace=True) # 删除上述操作生成的原index索引列
pvalue_null = pd.concat([X_test_user,y_test_user],axis=1)  # 横向合并X_test_user,y_test_user两个表
user = pd.concat([pvalue_nonull,pvalue_null],ignore_index=False)   # 纵向合并pvalue_nonull,pvalue_null表为一个user新表,并重置索引值
user.to_csv('D:/淘宝展示广告点击率预估数据集/user.csv',index=False,sep=',')  # 将user表数据写入user.csv文件中
user = pd.read_csv('D:/淘宝展示广告点击率预估数据集/user.csv')  # 读取user数据
user.info()

输出结果如下,可以观察到user数据集已经不含缺失值:
在这里插入图片描述

# 用前一个数据对'brand'缺失的数据进行填充
ads.fillna(method='pad',inplace=True)
ads.info()

在这里插入图片描述

4.3 数据合并

将dataset、user、ads三个表以表dataset为骨架,分别基于主键userid、adgroup_id进行合并封装,合并为新表data,以便同时构建用户特征广告特征来预测分析用户对广告点击概率。

"""
合并表user、ads、dataset为ads_user_dataset
将合并后的数据写入data.csv中并读取
"""
print(f'dataset表的维度:{dataset.shape}')
print(f'user表的维度:{user.shape}')
print(f'ads表的维度:{ads.shape}')

# 修改表dataset中列名user为userid,以便后面基于主键连接
dataset.rename(columns={'user':'userid'},inplace=True)
dataset.head()

# 将数据集dataset与用户基本信息表user合并,基于主键userid,how='right'表示以右边表为基准连接
user_dataset = pd.merge(user,dataset,on='userid',how='right')
print(f'user_dataset表的维度:{user_dataset.shape}')

# 将数据集与广告基本信息表ads合并,基于主键adgroup_id,how='right'表示以右边表为基准连接
ads_user_dataset = pd.merge(ads,user_dataset,on='adgroup_id',how='right')
print(f'ads_user_dataset表的维度:{ads_user_dataset.shape}')

ads_user_dataset.to_csv('D:/淘宝展示广告点击率预估数据集/data.csv',index=False,sep=',')
data = pd.read_csv('D:/淘宝展示广告点击率预估数据集/data.csv')

合并后各表的数据维度如下图所示:
在这里插入图片描述
将用户特征数据user、广告特征数据ads以及样本数据dataset进行合并后,再对合并后的数据集data进行缺失值分析,代码如下:

# 获取data每列的缺失值占比
data_null = data.isnull().sum()/len(dataset)*100
data_null = data_null.drop(data_null[data_null==0].index).sort_values(ascending=False)     # 将缺失值占比从高到低排序
missing_data = pd.DataFrame({'Missing Ratio(%)':data_null})
print(f'dataset含有缺失值的属性个数:{len(data_null)}')
print(missing_data)

在这里插入图片描述
根据输出结果可知:data中共含有8个属性的缺失值,且这8个含缺失值的属性全都为用户特征数据集user中的属性,同时这8个属性的缺失值占比均为5.81%。据此我们可以推断出应该是在样本数据data存在,但在用户特征表user中不存在这些缺失值的userid。
因此这些含有缺失值的数据对我们的分析没有太大意义,且缺失占比较小,直接将含有缺失值的行删除即可。
代码如下:

# 删除data中含有缺失值的行,直接在原数据上操作
data.dropna(axis=0, how='any',inplace=True)  

再次输入上面获取data每列的缺失值占比的代码块,查看缺失值的处理情况,结果如下图:
在这里插入图片描述
输入data.shape查看删除缺失值后data的数据维度,得到结果:(1883809, 19)

4.4 时间戳数据处理

原数据提供的是时间戳形式,我们需要将其转换为日期和时间形式以便分析,从转换后的数据中分别提取日期、时间、小时组成三个新的特征列。

# 将数据中的时间戳形式转换为日期和时间形式
import datetime
import time
data['time_stamp']=pd.to_datetime(data['time_stamp'],unit='s')
data['time_stamp']
# 从转换后的数据中分别提取:日期、时间、小时,组成新的列
data['date'] = data['time_stamp'].dt.date
data['time'] = data['time_stamp'].dt.time
data['hour'] = data['time_stamp'].dt.hour
# 调整数据集data的列顺序:将'data'、'time'、'hour'这三列数据调至'time_stamp'列后
columns = ['adgroup_id', 'cate_id', 'campaign_id', 'customer', 'brand', 'price',
       'userid', 'cms_segid', 'cms_group_id', 'final_gender_code', 'age_level',
       'shopping_level', 'occupation', 'new_user_class_level ', 'pvalue_level',
       'time_stamp', 'date', 'time', 'hour', 'pid', 'nonclk', 'clk']
data = data[columns]

在这里插入图片描述

4.5 删除不需要的列
# 删除列'time_stamp'、'time'以及'nonclk'
data = data.drop(['time_stamp','time','nonclk'],axis=1)

五、分析目标

提高广告的点击率以实现精准营销
在这里插入图片描述

六、分析过程

本文中画图主要基于Pyecharts库实现
由于以下分析画图代码过长,将其放置在文末

6.1 分析广告点击率的整体现状
1. 分析整体广告点击占比

根据数据显示,广告的整体点击量仅占展示量的4.94%,即广告的点击率为4.94%,可见很多广告在展示过程中并没有吸引到用户或者说没有投放到有需要的用户群体。
在这里插入图片描述

2. 分析几天中广告点击的变化情况

根据数据显示,几天中广告的整体点击率水平在5%左右浮动,没有太大的波动。2017-05-05这一天广告的展示量与点击量很低,猜测有可能是因为数据采样不均匀导致,后续会重新进行验证分析。
在这里插入图片描述

6.2 分析用户的产品偏好

分析筛选受用户欢迎的广告商品
我们根据【广告被点击次数】进行分层,进而对现有的广告进行价值分析:
<10:测试广告是否有价值以及商品对用户是否有吸引力阶段;
10-20:进一步确认商品对用户有一定的吸引力,之前的点击并非偶然情况;
20-50:确定商品确实对用户有一定的吸引力,进一步加大广告投放力度,测试广告是否能否为商品带来转化;
50-100:投放的广告能为商品的转化带来一定的效果;
>=100:投放的广告能为商品的转化带来一定不错的效果。

在这里插入图片描述在这里插入图片描述

结论:①随着广告点击次数的上升,广告的点击率也在逐步上升,即广告价值与广告点击率呈正比关系。
②低价值广告的占比达到整体广告的98.34%之多,而高价值广告仅占整体广告的0.08%,这说明在测试广告价值阶段广告费用被高度浪费。

我们现阶段要分析筛选出【广告点击次数>=100】,加大力度进行投放,同时进一步对其主要的受众群体进行分析,定位其投放的用户方向,实现用更少的广告费用获取更大的商品转化。

6.3 分析一天24小时中用户的活跃时间

在这里插入图片描述
结论:
① 凌晨0点-7点、正午12点-14点这两个时间段是广告投放点击的高峰,傍晚16点-20点这个时间段是广告投放点击的低峰;
② 凌晨0点-7点这段时间是连续的高点击率时间,可以在这个时间段加大广告的投放力度;
③ 正午12点-14点这个时间段正好是人们的午饭午休时间,所以刷手机点击广告的概率也会增高;
④ 其中17点、19点这两个时间点的广告点击率相对较高,这个时间点正好是下班高峰期,人们在下班路上正好刷手机点击广告,建议在18点-19点这个时间段可以适当的加大广告投放力度;
⑤ 晚上20:00-0:00期间虽然广告展示量逐渐增加,但是广告的点击率却没有随之增加,反而降低了,猜测是用户如果没有必须且明确购买的需求,大部分用户在这段时间可能更倾向于陪伴家人、煲剧、看电影等休闲节目。

6.4 分析广告在不同资源位上的点击情况

在这里插入图片描述
结论:
广告在资源位430548_1007上展示量较多,但是相对而言,资源位430539_1007上的广告点击率相对更高,建议可以加大在资源位430539_1007上的广告投放力度。

6.5 分析广告的受众群体特征
1. 分析整体的广告受众群体特征

在这里插入图片描述
在这里插入图片描述

① 广告展示的用户约60%主要集中在微群0,且点击率达到5%;其他有些微群id虽然点击率也很高,但是数据量较小,不足以充分说明;
② 用户的男女比例约为1:2,且女性用户的点击率达到5.03%,男性用户的点击率只有4.81%,猜想是女性用户的购物欲会更强一些,建议可以加大对女性用户的广告投放;
③ 用户中非大学生用户占绝对主体,且点击率相对大学生用户更高,这符合非大学生用户具有更为独立的经济能力猜想;
④ 年龄层级为3、4、5的占比相对较高,点击率分别为:4.85%、4.91%、5.15%,其他层级的点击率虽然高,但是数据量少,不足以说明;
⑤ 微群群体3、4、5这三个群体中用户占比较高,且点击率分别高达:4.98%、4.97%、5.28%,建议可以加大对微群群体3、4、5的用户投放力度;
⑥ 购物程度为深度的用户占主体,但点击率仅占4.88%,建议对这一部分用户投放其更为感兴趣的广告;
⑦ 消费档次为低、中两档的用户占主体,尤其中档用户居多,且低、中档的用户点击率分别为:4.99%、4.95%,而高档用户点击率仅占4.65%,建议可以加大在消费档次为中档用户中的投放力度;
⑧ 城市层次为2的用户占主体,且相对其他城市层次的用户点击率最高,为4.99%,建议可以着重投放城市层次2的用户。

下面用雷达图展示整体主要的受众群体特征:
在这里插入图片描述

2. 根据不同广告商品分析获取不同的受众群体特征

由于广告商品数目过多,就不一一进行分析,我们从查看点击量前10的广告,如下图所示:
在这里插入图片描述
我们选取其中广告点击量第一的广告,即:adgroup_id为118317进行主要受众特征分析。
下图是adgroup_id为118317的点击用户特征分布饼图:
在这里插入图片描述

结论:
adgroup_id为118317的主要受众特征为:

特征名特征群体
微群0
cms_group8>9>7
性别
是否大学生
年龄层次2>3>1
购物程度深度
消费档次中档>低档
城市层次2

因此,在投放广告118317时建议侧重对具有上述受众特征的用户进行投放。

6.6 基于物品的协同过滤推荐
1. 获取【投放效果不错的广告商品】中相似度高的广告商品
adgroup_id与118317的相似度
80520.054313
792350.054313
422560.054313
298050.054313
2805840.054313
1697910.054313
1700500.054313
2035760.054313
191870.054313
2395660.038405
2. 根据广告商品的相似度和已知的用户历史行为给用户生成推荐列表

我们从点击广告118317的用户中筛选满足上述受众特征的用户,筛选出来的userid有:

1007255, 359747, 387456, 888900, 267564, 1059836, 922603, 538653

我们分别向这些用户生成推荐列表,则:

387456的推荐列表1007255, 359747, 888900, 267564, 1059836, 922603, 538653 的推荐列表
$1600电脑

结论:建议向点击过广告118317的用户群体也尝试投放以下几个广告:150272、205887、42256 、203576、79235。

七、分析结论

1、 广告整体的点击率约4.94%,主要是由于低价值广告较多,影响了整体的广告点击率,建议可以从受用户欢迎的商品类目、商品品牌以及广告主、广告计划中筛选要投放的广告商品;
2 、时间维度:
① 凌晨0点-7点是连续的用户点击的活跃时间,建议加大的这个时间段广告投放力度;
② 傍晚17点-19点之间正好是下班高峰期,猜想人们在回家途中刷手机看广告点击的可能性会加大,建议可以稍微增加这个时间段的广告投放力度;
3、资源位430539_1007上的点击率为5.01%,较
430548_1007资源位的点击率高,建议尝试在资源位430539_1007上进行投放;
4、广告整体的受众群体是:
微群0、cms_group为3、女性、非大学生、年龄层次为3/4、购物为深度、消费档次中低档为主、城市层次为2
如果投放时暂时没有受众群体方向,可以先以这个受众方向为主进行投放
5、我们以点击量最高的广告id为118317进行分析:
①主要受众群体为:
男性、非大学生、年龄层次2、购物为深度、消费中档、城市层级2、微群0、cms_group为8。
②推荐相似广告id为:
150272、205887、42256 、203576、79235。

八、代码部分

8.1 整体广告点击占比饼图
# 生成点击数据列表
counts = data.clk.value_counts()
ratio = data.clk.value_counts()/len(data)*100
data_clk = pd.DataFrame({'Count':counts, 'Ratio(%)':ratio})

# 绘制饼图对广告整体点击情况进行可视化
from pyecharts import options as opts
from pyecharts.charts import Pie

b=data['clk']
b=b.value_counts()
b=dict(b)
b['无点击人数']=b.pop(0)
b['点击人数']=b.pop(1)

name=pd.DataFrame(b.keys())
value=pd.DataFrame(b.values())
name=name[0].tolist()
value=value[0].tolist()
words=list(zip(list(name),list(value)))

h=list(zip( list(b.keys()),list(b.values())))
pie = Pie(init_opts=opts.InitOpts(width="500px", height="320px"))
pie.add("",words)
pie.set_global_opts(title_opts=opts.TitleOpts(title="广告整体点击情况",pos_left="40%"),
                    legend_opts=opts.LegendOpts(pos_top="20%", pos_left="80%"))
pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}({d}%)"))
pie.render_notebook()

在这里插入图片描述

8.2 几天中广告点击的变化情况(柱形-折线图)
data_date = data.groupby('date')['clk'].agg({
    '展示量':'count',
    '点击量':sum,
    '点击率':np.mean
})

# 建立《2017/05/05至2017/05/13的广告点击情况》的柱形-折线图
from pyecharts import options as opts
from pyecharts.charts import Bar, Line
from pyecharts.faker import Faker

name = data_date.index.tolist()
v1 = data_date.展示量.tolist()
v2 = data_date.点击量.tolist()
v3 = ((data_date.点击率.values)*100).tolist()
v3 = [round(i,2) for i in v3]

bar = (
    Bar(init_opts=opts.InitOpts(width="680px", height="420px"))
    .add_xaxis(name)
    .add_yaxis("展示量", v1)
    .add_yaxis("点击量", v2)
    .extend_axis(
        yaxis=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} %"), interval=1)
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="2017/05/05至2017/05/13的广告点击情况",pos_left="18%"),
        yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} "), max_=350000),
        legend_opts=opts.LegendOpts(pos_top="10%", pos_right="10%")
    )
    
)

line = Line().add_xaxis(name).add_yaxis("点击率", v3, yaxis_index=1)
bar.overlap(line)
bar.render_notebook()

在这里插入图片描述

8.3 各点击区间的广告点击情况(堆积柱形-折线图、饼图)
data_adgroup = data.groupby('adgroup_id')['clk'].agg({
    '展示量':'count',
    '点击量':sum,
    '点击率':np.mean
})
data_adgroup['点击量区间'] = data_adgroup.点击量.values   # 添加新列用来分区间
data_adgroup.sort_values(by='点击量',ascending=False)

# 对所有广告点击量进行分段
bins = [0,10,20,50,100,100000]
labels = ['<10','10-20','20-50','50-100','>=100']
data_adgroup['点击量区间'] = pd.cut(data_adgroup.点击量区间,bins=bins,labels=labels,right=False)
data_adgroup.sort_values(by='点击量',ascending=False)

data_adgroup_clk= data_adgroup.groupby('点击量区间').agg({
    '点击量':['count',sum],
    '展示量':sum
})
data_adgroup_clk.columns = ['广告量','点击量','展示量']
data_adgroup_clk['点击率'] = data_adgroup_clk.点击量.values/data_adgroup_clk.展示量.values*100
data_adgroup_clk

在这里插入图片描述

"""
利用堆积柱形图-折线图可视化分析各点击数区间的广告点击率情况
"""
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Scatter
from pyecharts.faker import Faker

name = data_adgroup_clk.index.tolist()

v0 = data_adgroup_clk.展示量.tolist()
v1 = (data_adgroup_clk.展示量-data_adgroup_clk.点击量).tolist()
v2 = data_adgroup_clk.点击量.tolist()
v3 = data_adgroup_clk.点击率.tolist()
v3 = [round(i,2) for i in v3]
v4 = data_adgroup_clk.广告量.tolist()
b = dict(zip(name,v4))
words=list(zip(name,v4))
    
bar = (
    Bar(init_opts=opts.InitOpts(width="640px", height="460px"))
    .add_xaxis(name)
    
    .add_yaxis("无点击量", v1, stack="stack1", category_gap="60%")
    .add_yaxis("点击量", v2, stack="stack1", category_gap="60%")

    .extend_axis(
        yaxis=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} %"), interval=1)
    )
    .set_series_opts(label_opts=opts.LabelOpts(position="right"))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="各点击数区间的广告点击率情况", pos_left="30%"),
        yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value}"), max_=2500000),
        legend_opts=opts.LegendOpts(pos_top="6%", pos_left="50%")
        
    )
)
line = Line().add_xaxis(name).add_yaxis("点击率", v3, yaxis_index=1)
bar.overlap(line)
bar.render_notebook()

在这里插入图片描述

"""
利用玫瑰图描绘点击用户所在的城市层次分布
"""
from pyecharts import options as opts
from pyecharts.charts import Pie
pie = (
    Pie(init_opts=opts.InitOpts(width="666px", height="365px"))
    .add("", words, center=["48%", "62%"],radius=["40%", "75%"], rosetype="radius")
    .set_global_opts(title_opts=opts.TitleOpts(title="各点击数区间的广告在整体广告中的占比分布",pos_right="22%"),
                    legend_opts=opts.LegendOpts(pos_top="6%", pos_right="16%"))
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}({d}%)"))   
)
pie.render_notebook()

在这里插入图片描述

8.4 一天24小时中用户的活跃时间(堆积柱形-折线图)
data_hour = data.groupby('hour')['clk'].agg({
    '展示量':'count',
    '点击量':sum,
    '点击率':np.mean
})
data_hour

"""
利用堆积柱形图-折线图可视化分析一天(24小时)中用户的点击情况
"""
from pyecharts import options as opts
from pyecharts.charts import Bar, Line

name = data_hour.index.tolist()

v0 = data_hour.展示量.tolist()
v1 = (data_hour.展示量-data_hour.点击量).tolist()
v2 = data_hour.点击量.tolist()
v3 = data_hour.点击率.tolist()
v3 = ((data_hour.点击率.values)*100).tolist()
v3 = [round(i,2) for i in v3]
b = dict(zip(name,v2))
words=list(zip(name,v2))

    
bar = (
    Bar(init_opts=opts.InitOpts(width="1020px", height="480px"))
    .add_xaxis(name)
    .add_yaxis("无点击量", v1, stack="stack1", category_gap="80%")
    .add_yaxis("点击量", v2, stack="stack1", category_gap="80%")
    .extend_axis(
        yaxis=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} %"), interval=1, min_ = 4.5, max_ = 5.2)
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False, position="right"))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="一天(24小时)中用户的点击情况", pos_left="35%"),
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} "), max_ = 180000),
        legend_opts=opts.LegendOpts(pos_top="6%", pos_left="55%")
    )
)
line = Line().add_xaxis(name).add_yaxis("点击率", v3, yaxis_index=1,markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),)
bar.overlap(line)
bar.render_notebook()

在这里插入图片描述

8.5 广告在不同资源位上的点击情况(堆积柱形图-折线图)
"""
利用堆积柱形图-折线图可视化分析广告在不同资源位上的点击情况
"""
data_pid = data.groupby('pid')['clk'].agg({
    '展示量':'count',
    '点击量':sum,
    '点击率':np.mean
})
data_pid

from pyecharts import options as opts
from pyecharts.charts import Bar, Line

name = data_pid.index.tolist()

v0 = data_pid.展示量.tolist()
v1 = (data_pid.展示量-data_pid.点击量).tolist()
v2 = data_pid.点击量.tolist()
v3 = data_pid.点击率.tolist()
v3 = ((data_pid.点击率.values)*100).tolist()
v3 = [round(i,2) for i in v3]
b = dict(zip(name,v2))
words=list(zip(name,v2))
    
bar = (
    Bar(init_opts=opts.InitOpts(width="620px", height="460px"))
    .add_xaxis(name)
    
    .add_yaxis("无点击量", v1, stack="stack1", category_gap="80%")
    .add_yaxis("点击量", v2, stack="stack1", category_gap="80%")

    .extend_axis(
        yaxis=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} %"), interval=1)
    )
    .set_series_opts(label_opts=opts.LabelOpts(position="right"))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="广告在不同资源位上的点击情况", pos_left="30%"),
        yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value}"), max_=1500000),
        legend_opts=opts.LegendOpts(pos_top="6%", pos_left="50%")
        
    )
)
line = Line().add_xaxis(name).add_yaxis("点击率", v3, yaxis_index=1)
bar.overlap(line)
bar.render_notebook()

在这里插入图片描述

8.6 广告的受众群体特征
from pyecharts import options as opts
from pyecharts.charts import Radar

data1 = [{"value": [0, 3, 2, 3, 2, 3, 0, 2], "name": "主要受众群体"}]
# data2 = [{"value": [2, 6, 1, 1, 0, 2], "name": "开销分配"}]
c_schema = [
    {"name": "微群", "max": 97, "min": 0},
    {"name": "cms_group", "max": 12, "min": 0},
    {"name": "性别(1男2女)", "max": 2, "min": 1},
    {"name": "年龄层次", "max": 6, "min": 0},
    {"name": "消费档次(1:低档,2:中档,3:高档)", "max": 3, "min": 1},
    {"name": "购物深度(1:浅层用户,2:中度用户,3:深度用户)", "max": 3, "min": 1},
    {"name": "是否大学生(1:是,0:否)", "max": 1, "min": 0},
    {"name": "城市层级", "max": 4, "min": 1},
]
radar = (
    Radar()
    .set_colors(["#4587E7"])
    .add_schema(
        schema=c_schema,
        shape="circle",
        center=["50%", "50%"],
        radius="80%",
        textstyle_opts=opts.TextStyleOpts(color="#000"),
        angleaxis_opts=opts.AngleAxisOpts(
            min_=0,
            max_=360,
            is_clockwise=False,
            interval=5,
            axistick_opts=opts.AxisTickOpts(is_show=False),
            axislabel_opts=opts.LabelOpts(is_show=False),
            axisline_opts=opts.AxisLineOpts(is_show=False),
            splitline_opts=opts.SplitLineOpts(is_show=False),
        ),
        radiusaxis_opts=opts.RadiusAxisOpts(
            min_=0,
            max_=8,
            interval=2,
            splitarea_opts=opts.SplitAreaOpts(
                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
            ),
        ),
        polar_opts=opts.PolarOpts(),
        splitarea_opt=opts.SplitAreaOpts(is_show=False),
        splitline_opt=opts.SplitLineOpts(is_show=False),
    )
    .add(
        series_name="主要受众群体",
        data=data1,
        areastyle_opts=opts.AreaStyleOpts(opacity=0.1),
        linestyle_opts=opts.LineStyleOpts(width=1, color="#CD0000"),
    )

)
radar.render_notebook()

在这里插入图片描述
根据不同广告商品分析获取不同的受众群体特征:

# 查看所有投放的广告并按点击量排序
data_adgroup = data.groupby('adgroup_id')['clk'].agg({
    '展示量':'count',
    '点击量':sum,
    '点击率':np.mean
})
data_adgroup.sort_values(by='点击量',ascending=False).head(10)

在这里插入图片描述

# 查看所有投放的广告并按点击量排序
data_adgroup = data.groupby('adgroup_id')['clk'].agg({
    '展示量':'count',
    '点击量':sum,
    '点击率':np.mean
})
data_adgroup.sort_values(by='点击量',ascending=False)  # adgroup_id为118317的广告点击量第一(展示量3474,点击量348,点击率10.02%)

# 筛选adgroup_id为118317的广告
data_118317 = data[data['adgroup_id']==118317]
data_118317

# 筛选【adgroup_id为118317】且【被点击】的广告
data_118317_clk = data_118317[data_118317['clk']==1]
data_118317_clk

# 根据【adgroup_id】、【userid】这两列去重
data_118317_clk.drop_duplicates(subset=['userid','adgroup_id'],keep='first',inplace=True)
data_118317_cms = data_118317.groupby('cms_segid')['clk'].agg({
    '点击量':sum,
})
data_118317_cms_group = data_118317.groupby('cms_group_id')['clk'].agg({
    '点击量':sum,
})
data_118317_gender = data_118317.groupby('final_gender_code')['clk'].agg({
    '点击量':sum,
})
data_118317_age = data_118317.groupby('age_level')['clk'].agg({
    '点击量':sum,
})
data_118317_shopping = data_118317.groupby('shopping_level')['clk'].agg({
    '点击量':sum,
})
data_118317_occupation = data_118317.groupby('occupation')['clk'].agg({
    '点击量':sum,
})
data_118317_city = data_118317.groupby('new_user_class_level ')['clk'].agg({
    '点击量':sum,
})
data_118317_pvalue = data_118317.groupby('pvalue_level')['clk'].agg({
    '点击量':sum,
})
from pyecharts import options as opts
from pyecharts.charts import Pie

name_cms = data_118317_cms.index.tolist()
for i in range(0,len(name_cms)):
    name_cms[i]=f'微群{name_cms[i]}'
v_cms = data_118317_cms.点击量.tolist()
b_cms = dict(zip(name_cms,v_cms))
words_cms = list(zip(name_cms,v_cms))

name_cms_group = data_118317_cms_group.index.tolist()
# for i in range(0,13):
#     name_cms_group[i]=f'cms_group{i}'
v_cms_group = data_118317_cms_group.点击量.tolist()
b_cms_group = dict(zip(name_cms_group,v_cms_group))
words_cms_group = list(zip(name_cms_group,v_cms_group))

name_gender = data_118317_gender.index.tolist()
name_gender[0]='男'
name_gender[1]='女'
v_gender = data_118317_gender.点击量.tolist()
b_gender = dict(zip(name_gender,v_gender))
words_gender = list(zip(name_gender,v_gender))

name_age = data_118317_age.index.tolist()
for i in range(0,7):
    name_age[i]=f'年龄层次{i}'
v_age = data_118317_age.点击量.tolist()
b_age = dict(zip(name_age,v_age))
words_age = list(zip(name_age,v_age))

name_shopping = data_118317_shopping.index.tolist()
name_shopping[0]='浅度'
name_shopping[1]='中度'
name_shopping[2]='深度'
v_shopping = data_118317_shopping.点击量.tolist()
b_shopping = dict(zip(name_shopping,v_shopping))
words_shopping = list(zip(name_shopping,v_shopping))

name_occupation = data_118317_occupation.index.tolist()
name_occupation[0]='非大学生'
name_occupation[1]='大学生'
v_occupation = data_118317_occupation.点击量.tolist()
b_occupation = dict(zip(name_occupation, v_occupation))
words_occupation = list(zip(name_occupation, v_occupation))

name_city = data_118317_city.index.tolist()
for i in range(0,4):
    name_city[i]=f'城市层次{i+1}'
v_city = data_118317_city.点击量.tolist()
b_city = dict(zip(name_city, v_city))
words_city = list(zip(name_city, v_city))

name_pvalue = data_118317_pvalue.index.tolist()
name_pvalue[0]='低档'
name_pvalue[1]='中档'
name_pvalue[2]='高档'
v_pvalue = data_118317_pvalue.点击量.tolist()
b_pvalue = dict(zip(name_pvalue, v_pvalue))
words_pvalue = list(zip(name_pvalue, v_pvalue))

def new_label_opts():
    return opts.LabelOpts( formatter="{b}: {c}({d}%)", position="inside")


c = (
    Pie(init_opts=opts.InitOpts(width="980px", height="460px"))
    .add(
        "微群分布",
        words_cms,
        center=["10%", "30%"],
        radius=[40, 80],
        label_opts=new_label_opts(),
    )
    .add(
        "cms_group分布",
        words_cms_group,
        center=["35%", "30%"],
        radius=[40, 80],
        label_opts=new_label_opts(),
    )
    .add(
        "性别分布",
        words_gender,
        center=["60%", "30%"],
        radius=[40, 80],
        label_opts=opts.LabelOpts(formatter="{b}: {c}({d}%)", position="inside"),
    )
    .add(
        "年龄层次分布",
        words_age,
        center=["85%", "30%"],
        radius=[40, 80],
        label_opts=new_label_opts(),
    )
    .add(
        "购物深度分布",
        words_shopping,
        center=["10%", "70%"],
        radius=[40, 80],
        label_opts=new_label_opts(),
    )
    .add(
        "是否大学生分布",
        words_occupation,
        center=["35%", "70%"],
        radius=[40, 80],
        label_opts=new_label_opts(),
    )
    .add(
        "城市层次分布",
        words_city,
        center=["60%", "70%"],
        radius=[40, 80],
        label_opts=new_label_opts(),
    )
    .add(
        "消费档次分布",
        words_pvalue,
        center=["85%", "70%"],
        radius=[40, 80],
        label_opts=new_label_opts(),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="广告id为【118317】的点击用户特征分布", pos_left="30%"),
        legend_opts=opts.LegendOpts(
            type_="scroll", pos_top="6%", pos_left="0%", 
        ),
    )
    .set_series_opts(
        tooltip_opts=opts.TooltipOpts(
            trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"
        ),
    )  
)
c.render_notebook()

在这里插入图片描述

8.7 基于物品的协同过滤推荐
# 筛选有点击的数据
data_clk_1 = data[data['clk'] == 1]

# 根据【adgroup_id】、【userid】这两列去重
data_clk_1.drop_duplicates(subset=['userid','adgroup_id'],keep='first',inplace=True)

# 选取【'userid', 'adgroup_id', 'clk'】三列数据
columns = ['userid', 'adgroup_id', 'clk']
data_clk_col = data_clk_1[columns]

# 将数据写入.txt
data_clk_col.to_csv('D:/淘宝展示广告点击率预估数据集/data_clk_col.txt',sep=',',index=False)

f = open('D:/淘宝展示广告点击率预估数据集/data_clk_col.txt', "r", encoding="utf-8")
dataSet = {}

for line in f:
    userid, adgroup_id, clk = line.strip().split(",")
    dataSet.setdefault(userid, {})
    dataSet [userid][adgroup_id] = clk
print(dataSet)
dataSet.pop('userid')
print('-'*60)
print(dataSet)
from math import sqrt
import operator

N={};#喜欢广告i的总人数
C={};#喜欢广告i也喜欢广告j的人数
for userid,item in dataSet.items():
    for i,score in item.items():
        N.setdefault(i,0)
        N[i]+=1
        C.setdefault(i,{})
        
        for j,scores in item.items():
            if j not in i:
                C[i].setdefault(j,0)
                C[i][j]+=1
                
print("---构造的共现矩阵---")
print ('N:',N);
print ('C:',C);
# 计算广告与广告之间的相似矩阵
W={};
for i,item in C.items():
    W.setdefault(i,{});
    for j,item2 in item.items():
        W[i].setdefault(j,0);
        W[i][j]=C[i][j]/sqrt(N[i]*N[j]);
print("---构造广告的相似矩阵---")
print(W)
# 查询【118317】的推荐产品机器相似度并将其转换为dataFrame格式
recommend_118317 = pd.DataFrame([W['118317']]).T

# 修改列名
recommend_118317.rename(columns={0:'相似度'},inplace=True)

# 按相似度倒序排序
recommend_118317.sort_values(by='相似度',ascending=False).head(10)

在这里插入图片描述

# 获取118317中符合主要受众群体的用户
data_118317_clk_people = data_118317_clk[(data_118317_clk['cms_segid']==0) & (data_118317_clk['cms_group_id']==8) 
                & (data_118317_clk['final_gender_code']==1) & (data_118317_clk['occupation']==0)
               & (data_118317_clk['age_level']==2) & (data_118317_clk['shopping_level']==3)
               & (data_118317_clk['pvalue_level']==2) & (data_118317_clk['new_user_class_level ']==2)]
data_118317_clk_people

根据用户历史行为进行推荐在此处以userid为’387456’为例:

rank={};
for i,score in dataSet['387456'].items():#获得用户userid‘387456’点击广告历史记录
    for j,w in sorted(W[i].items(),key=operator.itemgetter(1),reverse=True)[0:3]:#获得与广告i相似的k个物品
        if j not in dataSet['387456'].keys():#该相似的广告不在用户userid的记录里
            rank.setdefault(j,0);
            rank[j]+=float(score) * w;
            
recommend_to_387456 = sorted(rank.items(),key=operator.itemgetter(1),reverse=True)[0:10]
recommend_to_387456 = pd.DataFrame(recommend_to_387456)

# 修改列名
recommend_to_387456.rename(columns={0:'adgroup_id'},inplace=True)
recommend_to_387456.rename(columns={1:'用户点击的概率'},inplace=True)

print("---推荐给用户【387456】----")
recommend_to_387456

在这里插入图片描述

淘宝广告数据分析实战!(附代码和100W数据源)
SeizeeveryDay的博客
07-23 4133
广告展示数一定的条件下,点击率的高低就是决定一个广告能否被更多人看到的因素。本文主要针对“点击率”这一因素进行分析,与大家分享。本文为Rambo同学原创投稿,以项目分析的架构,从多维度...
TB_clk:这是一份淘宝平台的广告展示点击数据分析,从这些数据中发现某些规律或者异常,进而给运营团队提出建议
04-29
淘宝广告展示点击数据分析报告 数据集地址: 从淘宝平台的广告展示数据中,分析数据,提出建议 。 在广告展示数一定的情况下,分析点击率的高低的影响因素。 分析角度: 从广告角度,分析不同的广告商品价格对点击率的影响。 从广告角度,分析广告类别对点击率的影响。 从用户角度,结合聚类模型分析用户群体和点击率的联系。 结论: 广告商品价格对点击率的影响: 从广告角度看,广告商品在100元以内的广告点击率更高,深度用户占点击广告用户的81%。 建议对此区间的广告进行优先投放。 广告类别对点击率的影响: 类别6261广告效果最好,有最高的点击率展示数和点击人数。 可以对该类广告加大投入。 4520广告虽然有较高的展示量,但是点击率最低,广告效果差。 由于面向更多的女性消费者,年龄层次3,平均商品价格155,建议对该类广告优化,进行适当的促销、降低商品价格等活动,从而提高点击率。 结合聚类模型分析
淘宝广告投放效果分析
adsasdsd的博客
06-29 2407
分析目的: 实现淘宝展示广告精准投放,提高广告投放效果。 数据来源: https://tianchi.aliyun.com/dataset/dataDetail?dataId=56 数据说明: 原始样本骨架raw_sample 从淘宝网站中随机抽样了114万用户8天内的广告展示/点击日志(2600万条记录),构成原始的样本骨架。 字段说明如下: (1) user_id:脱敏过的用户ID; (2) adgroup_id:脱敏过的广告单元ID; (3) time_stamp:时间戳; (4
淘宝用户行为分析(一):点击—加购—收藏—购买
weixin_43850016的博客
03-11 3800
前面研究的都是用户下单后的行为,是基于已经生成的订单数据,接下来几篇文章将把重点放在下单之前的用户行为分析数据来源于 Season 1 of Ali Mobile Recommendation Algorithm Competition 是一份跨期1个月且经过脱敏处理的淘宝用户行为数据,共1225 6906行,6个字段如下,主要涉及用户click, collect,add-to-cart , ...
推荐系统(一):个性化电商广告推荐系统介绍、数据集介绍、项目效果展示、项目实现分析点击率预测(CTR--Click-Through-Rate)概念
汪雯琦的博客
03-15 6237
文章目录一 个性化电商广告推荐系统介绍1.1 数据集介绍1.2 项目效果展示1.3 项目实现分析1.4 点击率预测(CTR--Click-Through-Rate)概念 一 个性化电商广告推荐系统介绍 1.1 数据集介绍 Ali_Display_Ad_Click是阿里巴巴提供的一个淘宝展示广告点击率预估数据数据集来源:天池竞赛 原始样本骨架raw_sample 淘宝网站中随机抽样了11...
淘宝用户行为数据
01-05
3182257条数据,可做推荐系统,数据分析 它包含字段(id, uid,age,gender,item_id, behavior_type, item_category, date, province) //1.浏览、2.收藏、3.加购物车 4.购买 7.统计各省的前十热门关注产品(浏览+收藏+添加购物车+购买总量最多前10的产品) 8.统计各省的前十热门购买产品(销售最多前10的产品) 9.统计各省销售最好的产品类别前10(销售最多前10的产品类别) 10.统计各省男女用户数量(gender 0:男 1:女 2:未知)
淘宝广告展示点击数据分析报告.zip
01-04
进一步,可以利用机器学习模型,如决策树、随机森林或神经网络,进行预测性分析,预测未来的广告点击率。此外,聚类分析可以帮助识别具有相似广告行为的用户群体,以便进行更精准的定向营销。时间序列分析则能揭示...
数据分析Demo:广告点击数据分析.pdf
12-23
总的来说,这个数据分析Demo旨在通过多角度、多层次的探索,揭示广告点击率的影响因素,为优化广告策略提供数据支持。通过对广告效果的深入理解,企业可以更有效地投放资源,提高广告的投资回报率,并最终提升整体的...
点击广告行为预测数据
04-12
数据集包括训练集train.csv,训练集结果train_label.csv,预测集test.csv,以及结果的保存样式submission.csv。
淘宝展示广告中的优化点击成本算法
hestendelin的专栏
02-21 1385
Optimized Cost per Click in Taobao Display AdvertisingHan Zhu, Junqi Jin, Chang Tan, Fei Pan, ...
Python源码+推荐系统
03-08
推荐系统 项目介绍 介绍推荐系统基本知识,相关算法以及实现。 目录规划 data 测试用数据集合 py3.x 相关实践的python 实现 spark 相关实践的spark 实现 manual 相关资料集合 paper阅读分享 基础知识分享 内容导航 python 实现(主要用于原理理解) ItemCF(使用sklearn 版本和 不使用sklearn版本) UserCF(使用sklearn 版本和 不使用sklearn版本) LFM Graph—Based Spark 实现 特征工程 ItemCF 计划项(恩 就是挖坑的意思) 推荐算实现 基于用户行为数据的推荐算法 关联规则 LFM Graph ALS 利用用户标签数据推荐算法 LDA TF-IDF TagCF 探索性研究(各个paper的实现) Markov Chain 社交网络 基于深度学习的推荐算法 .... 评价系统实现 推荐系统架构实现 外围架构 用户行为日志存储系统 日志系统 UI 功能模块 数据录入模块 用户特征生成模块 推荐模块 过滤模块 排名模块
阿里点击预估模型的数据(Ad Display/Click Data on Taobao.com)
Tak-Wah Blog
07-17 2027
Ad Display/Click Data on Taobao.com 地址:https://tianchi.aliyun.com/dataset/dataDetail?dataId=56
论文复现: DSIN-阿里点击率预测三部曲-3
m0_63642362的博客
05-19 904
转自AI Studio,原文链接: 论文复现: DSIN-阿里点击率预测三部曲-3 - 飞桨AI Studio 论文复现:Deep Session Interest Network for Click-Through Rate Prediction 一、简介 Deep Session Interest Network for Click-Through Rate Prediction 是点击率预测问题的一篇经典论文,该论文的先前工作有大家非常熟悉的DIN,DIEN。都是关注于用户的兴趣,对用户的历史会
实战三十二:基于knn算法的用户购物消费预测代码+数据
12-19 722
实战三十二:基于knn算法的用户购物消费预测代码+数据
利于深度学习实现淘宝买家评论的情感分析与分类并结合远程监督的思想进行整合数据(代码实现与讲解)
haosen
11-09 8895
情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析、归纳。情感极性分析主要有两种分类方法:基于情感知识的方法和基于机器学习的方法。基于情感知识的方法通过一些已有的情感词典计算文本的情感极性(正向或负向),其方法是统计文本中出现的正、负向情感词数目或情感词的情感值来判断文本情感类别;基于机器学习的方法利用机器学习算法训练已标注情感类别的训练数据集训练分类模型,再通过分类模型预测文本所...
数据毕业设计Flink知识图谱广告推荐系统 广告预测 广告数据分析可视化 广告爬虫 Spark Hive Hadoop 深度学习 机器学习 人工智能 计算机毕业设计
最新发布
qq_80213251的博客
04-11 231
数据采集:使用Python等编程语言和相关库,采集B站的广告相关数据,包括广告主、广告投放时间、广告投放位置、广告费用、广告点击量等。数据预处理:收集到的数据可能存在缺失值、异常值或者格式不一致的情况,对采集到的数据进行清洗、去重、缺失值处理、异常值处理等预处理工作,以确保数据的准确性和完整性。数据分析和挖掘:利用大数据分析技术,对收集到的数据进行分析,包括广告投放效果的分析、受众群体特征的挖掘、广告点击与转化的关联分析等,以发现潜在的规律和趋势。
推荐系统
weixin_44070747的博客
06-16 1295
一 推荐系统简介 ​ 个性化推荐(推荐系统)经历了多年的发展,已经成为互联网产品的标配,也是AI成功落地的分支之一,在电商(淘宝/京东)、资讯(今日头条/微博)、音乐(网易云音乐/QQ音乐)、短视频(抖音/快手)等热门应用中,推荐系统都是核心组件之一。 推荐系统产生背景 信息过载 & 用户需求不明确 分类⽬录(1990s):覆盖少量热门⽹站。Hao123 Yahoo ...
个性化广告推荐系统实战系列(三):CTR预估的数据准备(这篇走起来步履维艰)
Miracle8070
01-21 2237
1. 写在前面 这几天打算整理一个模拟真实情景进行广告推荐的一个小Demon, 这个项目使用的阿里巴巴提供的一个淘宝广告点击率预估的数据集, 采用lambda架构,实现一个离线和在线相结合的实时推荐系统,对非搜索类型的广告进行点击率预测和推荐(没有搜索词,没有广告的内容特征信息)。这个感觉挺接近于工业上的那种推荐系统了,通过这个推荐系统,希望能从工程的角度了解推荐系统的流程,也顺便学习一下大数据的相关技术,这次会涉及到大数据平台上的数据处理, 离线处理业务和在线处理业务, 涉及到的技术包括大数据的各种技术,
一 、个性化电商广告推荐系统介绍
Wzideng@qq.com
08-13 327
Ali_Display_Ad_Click是阿里巴巴提供的一个淘宝展示广告点击率预估数据数据集来源:天池竞赛原始样本骨架raw_sample淘宝网站中随机抽样了114万用户8天内的广告展示/点击日志(2600万条记录),构成原始的样本骨架。user_id:脱敏过的用户ID;adgroup_id:脱敏过的广告单元ID;time_stamp:时间戳;pid:资源位;noclk:为1代表没有点击;为0代表点击;clk:为0代表没有点击;为1代表点击
写文章

热门文章

  • 淘宝展示广告点击率分析 11889

分类专栏

  • 数据分析项目 1篇

最新文章

2020年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司泰安济南网站排名优化公司萝岗百度网站优化嘉峪关网站优化推广怎么收费广州优化网站推广上海网站关键词排名优化策略推荐网站优化如何选定州网站seo优化排名郴州网站排名优化费用石阡网站优化优化公司网站你知道易 速达丰城网站优化排名个人网站优化总结js优化对网站有影响吗网站推广与优化平台思明网站优化定制免费网站页面优化龙岗网站改版优化优化网站方法就靠云速捷三网站排名优化有效果吗运城优化网站网站优化指数是什么揭阳网站搜索引擎优化报价沁阳百度网站优化方案东莞网站优化排名推广排名网站教程优化网站优化有什么规则企业网站的优化作用四川电子网站优化出厂价格沧州网站优化平台企业网站seo优化方法歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化