基于MySQL实现广告精准投放

问题的提出:如何实现广告的精确有效投放?

在现实的推广过程中,优质人群,投放时间,资源位的确定属于盲测,且市场多变,推广的过程中大量人力财力是无效的投入。通过对推广数据的研究,从人群,投放时间,投放位置等多维度进行点击率数据分析,得出最佳推广方案,从而让推广费用投入更高效。

分析思路

为达成广告精准有效投放,我们从投放位置,投放时间,和投放人群三方面来多维度分析广告的点击率,从而筛选出最佳的投放位置,最佳投放时间,优质投放人群,从而实现精确投放,提高推广费用的使用效果。

目的

为实现高效的广告推荐,通过对用户信息,用户行为以及广告信息分析:

  用户信息:用户id,性别,年龄,消费档次,购物深度,是否为大学生,所在城市

  广告信息:广告id,商品类目,广告计划,广告主,品牌,价格

  用户行为:点击时间,是否点击等

  多维度进行数据分析,找出其中的隐含规律,并提出最佳的推广方案,实现广告精准投放

数据来源

阿里天池https://tianchi.aliyun.com/dataset/dataDetail?dataId=56

  • 数据集

      user_profile.csv.tar.gz

      ad_feature.csv.tar.gz

      raw_sample.csv.tar.gz

数据理解

ad_feature.csv.tar.gz :广告的基本信息,包含广告id的基本信息

user_profile.csv.tar.gz:用户基本信息表格,包含位用户信息

raw_sample.csv.tar.gz:样本人群点击记录表格,包含条点击记录

数据预处理

1. 导入数据

创建用户基本信息表:user_info

创建用户点击信息表:user_click_record

创建广告基本信息表:ad_info

1.      用户基本信息表:

select * from user_info limit 20;

# 用户基本信息总条数:
select count(*) as ‘用户基本信息条数’ from user_info;

 2. 用户点击信息表

select * from user_click_record limit 20;

# 用户点击信息总条数:
select count(*) as ‘用户点击信息条数’ from user_click_record;

# 用户是否点击信息:
Select count(*) from user_click_record where clk = 1;

3.      广告基本信息:

select * from ad_info limit 20;

# 广告基本信息总条数:
select count(*) as ‘广告基本信息条数’ from ad_info;

2. 特征提取

  选择广告点击最高的广告数据进行分析:

由上面的查询用户点击记录表的广告点击量检索非常耗时,因此我们筛选出表中广告id为:710164的记录,并将其存储到新建表new_user_click_record中。

新建表:

将筛选的结果存储在该表中:

 查询结果

数据分析与可视化图表制作

1.  创建可视化图表:

内联接关联user_info表和new_user_click_record表,通过探索各维度特征与当前维度下展现量和点击率之间的关系,分析用户心理与行为。

CREATE VIEW 视图(人群分析)  AS
    SELECT new_user_click_record.`用户id`,
    from_unixtime(new_user_click_record.`时间戳`,'%Y-%m-%d') AS '点击日期',
    from_unixtime(new_user_click_record.`时间戳`,'%k:%i:%s') AS '点击时间',
    new_user_click_record.`资源位`,
    new_user_click_record.nonclk,
    new_user_click_record.clk,
    user_info.`城市层次`,
    user_info.`年龄层次`,
    user_info.`性别`,
    user_info.`消费档次`,
    user_info.`是否为大学生`,
    user_info.`购物深度`
     FROM new_user_click_record,user_info
     WHERE user_info.`用户id`= new_user_click_record.`用户id`;

 

2.  分析不同资源位点击率

select 视图(人群分析.资源位),
             count(*) as 展现量,
             sum(clk) as 点击数,
             CONCAT(Round(sum(clk) / count(*)*100, 2),'%') as '点击率'
             FROM 人群分析.资源位
             GROUP BY 资源位
             order by 点击率 desc;

