精华内容
下载资源
问答
  • 我们在一个在线展示广告环境中建模,在这种环境中,“效果”广告客户可以衡量单个展示的价值,而“品牌”广告客户则无法测量。品牌广告商的逆向选择贝叶斯最优拍卖还有其他弊端:它们很复杂,引入了虚假竞标的激励...
  • 广告展示:该广告在设定时间范围内的展示数量,也可以理解为曝光,广告在页面上曝光显示的次数,显示一次记为一个pv,被一个用户看到记为一个uv。 广告点击:该广告在设定时间范围内的点击数量,广告被点击一次记为...

    广告展示:该广告在设定时间范围内的展示数量,也可以理解为曝光,广告在页面上曝光显示的次数,显示一次记为一个pv,被一个用户看到记为一个uv。
    广告点击:该广告在设定时间范围内的点击数量,广告被点击一次记为一个pv,被一个用户点击记为一个uv。
    广告转化率:= 广告点击 / 广告展示*100%。具体去pv还是uv做除法,看实际应用时的衡量维度。

    展开全文
  • android 广告展示

    2015-08-13 15:28:13
    广告显示,文件里面有多个案例,各自根据自己的需要选择自己的所需
  • 7、如何创建亚马逊站内展示广告.pdf
  • 实现效果: jQuery右下角悬浮广告展示代码,在网站中会有很多形式的广告,在右下角悬浮广告,一般大部分网站都会有,如果你想做下广告的效果,快下载吧!
  • 女性产品展示广告网页模板
  • 广告公司展示网页模板
  • 广告系统展示PPT

    2013-07-20 10:59:21
    最近刚做的一个新的广告系统Demo原型 ,展示PPT,资源
  • 淘宝展示广告点击率分析

    千次阅读 多人点赞 2020-05-07 16:43:22
    Ali_Display_Ad_Click是阿里巴巴提供的一个淘宝展示广告点击率数据集。 三、数据简介 1.原始样本骨架raw_sample: 从淘宝网站中随机抽样了114万用户8天内的广告展示/点击日志(2600万条记录),构成原始的样本骨架。...

    一、 项目背景

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

    二、数据来源

    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
    

    在这里插入图片描述

    展开全文
  • 首页展示特效、广告

    2019-10-27 13:10:48
    首页展示特效、广告
  • 广告切换展示

    2014-12-15 17:18:39
    滑动展示图片的实例,包括上下,左右切换,很实用、
  • 展示量合约广告

    千次阅读 2018-12-09 16:23:57
    实际上,互联网主流的品牌广告投放方式是按照CPM结算的展示量合约。展示量合约指的是约定某种受众条件下的展示量, 然后按照事先约定好的单位展示量价格来结算。这种合约还有一个名称,就是担保式投送即GD,其中的...

      广告位合约的方式并非互联网广告的主流,哪怕是以品牌为
    目的的投放。实际上,互联网主流的品牌广告投放方式是按照CPM结算的展示量合约。展示量合约指的是约定某种受众条件下的展示量, 然后按照事先约定好的单位展示量价格来结算。这种合约还有一个名称,就是担保式投送即GD,其中的“担保”指的就是量的约定。实际执行中,在未能完成合约中的投放量时,可能要求媒体承担一定的赔偿。

      很多情况下,我们也会把展示量合约通俗地称为“CPM 广告”。实际上,CPM 广告还包括另一种按 CPM结算,但是不约定展示量的售卖方式,如广告交易市场中的广告售卖。而那样的非保量CPM实际上属于竞价广告而非合约广告,其商业逻辑差别较大。因此,这里我们采用展示量合约的说法。

      我们从供给方和需求方两方面来看这种售卖方式出现的合理性。媒体从按固定广告位售卖变为按CPM售卖,初衷是为了在受众定向的基础上提高单位流量的变现能力,可是面向的仍然是原来的品牌广告主。广告主按广告位采买时,比较容易预估自己拿到的流量,可是按照人群定向的方式采买,流量有诸多不确定的因素。因此,需求方希望在合约中加入对量的保证,才能放心采买。

      展示量合约虽然以人群为显式标的进行售卖,但是请注意一个非常重要的事实展示量合约并没有摆脱广告位。这是由于在 CPM 这种结算方式下,无法将多个差别很大的广告位打包成同一售卖标的,因为这些广告位的曝光有效性可能差别巨大,合理的CPM也相应地大幅变动。实践中的展示量合约往往是以一些曝光量很大的广告位为基础,再切分人群售卖,最典型的例子是视频网站的贴片位置或者门户网站首页的广告位。

      虽然从交易模式上来看,展示量合约仍然是比较传统的交易模式,但是从技术层面上看,这种模式的出现实际上已经反映了互联网广告计算驱动的本质:分析得到用户和上下文的属性,并由服务端根据这些属性及广告库情况动态决定广告候选。这一商业模式的出现,需要有一系列技术手段的支持,这些手段主要包括受众定向、流量预测和担保式投放等。其中受众定向是在线广告非常重要的核心问题,被各种广告产品广泛使用

    参考文档
    《计算广告学》

    展开全文
  • 电梯,楼盘等海报/广告展示样机PSD素材下载 产品样机、地铁广告展示样机素材、宣传海报展示样机、海报样机、高端样机
  • 滑动图片展示广告效果
  • 全屏广告展示源代码 html+jquery
  • MINI Cooper广告展示(动画是亮点)
  • 淘宝内部优惠券广告展示系统是一个以php进行开发的淘宝优惠券广告展示软件。 特色说明: 适合拥有自己内容(网站app等)和人气资源的广大朋友们! 兼容性:兼容windows/linux系统;上传数据支持gb2312/utf-8编码。 易...
  • js广告展示特效

    2011-11-01 18:01:38
    js广告展示特效 js广告展示特效 js广告展示特效
  • 在当今竞争日益激烈的市场环境下,尤其是在中国的特定国情下,Google的搜索市场份额相对下滑,谷歌展示广告网络可以说是成功与否的杀手锏。如果你是做品牌推广,那么谷歌强大的内容网络合作伙伴和广告位置是你的不二...

            在当今竞争日益激烈的市场环境下,尤其是在中国的特定国情下,Google的搜索市场份额相对下滑,谷歌展示广告网络可以说是成功与否的杀手锏。如果你是做品牌推广,那么谷歌强大的内容网络合作伙伴和广告位置是你的不二选择,你的广告可以投放到赶集,58等本地网站,新浪网、凤凰网等门户网站,以及数以百万计的中小网站和垂直行业网站。如果你在做直效广告,那么通过再营销和关键词定位、兴趣定位等方式,你可以在扩大用户基数的同时,以更低的价格获得较为精准的流量,从而在降低转化成本的同时提升转化数量。

             内容广告是一个非常好的东西,但是很多人可能并不敢轻易尝试或者不懂得如何去做优化,从而产生一种极端偏见:内容广告虽然cpc便宜,但是太多“垃圾网站”产生巨量的“无效”点击,它们简直就是在浪费钱!

            其实,谷歌的内容广告有着多种定位方式,你完全可以过滤掉各种无效流量,你需要具备做好几项基本准备:分析和研究你的目标用户,搜索和内容广告毕竟是不同的,一个是“饥渴型”的用户在找你,一个是“扫描型”的用户看到了你,即分别为主动搜索和被动接收。因此,你的广告语可能需要有不同是价值诉求,在内容广告上可能需要更具吸引力,更具针对性,更符合内容浏览型用户的口味。当然,内容广告有不同的表现形式,文字只是其中一种,还有图片、flash、视频等富媒体表现形式,在文章型网站上,图片等富媒体的点击率和效果可能会好些,而在分类网站等类型的网站中,有的位置可能只支持文字广告,其实由于他们就在普通文字的上面,看起来也很像网站的内容,因此效果可能也会不错。

            以上所述,都是可能。做广告优化的过程就是降低可能性,并且最终将可能的概率不断提升,表现出来的效果就是ROI提升。

    The Definitive Guide to AdWords Display Targeting

    The Definitive Guide to AdWords Display Targeting

    谷歌内容广告主要有以下几种定位形式,通常也建议你使用单独的广告系列将他们独立开来,从而方便管理预算,出价,优化广告语和各种定位方式:

    1.关键词定位。

    2.展示位置定位。

    3.兴趣定位。

    4.主题定位。

    5.再营销。

    6.DCO。

    关于这些广告系列的基本设置,在此也不再累赘,请参看Google AdWords的帮助中心,这几个是重点和难点,需要重点把握:

    展示广告网络入门指南

    您的广告在展示广告网络中的展示位置取决于您的定位方法

    出价在展示广告网络中的用法

    评估展示广告网络上的广告效果

            当你看完这几篇帮助文档之后,相信你对内容广告也有了一个更深的认识和了解。你首先需要明确自己的推广目标,然后通过各种组合投放自己的内容广告,基于报告分析不断优化效果。内容广告的基本过程就是:先广泛覆盖,再细化精准,并逐步通过自动优化工具自动优化,再自动化的过程中进行筛选和细微调整。

            建立内容广告系列的一般流程是:首先建立关键词定位,关键词+主题或者关键词+兴趣等进行初步定位,通过上述方式得出的展示位置提取出来建立展示位置定位(或配合其他组合方式)广告,当积累到一定再营销用户数量之后使用再营销广告,通过对数据的分析对上述定位方式不断细化,添加否定关键词或展示位置,调整相关组合的出价,调整广告语。一般而言,内容广告的点击率会较低(比如0.5%),cpc也较低(比如搜索广告的一半价格),转化率也可能相对较低(比如搜索广告的2/3),但是总体而言,你会发现,转换成本和最终的ROI一般会更好。没有达到,只有3种原因:时间太短(内容广告的转化周期相对较长),定位方式和出价或广告语等账户操作没有做到位,所推广产品或服务可能不适合使用于内容广告。

            在内容广告上线初期,我的一般做法是只做关键词广告并且使用所有的广告格式,全天候整个区域无限制投放,一方面收集再营销用户,另外一方面收集相关展示网址,再则可以测试广告语和收集各个城市和时段的点击和转化情况,还可以强势推广新产品或服务,而兴趣和类别则是需要对目标用户有着深入的分析了解之后才能做的,需要不断调整优化。做内容广告的话,你可能更需要关注辅助转化。通过搜索渠道和启用浏览型转化,你可以查看到一部分相关的数据。

    在看到展示广告的消费者中,有五分之一的人会执行相关搜索,三分之一的人会访问相关网站。信息来源:“无声的点击:打造在线品牌”(The Silent Click: Building Brands Online),Online Publishers Association,2009 年6月最近的一项研究显示,与没有看到展示广告的用户相比,看到此类广告的用户访问相应广告客户网站的可能性提高了 268%,浏览的网页数量平均多出了 355%。信息来源:comScore 在线固定样本组调查结果;调查总数:67 项调查。

    做内容广告通常还需要进行的一项设置是对类别进行排除,比如排除域名停放网站,带有性或者暴力内容网站,死亡、恐怖、灾难,视频,直播等类别的网站。这些类别的网站一般效果会较差,建议排除,具体根据需要。

            展示频次是在做内容广告时建议设置的选项,一般而言,除非在初级阶段进行产品的广泛宣传,那么设置一个较低的展示频次对于控制无效展示盒提升CTR 是非常不错的。对于不同行业和产品或服务,可能需要进行不同的测试,一般个人习惯会设置为每个广告每日最多展示5次。当然,对于再营销广告系列,可能需要区别对待。

    做优化,其实无外乎有几点:定位更精准,出价更优化,平衡收支点,提升转化数。定位方式,同搜索广告类似,一般可以做地理位置精简,时段精简,关键词否定,展示位置否定。最近兴起的社交网络也是一个建议开启的选项。出价及其后面的几个方面,需要看你的目标,不能一概而论,尤其是针对老板的:“这些关键词必须保证前三或第一位”,如同招商银行对于客服的规定:“必须等客户挂断电话之后才能挂断”。实在让人哭笑不得!

    内容广告的效果一般而言在初期是非常的差的,但是随着优化的进行,效果会越来越好。如果你使用过DCO的话,对于这点的体会会更深些。

    最近在进行另外一项测试,就是将再营销代码放置到其他大流量的相关网站,发现效果也是非常的不错,这就相当于你在更广泛的受众中进行挑选,而这部分受众也是相关的。百度的精准广告原理也大抵如此吧。其他一些国外的再营销公司,他们的做法其实也是类似于此。你首先需要对用户数据进行收集,然后再对这部分用户进行筛选并针对性的推送广告。

             如果你们旗下有很多网站或者频道,并且受众具有某种重合度,那么这是一个非常好的方法,有点类似对于老客户的深度挖掘,但是这却是无形的广告和印象加深。

    现在,AdWords的内容广告已经支持广告组层级的定位设置了(在广告系列设置中设定,一旦选定无法还原,目前处于测试阶段,后续默认会使用这个选项)。现在,AdWords也改版了内容网络的选项卡,并且那个交集示意图实在是太形象了,一步了然明白你在做什么,会使用哪个出价或者达到什么定位目标。

            如果你未曾使用过内容广告,那么现在正是时候!在某些行业,搜索广告竞争那是非常的激烈,并且在中国覆盖面极其有限,再加上某些巨头公司的超级垄断策略,你可能几乎没有生存的余地!同时,在某些行业,历史记录可能就是那么样,你的质量得分就永远是不到5分,这种情况下,你还在硬撑、死撑,还是死不悔改呢?

    展开全文
  • android端的类似广告轮询切换的效果,详情请看:http://blog.csdn.net/jan_s/article/details/44035523
  • 我们发现展示广告会影响客户对广告品牌及其竞争对手的搜索。 我们利用自然实验来随机分配5亿次访问Yahoo!的广告投放。 主页,并比较访客在Yahoo!上的后续活动搜索。 在三个广告客户的广告系列中,展示广告将广告品牌...
  • 行业分类-物理装置-具有广告展示功能对商品无遮挡的冷藏展示柜.zip
  • 网站右下角广告展示代码简介: 网站右下角广告展示代码是一款悬浮在网站右下角的可最小化和关闭的广告展示代码。
  • 网站右下角广告展示代码是一款悬浮在网站右下角的可小化和关闭的广告展示代码。
  • led广告展示.zip

    2019-07-16 10:35:23
    led广告展示
  • 什么是SDK广告

    千次阅读 2021-03-12 09:53:13
    付米聚合,创立于2015年,建有国内响应速度快、容量高、...什么是SDK SDK的英文全名是:software development kit,翻译成中文的意思就是“软件开发工具包”通俗一点的理解,是指由第三方服务商提供的实现软件产品
  • 行业分类-物理装置-一种广告展示装置.zip
  • 在线社交网络中基于主题的社交展示广告投放算法,孙陈娜,程祥,社交展示广告近年来成为数字营销的主流方式之一,是在线社交网络中具备社交形态和功能的展示广告,现有研究利用社交影响力提高广
  • jQuery右下角悬浮广告展示代码是一款常见的网页广告展示特效,它可以从右下角缓慢升起,展示一定时间自动消失,并且可以改成网站消息提示窗口。
  • 随鼠标漂移的广告展示

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 89,640
精华内容 35,856
关键字:

展示广告是什么