精华内容
下载资源
问答
  • 模板名称: 响应式服装广告设计模特艺术展示类 织梦模板 (自适应手机端) 模板介绍: 织梦最新内核开发的模板,该模板属于企业通用、服装设计、广告设计、模特艺术类 企业使用,一款适用性很强的模板,基本可以适合各...
  • 响应式服装广告设计模特艺术展示类织梦模板(自适应手机端) 模板介绍: 织梦最新内核开发的模板,该模板属于企业通用、服装设计、广告设计、模特艺术类企业使用,一款适用性很强的模板,基本可以适合各行业的企业网站...
  • numberone-(自适应手机版)响应式服装广告设计类网站源码 摄影写真模特艺术展示类织梦模板.rar
  • 灰色系摄影影集展示广告落地页网站html模板
  • 居民商务服务类广告展览行业展示展览服务领域分析报告(研究报告).pdf
  • 介绍了内容匹配广告展示广告相关技术。 本博客记录观看品牌展示广告部分的一些笔记, 绝大多数为原slide内容,只做简单的整理。 1. 基本概念 展示广告分类  按广告作用分类:品牌广告(Brand Disp
    第三期百度计算广告学沙龙(  http://wenku.baidu.com/course/view/1488bfd5b9f3f90f76c61b8d  ) 介绍了内容匹配广告和展示广告相关技术。
    本博客记录观看品牌展示广告部分的一些笔记, 绝大多数为原slide内容,只做简单的整理。

    1. 基本概念


    展示广告分类

         按广告作用分类:品牌广告(Brand Display); 直效广告(Direct Response)
         按创意形式分类:图片,图文,富媒体,视频,Email

    广告和营销场景


         影响品牌展示广告的主要因素
              1. 人; 2. 品牌自身; 3. 媒体(覆盖率/质量,知名度); 4. 创意形式(消息)
     

    2. 售卖

    品牌展示广告售卖的参与者

         1. 消费者/在线用户; 2. 广告主; 3. 广告代理商; 4. 媒体; 5. 售卖平台

    品牌展示广告售卖的方式

         1. 包段
              某组广告位一段时间内由一个广告主独占或几个广告主轮播
              计价方式: CPD
              特点:1.简单,易组织; 2. 广告主承担流量变化风险; 3. 无法区分同一位置不同时间不同用户的价值(无法最大化广告主和媒体双方的价值)
         2. GD合同制
              以一定CPM预约符合定向规则,时间规则和其他规则的一定数量的广告展现
              定向规则: 1. 人群定向; 2. 媒体位置定向
              其他规则: 1. Frequency Capping; 2. 投放均匀度
              广告主需要支付相应的费用, CPM*实际广告展现
              当实际广告展现无法达到约定时, 售卖方对广告主进行补偿
         3. NGD拍卖式售卖
              剩余流量:现有包段或GD合同之外的流量
              媒体售卖率: SellThroughRate = SoldImpressions / Capacity
              通常选择是将剩余流量交给网络联盟或者Ad Exchange进行基于拍卖的售卖

    3. 精准投放技术

         营销目标:正确的时间,正确的场合,最正确的人说适合的内容
         精准投放(Targeting): 在上述因素中,根据广告内容进行精确匹配做到正确

         媒体定向(Media Focused Targeting)
              Offline投放形式:1. 户外; 2. 报纸杂志; 3. 电视; 4. 广播
              Online投放形式:1. 定位到站点; 2. 定位到页面关键词
              特点:1. 时间性; 2. 粒度;3.真正想定位什么?

         受众定向(Audience Focused Targeting)
              Demographic(性别,年龄,职业,收入等)
                   数据收集,数据整合, 属性预测与机器学习技术
              Geographic (家庭地点,工作地点,常见地点,实时地点; 地点周边信息,如商业配套等)
                   数据收集,数据整合,商业场景
              Lifestyle/Psychographic (生活习性,偏好,兴趣爱好等等)
                   数据采集,品牌市场细分与洞察,用户行为分类技术
              Re-targeting/Re-messaging (用户与商家说产生的历史互动)
                   线上线下数据的贯通,线上用户行为记录
              Behavioral (用户的在线行为,包括搜索和网页浏览等)
                   用户行为与商品关联理解与洞察,用户行为基础分类技术,特征提取和机器学习技术

         智能创意

    4. 品牌展示广告的基本问题

         订单接受控制(Admission Control)
              系统应该接受还是拒绝订单:雅诗兰黛,下周7天,定向25-35岁女性,投放新浪女性等20个站点,CPM12元,目标5千万展现
         库存分配
              根据目前已确认的所有订单,应该如何分配广告展现机会到每一个订单
         库存分配扩展问题
              考虑:广告主希望在订单时期内均匀输出广告展现
              考虑:当同时向GD和NGD进行售卖时,优化总体总收益
                   Reference:Bidding for Representative Allocations for Display Advertising. (WINE 2009. Arpita Ghosh etc)
         价格体系
              价格是基于销售和谈判的。但对于这个谈判,有没有一个价值指引?

    5. 效果评测

         品牌广告问卷调查
              对符合测试组和对比组的用户/cookie进行均匀采样
         互动指数(Engagement Index)
              量化用户与品牌间的各种互动E_i, 得到最终的互动指数 EngagementIndex = sigma(W_i *E_i)
         从广告影响方式的角度
              Reach; Frequency/频次; Dwelling-time/Brand Exposure; 媒体综合质量; 创意互动程度
         

    展开全文
  • 互联网广告分类

    千次阅读 2017-03-17 09:08:46
    互联网广告分类 CPA(Cost Per Action) 每行动成本 CPA(Cost Per Action) 每行动成本。CPA是一种按广告投放实际效果计价方式的广告,即按回应的有效问卷或注册来计费,而不限广告投放量。电子邮件营销(EDM)现在...

    互联网广告分类

    CPA(Cost Per Action) 每行动成本

    CPA(Cost Per Action) 每行动成本。CPA是一种按广告投放实际效果计价方式的广告,即按回应的有效问卷或注册来计费,而不限广告投放量。电子邮件营销(EDM)现在有很多都是CPA的方式在进行。


    CPS(Cost Per Sales):以实际销售产品数量来换算广告刊登金额

    CPS(Cost Per Sales):以实际销售产品数量来换算广告刊登金额。CPS是一种以实际销售产品数量来计算广告费用的广告,这种广告更多的适合购物类、导购类、网址导航类的网站,需要精准的流量才能带来转化。

    CPM(Cost Per Mille) 每千人次成本

    CPM(Cost Per Mille) 每千人成本。CPM是一种展示付费广告,只要展示了广告主的广告内容,广告主就为此付费。

    CPT(Cost Per Time) 每时间段成本

    CPT(Cost Per Time) 每时间段成本。CPT是一种以时间来计费的广告,国内很多的网站都是按照“一个星期多少钱”这种固定收费模式来收费。

    CPC(Cost Per Click;Cost Per Thousand Click-Through) :每次点击的费用

    CPC(Cost Per Click) 每点击成本。CPC是一种点击付费广告,根据广告被点击的次数收费。如关键词广告一般采用这种定价模式,比较典型的有Google广告联盟的AdSense for Content和百度联盟的百度竞价广告。
    以每点击一次计费。这样的方法加上点击率限制可以加强作弊的难度,而且是宣传网站站点的最优方式。目前Google Adsense就采用此方式。

    CPL(Cost Per Leads):以搜集潜在客户名单多少来收费

    即每次通过特定链接,注册成功后付费的一个常见广告模式。这是我们通常称谓的引导注册,比如很久之前很火爆的“亚洲交友联盟”。

    CPR(Cost Per Response): 每回应成本

    以浏览者的每一个回应计费。这种广告计费充分体现了网络广告“及时反应、直接互动、准确记录”的特点,但是,这个显然是属于辅助销售的广告模式,对于那些实际只要亮出名字就已经有一半满足的品牌广告要求,大概所有的网站都会给予拒绝,因为得到广告费的机会比CPC还要渺茫。

    CPP(Cost Per Purchase) :购买成本
    广告主为规避广告费用风险,只有在网络用户点击旗帜广告并进行在线交易后,才按销售笔数付给广告站点费用。
    无论是CPA还是CPP,广告主都要求发生目标消费者的“点击”,甚至进一步形成购买,才予付费:CPM则只要求发生“目击”(或称“展示”、“印象”),就产生广告付费。
    这些网络广告营销形式很多,但并不是所有的形式都合适,根据网站的流量,内容定位来选择一个最合适的方式才能让网络营销利益最大化,目前国内赚的很辛苦但也赚的很可观的是CPS类的淘宝客,另外为了保证广告主的利益,对于流量大的网站、论坛等CPC也是不错的选择。

    CPI(Cost Per Install) : 按安装付费
    比如以手机app为例,每一次安装,广告商就要付钱,而且只要这app一直装着,广告商也只付这一次钱,并且只管你装不装不管你看不看。CPI算是一种比较有效率的收费方式。
    PPC广告  
    根据点击广告或者电子邮件信息的用户数量来付费的一种网络广告定价模式。   

    PPL广告
    根据每次通过网络广告产生的引导付费的定价模式。   

    PPS广告  
    根据网络广告所产生的直接销售数量而付费的一种定价模式。


    展开全文
  • 淘宝展示广告点击率分析

    千次阅读 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
    

    在这里插入图片描述

    展开全文
  • 在当今竞争日益激烈的市场环境下,尤其是在中国的特定国情下,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分,这种情况下,你还在硬撑、死撑,还是死不悔改呢?

    展开全文
  • EasySlide 是以jQuery为基础开发的一个图库展示插件,EasySlide可以将任何一个网页容器(Container)内的图形自动将其排列展示,并加上鼠标指向时的暂停效果(Pause),可以当作图库展示或是动画及广告Banner使用。...
  • 从本节开始,分五次左右的篇幅按照广告类型分别介绍文本广告展示广告中的关键问题。 对于展示广告,从目标来说,主要分为两种:一是品牌广告,为了传播良性的品牌意识。二是直接营销广告,是为了获得...
  • 滚动翻页广告;逐帧显示广告;自动切换广告;角边翻页广告;向上滚动的展示广告;自右向左滚动的展示广告;加载FLASH动画的对称广告;浮动对称广告;可关闭的对称广告;漂浮的广告
  • 展示广告-用户特征提取

    千次阅读 2014-08-03 22:51:35
    用户特征提取  历史query特征: ...1.历史广告点击  2.历史页面浏览  用户分类特征:  时效性:  隐私保护: (未完待续)
  • 展示广告-网页特征提取

    千次阅读 2014-08-03 22:39:36
    页面主题特征 Term赋权:  统计维度:基本的TF*IDF赋权  结构维度:网页结构角度,term 的位置  语义维度:从语义角度理解网页,利用篇章主题  广告库维度:根据关键词的购买信息 ...
  • 2019年3C行业信息流季度投入指数和PC端展示类广告基本追平,因此,移动端整体承载了目前更重的展示类广告份额。 从3C行业细分类型的广告投入来看,IT产品类投指数呈现不断下滑,Q3相比于Q1的下滑幅度30%。消费类电子...
  • google广告分类

    万次阅读 2012-03-28 10:44:57
    Google广告的偏好设置,根据兴趣类别和受众人口统计特点类别来展示广告,可以设置站点Adsense的出现广告的类别,Adsense的分类体系如下: 1、类别:1578,不算多,也不算少。 2、级别:一级大概是26,一般行业下...
  • 第1章内容匹配广告投放技术:网盟概述&工程架构 1.1网盟概述 角色 关注 网站主(Publishers) 用户体验,赚钱 广告主(Advertisers) 投资回报率ROI 网民 ...
  • 展示广告的实时竞价算法浅析

    千次阅读 2014-12-27 22:55:33
    在传统媒体的广告投放平台中,用户和广告主都是被动的:一旦用户接触到媒体,广告就会展现出来。 而在实时竞价的广告体系,广告主会通过第三方平台(DSP)的协助合理地评估每个用户在当前广告位曝光某个商品所产生的...
  • 大广告位展示-淘淘商城

    千次阅读 热门讨论 2017-11-25 20:16:22
    展示首页返回一个逻辑视图,需要把首页大广告位的json数据传递给jsp。 @RequestMapping ( "/index" ) public String showIndex (Model model) { String adJson = contentService.getContentList(); model....
  • 该文是百度文库课程《计算广告学之内容匹配广告&展示广告原理、技术和实践》的课程笔记,感谢百度! 课程地址http://wenku.baidu.com/course/view/1488bfd5b9f3f90f76c61b8d 第四章:品牌展示广告 第四章主要讲...
  • 或者使它成为一个免费的应用程序,添加一些广告,从广告中赚取收入。   如今的趋势表明,用户更有可能下载免费的应用,而不是收费的应用程序。他们只会购买真正值得购买的应用,或者它是超有名气,并获得良
  • 展示广告中冷启动问题的图像特征学习 摘要 1 引言 2 相关工作 3 点击预估问题公式化 4 特征学习结构 4.1 任务分析与结构设计 4.2 视觉元素位置建模 4.3 在一个机器上处理大型数据集 4.4 减少过拟合 4.5 训练...
  • Google广告分类体系

    万次阅读 2010-12-14 10:13:00
    Google广告的偏好设置,可以设置站点Adsense的出现广告的类别,由此可以看出,Adsense的分类体系如下:1、类别:1578,不算多,也不算少。2、级别:一级大概是26,一般行业下是3-4级,只有地理位置达到6-7级。3、...
  • 广告类专业求职简历PPT模板。一份适合广告类专业大学生求职简历PPT模板,采用全图型背景图片设计,包括个人信息、专业学习经历、工作经历、设计软件技能掌握情况、设计作品展示等部分。
  • 1、需求 wx私信问题:Elasticsearch 如何实现类似百度广告置顶显示给定商品数据的效果?置顶显示某特定数据就是:搜索某关键词,出现关联广告置顶显示的效果。举例:百度搜索“电动汽...
  • 广告展示方案 方案一 方案二 内容服务发布 需求 Service层 Controller层 大广告展示 需求 分析 总结 Service层 Controller层 运行项目 大广告展示方案 方案一 jsonp**跨域请求**,从首页...
  • 随着网络广告的不断发展,广告形式有了很大的变化,出现了CPC、CPS、CPM、CPA、CPV、CPR、CPP、CPT等众多广告类型。想要最大化的增加网站收入,就必须要找到合适的广告类型,因此我们需要对这些网络广
  • 阅读APP可行的广告变现入口分析

    千次阅读 2018-12-18 17:58:58
    本次分析是根据小米产品实习生招聘的笔试题所做,原题为:列举图书APP的可行广告变现入口,分析如何通过产品手段,在用户体验和广告变现两者间取得平衡。 二、广告变现入口 查看了市场近10款图书APP,发现有...
  • 广告sdk

    千次阅读 2013-05-20 15:15:45
    比如你想在别人使用你开发的程序时展示广告为你带来收入,你就可以选择下载别人的广告SDK(比如哇棒,admob),调用它们提供的API,API会取得和展示广告,这样你的程序就能在适当的位置显示它们的

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,412
精华内容 21,764
关键字:

展示类广告