由分析结果可知,两个资源位点击率差异较少,虽然资源位430539点击率略高一点,但是展现量却不如另一资源位。运营人员应根据推广目的对曝光度以及点击率做合理的权衡。

3. 多维度分析不同投放时间点击率

       3.1 每日各时间段点击率分析

SELECT `视图(人群分析)`.`点击时间`,
COUNT(*) AS 展现量,
SUM(`视图(人群分析)`.clk) AS 点击数,
ROUND(SUM(`视图(人群分析)`.clk) /COUNT(*)*100 ,2) AS 点击率,
CONCAT(ROUND(SUM(`视图(人群分析)`.clk) /COUNT(*)*100 ,2),'%')AS 点击率1
from `视图(人群分析)`
GROUP BY `视图(人群分析)`.`点击时间`
ORDER BY 点击率 DESC;

展示结果如图所示:

由以上数据图表分析,得出以下结论:

a、 展现量从早上9点开始活跃至晚上十点达到高峰,与人们日常作息时间相对应。

b、 在展现量达到一定体量的基础上,每日的上午10点、下午3点的点击率出现了小高峰。

c、 深夜1-2点点击率升高接近13%,推测原因,一方面可能近期商家做活动抢购,另一方面夜深之时,一天忙碌后临睡前用户会有购物的欲望。

      3.2  每周各天点击率分析:

SELECT DATE_FORMAT(`视图(人群分析)`.`点击日期时间`,'%w') AS 周数,
COUNT(*) AS 展现量,
SUM(`视图(人群分析)`.clk) AS 点击数,
ROUND(SUM(`视图(人群分析)`.clk) /COUNT(*)*100 ,2) AS 点击率,
CONCAT(ROUND(SUM(`视图(人群分析)`.clk) /COUNT(*)*100 ,2),'%')AS 点击率1
from `视图(人群分析)`
GROUP BY DATE_FORMAT(`视图(人群分析)`.`点击日期时间`,'%w')
ORDER BY 点击率 DESC;

展示结果如下图所示:

分析总结:由图可知道5月6号周六到周一的点击率偏高,展现量也处于不错的水平,而到了下个周六展现量与点击率均有所下降,这可能与下个星期天即将到来的母亲节相关。运营人员可以根据对应节气上线一些具有节日特色的商品。

4 多维度分析各人群点击率

      4.1 各年龄层次人群点击率分析

SELECT `视图(人群分析)`.`年龄层次`,
COUNT(*) AS 展现量,
SUM(`视图(人群分析)`.clk) AS 点击数,
CONCAT(ROUND(SUM(`视图(人群分析)`.clk) /COUNT(*)*100 ,2),'%')AS 点击率
from `视图(人群分析)`
GROUP BY `视图(人群分析)`.`年龄层次`
ORDER BY 点击率 DESC;

其分布图如下图所示:

由图可知,年龄层次1、2、5对于点击率偏高,年龄层次2和3展现量处于不错水平,可推断现今青少年仍是消费主体。

      4.2  各消费档次人群点击率分析

SELECT `视图(人群分析)`.`消费档次`, 
CASE WHEN `视图(人群分析)`.`消费档次`=1 THEN "低档"
 WHEN `视图(人群分析)`.`消费档次`=2 THEN "中档"
 WHEN `视图(人群分析)`.`消费档次`=3 THEN "高档"
 ELSE "未分类"
END AS `实际消费档次`,
COUNT(*) AS 展现量,
SUM(`视图(人群分析)`.clk) AS 点击数,
CONCAT(ROUND(SUM(`视图(人群分析)`.clk) /COUNT(*)*100 ,2),'%')AS 点击率
from `视图(人群分析)`
GROUP BY `视图(人群分析)`.`消费档次`
ORDER BY 点击率 DESC;

其分布结果如下图所示:

由图表分析可知,高档人群展现量仅有883,且点击率也偏低,推测是由于产品109的单价,不符合高档人群购物需求,推广时候应该注意剔除此类人群。

     4.3 各个购物深度人群点击率分析

