分析各渠道广告,建立评分模型以及找到优质渠道的特性
文章目录
- 官方描述
- 一、观察数据
- 二、提出问题以及实现方法
- 2.1 哪个渠道综合结果数据较优质
- 2.1.1 排除有相关性的数据
- 2.1.2 数据归一化
- 2.1.3 加权评分
- 2.2 优质渠道有什么共性特征
- 2.3 分析各个广告特征与结果数据之间的关系
- 总结
官方描述
公司近三个月(30天)大力投放广告,累计投放的渠道有889,每个渠道的客户性质也可能不同,比如在优酷视频投广告和今日头条投放广告,效果可能会有差异。现在需要对广告效果分析实现有针对性的广告效果测量和优化工作。
一、观察数据
平均停留时长有两个空值,我们找到这两个空值
两个渠道都有日均UV,平均停留时间不太可能为0。并且两个渠道的素材类型、广告类型、合作方式、广告卖点相同,用相同广告属性的平均数去弥补。
同时我们能根据平均数、四分位数推测,结果数据呈现偏态分布,有许多异常值,做直方图和箱线图查看。
实现代码:
fig, axes = plt.subplots(2,6,figsize=(20,8))
result_type=ad.columns.tolist()[1:7]
result_type
for i in range(len(result_type)):sns.distplot(ad[result_type[i]],norm_hist=True,ax=axes[0][i])axes[0][i].axvline(x=ad[result_type[i]].mean(), color = 'red',linestyle=":")sns.boxplot(ad[result_type[i]],ax=axes[1][i])
plt.tight_layout()
二、提出问题以及实现方法
2.1 哪个渠道综合结果数据较优质
重点关注顺序应该是渠道给公司带来的:
收益效果(订单转化率)
新用户效果(平均注册率)
访问效果(日均UV、平均搜索率、访问深度、平均停留时长)
这里用加权评分法对这几个结果数据进行评分
2.1.1 排除有相关性的数据
corr = ad.corr().round(2)
mask = np.zeros_like(corr)
mask[np.triu_indices_from(mask)] = True
sns.heatmap(corr,cmap='Reds',annot = True,mask=mask)
plt.show()
可以看到,“访问深度”和“平均停留时间”相关性比较高,相关性高说明两个变量在模型中作用或者效果是一样的,可以考虑组合或者删除其一。
2.1.2 数据归一化
#选取日均UV、平均注册率、平均搜索量、访问深度、订单转化率
ad_result=ad.iloc[:,1:7]# min-max缩放
minmax_df = pd.DataFrame(preproc.minmax_scale(ad_result),columns=[x+"归一化" for x in ad_result.columns.tolist()])#数据合并
pingfen_df=pd.concat((ad,minmax_df),axis=1)
2.1.3 加权评分
#加权评分:满分15分
#日均UV:1、平均注册率:4、平均搜索量:1、访问深度:2、订单转化率:7pingfen_df["分数"]=pingfen_df["日均UV归一化"]+pingfen_df["平均注册率归一化"]*4+pingfen_df["平均搜索量归一化"]+pingfen_df["访问深度归一化"]*2+pingfen_df["订单转化率归一化"]*7
总分15分最高分的A723也只有7.1,同时用describe()函数查看分数数据也是呈严重偏态分布,尾部数据较多,说明质量差的渠道较多,应重点选质量好的渠道加大投放,节约成本。
同时也由于数据本身存在投放时间有偏差,新投放的渠道,用户没有看过该广告,可能会更有兴趣点进去,带来较好的结果数据。投放交长时间的渠道会在时间较长的时候,结果数据下降,导致平均指标下降。
如果条件允许,应控制投放时间一致去分析投放效果。
在Top10广告里,A859和A756的两个渠道排第三第四,而且投放时间较长,可以多加投放。
2.2 优质渠道有什么共性特征
把Top10%的渠道数据取出来,和其他数据进行对比
top_df=pingfen_df.sort_values("分数",ascending=False).head(89)
other_df=pingfen_df.sort_values("分数",ascending=False).iloc[89:,:]
fig, axes = plt.subplots(2,5, constrained_layout=True,figsize=(16, 8))ad_attr=ad.columns.tolist()[8:13]for i in range(len(ad_attr)):attr_df=other_df[ad_attr[i]].value_counts()labels=attr_df.index.tolist()data=attr_df.values.tolist()axes[0][i].pie(data, autopct='%1.1f%%',labels=labels)axes[0][i].set_title("优质渠道"+ad_attr[i])attr_df=top_df[ad_attr[i]].value_counts()labels=attr_df.index.tolist()data=attr_df.values.tolist()axes[1][i].pie(data, autopct='%1.1f%%',labels=labels)axes[1][i].set_title("其他渠道"+ad_attr[i])plt.tight_layout()
单看某一特征来说:
- 优质渠道的素材类型为jpg的占比更多,swf占比更少
- 广告类型方面,优质渠道中横幅的比例占比最大,高达40%。”不确定“在优质渠道和其他渠道都有有很大比例,有必要清楚是什么类型才能做更好的分析。
- 合作方式中,优质渠道与其他渠道的cpc占比差距不大,并且都是最高的。但是roi占比变大,cpm、cpd占比表小
- 600*90的广告尺寸在优质渠道中占比较大,并且也比其他渠道占比高9%左右
- 广告卖点为”直降“的占比优质渠道比其他渠道要多,并且多达9%,满减多了0.5%,其他相对减少
当然我们还需要进一步看有没有什么组合的广告是优质的。但这里数据较小,暂时没有得出结论。
组合特征这里只取转化率作为重要指标,去看每个组合特征的平均转化率,以及该特征的渠道数量。
df=pingfen_df.groupby([pingfen_df["等级"],pingfen_df["素材类型"],pingfen_df["广告类型"],pingfen_df["广告尺寸"],pingfen_df["广告卖点"]])[["订单转化率","分数"]].agg(["mean","count"]).dropna(axis=0).reset_index()df.sort_values(by=[('分数', 'mean')],ascending=False)
用shape可以看到有43个组合,其中(素材类型:swf,广告类型 :不确定,广告尺寸:600*90,广告卖点:直降)的平均分数为7.1936,平均转化率为0.2165,均为最高。但是只有一个渠道数据,并没有说服力。
当我们拥有大量数据的时候,可以通过这个方法去看什么组合特征的渠道转化率、或者其他指标最优。
2.3 分析各个广告特征与结果数据之间的关系
方法一:每个特征的结果数据的平均数
dict_X={}
tezheng=X.iloc[:,1:-5].columns.tolist()
jieguo=X.iloc[:,-5:].columns.tolist()
#print(jieguo)
for m in range(len(tezheng)):mean_list=[]for n in range(len(jieguo)):mean=X[X[tezheng[m]]==1][jieguo[n]].mean()mean_list.append(mean)dict_X[tezheng[m]]=mean_listdf=pd.DataFrame(dict_X,index=jieguo).T
方法二:对特征数据按one-hot进行编码,对结果数据归一化,看相关性
cols = ['素材类型','广告类型','合作方式','广告尺寸','广告卖点']
ohe_matrix1=pd.get_dummies(ad[cols])
#ad_result=ad.iloc[:,1:7]
X=pd.concat((ohe_matrix1,ad_result),axis=1)
corr = X.corr().round(2)
corr=corr.iloc[-5:,:-5]
# 相关性分析
fig, axes = plt.subplots(figsize=(20,10))sns.heatmap(corr,cmap='Reds',annot = True)
plt.show()
比较明显能看到素材类型为gif、广告类型为暂停(???)和广告尺寸为390*270的广告渠道和访问深度有较强相关性。其余相关性并不强。
总结
因数据存在投放时间的差异,导致数据指标会收投放时间的影响,并不能很准确的反应结果。
这里给的投放建议是:
- 广告类型为不确定的居多,并且在Top10%的优质广告占比较大,应清楚知道是什么广告类型,可以更好地区选择和优化渠道
- 素材类型为gif、广告类型为暂停和广告尺寸为390*270的广告渠道和访问深度有较强相关性
- 可以多加投放A859和A756,因为这两个渠道投放时间较长,并且保持较好的结果数据。
分析各渠道广告,建立评分模型以及找到优质渠道的特性相关推荐
- python 广告分析算法_[Python]研究广告渠道的特征数据与结果数据的相关性, 并对渠道作出评分模型...
官方描述 公司近三个月(30天)大力投放广告,累计投放的渠道有889,每个渠道的客户性质也可能不同,比如在优酷视频投广告和今日头条投放广告,效果可能会有差异.现在需要对广告效果分析实现有针对性的广告效 ...
- 信用卡评分模型(数据获取+数据预处理+探索分析+变量选择+模型开发+模型评估+信用评分+建立评分系统)
最近两次遇到关于信用卡评分的题目,遂了解一波. Reference: 基于python的信用卡评分模型(超详细!!!) https://www.jianshu.com/p/f931a4df202c h ...
- 商品评论情感分析——基于商品评论建立的产品综合评价模型(1)
商品评论情感分析--基于用户评论建立的产品综合评价模型(1) 1.背景 1.1问题分析 2.数据预处理 2.1删除无关数据 2.2文本去重 3.情感分析 4.LDA主题模型 4.1评论文本分词 4.2 ...
- 机器学习实验笔记-基于信用卡数据建立行为评分模型的机器学习方法
基于信用卡数据建立行为评分模型的机器学习方法 很久之前的一个答疑, 应该不会再影响评分了, 记录以供复习. 数据集与代码放在CSDN下载区域, 也可以留言索要. https://download.cs ...
- (软件工程复习核心重点)第九章面向对象分析-第三节:面向对象分析之建立动态模型和功能模型
文章目录 一:建立动态模型 (1)概念 A:适用性 B:步骤 (2)编写脚本 A:定义 B:目的 C:内容 D:方法 (3)设想用户界面 A:重要性 B:目的 C:方法 (4)画事件跟踪图 A:必要性 ...
- 信用评分模型中的滚动率分析
信用评分模型中的滚动率分析 信用风险模型的目标是识别出应被拒之门外的潜在坏客户,因此给出合理的客户好坏分类是建模的基础.比如,信用卡逾期的"坏客户",究竟应该是所有逾期过的客户,还 ...
- 电影评分数据分析python_豆瓣电影简单评分模型-从收集数据到建模分析
思路: 从豆瓣上抓取数据[主要是评分,只是那个人数的百分比和最终评分,不过够用了] 一.收集数据 起始URL:https://movie.douban.com/j/new_search_subject ...
- 豆瓣电影简单评分模型-从收集数据到建模分析
思路: 从豆瓣上抓取数据[主要是评分,只是那个人数的百分比和最终评分,不过够用了] 一.收集数据 起始URL:https://movie.douban.com/j/new_search_subject ...
- Python分析国家领导人新春贺词建立主题模型
主题建模可以帮助开发人员直观地理解和探索数据,以便更好地挖掘语料库中的主题.成功的主题建模需要多次迭代:清洗数据.读取结果.相应地调整预处理并重试.本文通过分析国家领导人从2014年到2021年的新春 ...
最新文章
- java 手机号脱敏,身份证号脱敏 工具类
- Java 面试题基础概念收集(高级)
- .NET Compact Framework s60v3(在S60上运行Windows Mobile程序)
- CentOS 恢复 rm -rf * 误删数据(转)
- 4月第三周国内域名解析商Top10:万网升至20.32%
- Silverlight+WCF 新手实例 象棋 棋子移动-线交叉点(六)
- 前端折线图中背景,Chart.js折线图设置背景颜色
- Windows服务中Timer组件Tick无法触发
- AMPL 简单运输模型
- Java常见算法(一)
- android viewholder静态,android – 静态ViewHolder并在使用RecyclerView时获取上下文
- 免费https ssl证书freessl.org的申请及配置
- 程序员学英语Oeasy
- W3C 验证的是是非非
- c#和java部署pytorch同事识别两个图片_Pytorch转NCNN的流程记录
- php查询后台地址,dedecms 织梦后台查找方法【整理】
- Alpha选股:资本资产定价模型(CAPM)
- ur机器人编程-程序流程
- lib与dll的关系(详解静态链接库和动态链接库)
- 爬虫之 静态页面和动态页面