SELECT `视图(人群分析)`.`购物深度`,
CASE WHEN `视图(人群分析)`.`购物深度`=1 THEN "浅层用户"
 WHEN `视图(人群分析)`.`购物深度`=2 THEN "中度用户"
 WHEN `视图(人群分析)`.`购物深度`=3 THEN "深度用户"
 ELSE "未分类"
 END AS `实际购物深度`,
COUNT(*) AS 展现量,
SUM(`视图(人群分析)`.clk) AS 点击数,
CONCAT(ROUND(SUM(`视图(人群分析)`.clk) /COUNT(*)*100 ,2),'%')AS 点击率
from `视图(人群分析)`
GROUP BY `视图(人群分析)`.`购物深度`
ORDER BY 点击率 DESC;

 其分布结果如下图所示:

 

由图表分析可知,用户购物深度对于点击率影响不大。但是深度用户在展现量占据90%以上,点击率仍有9.45%,该人群点击率比较稳定。

      4.4  各职位(是否大学生)人群点击率分析:

SELECT `视图(人群分析)`.`是否大学生`,
CASE WHEN `视图(人群分析)`.`是否大学生`=1 THEN ""
 WHEN `视图(人群分析)`.`是否大学生`=0 THEN ""
 ELSE "未分类"
 END AS `实际职位(是否大学生)`,
COUNT(*) AS 展现量,
SUM(`视图(人群分析)`.clk) AS 点击数,
CONCAT(ROUND(SUM(`视图(人群分析)`.clk) /COUNT(*)*100 ,2),'%')AS 点击率
from `视图(人群分析)`
GROUP BY `视图(人群分析)`.`是否大学生`
ORDER BY 点击率 DESC;

分析可知,用户的职位对于是否是大学生影响不大,分析商品单价109,属于平价款,接受程度较高

     4.5  各城市层级人群点击率分析

SELECT `视图(人群分析)`.`城市层级`,
COUNT(*) AS 展现量,
SUM(`视图(人群分析)`.clk) AS 点击数,
CONCAT(ROUND(SUM(`视图(人群分析)`.clk) /COUNT(*)*100 ,2),'%')AS 点击率
from `视图(人群分析)`
GROUP BY `视图(人群分析)`.`城市层级`
ORDER BY 点击率 DESC;

其分布结果如下图所示:

由图表分析可知,第1层级点击率较低,第4层级展现量也比较低,处于中间第2层级展现量以及点击率都很高,消费人群与所在城市繁华程度以及人数有关。

    4.6  不同性别人群点击率分析:

SELECT `视图(人群分析)`.`性别`,
COUNT(*) AS 展现量,
SUM(`视图(人群分析)`.clk) AS 点击数,
CONCAT(ROUND(SUM(`视图(人群分析)`.clk) /COUNT(*)*100 ,2),'%')AS 点击率
from `视图(人群分析)`
GROUP BY `视图(人群分析)`.`性别`
ORDER BY 点击率 DESC;

分析可得,女性远比男性展现量的点击率高,故运营人员可以多推荐一些女性相关的产品。

总结与建议

  1. 产品分析:商品价格是109,在对应类目这个价格是普通价位,受众较多。对应广告的展现量以及点击量也处于较高的水平。
  2. 广告资源位分析:产品在两个资源位点击率并无较大差别。
  3. 广告投放时间分析:每天上午10点左右,下午3点左右点击率较高,也与商家促销活动、节假日时间等因素相关。可以根据推广需求,及转化率对于这几个时间区间设置溢价,提高该时段的展现,提高整个计划的点击率。
  4. 投放人群分析:由分析可知,广告对于购物深度,以及是否是学生人群的特性不敏感。对于城市层级,年龄层次,消费档次人群特性比较敏感,研究产品本身特点,推测产品主要消费人群是年龄处于1-2层级,消费能力一般,且处于社会中层的群体。
原文地址:https://www.cnblogs.com/colin1314/p/11228962.html