一、业务背景

  1. 传统广告与在线广告区别?
    传统广告: 类似电视广告,报纸媒体、杂志、广播、户外媒体等。
    在线广告: 类似百度搜索广告,facebook页面展示广告。
    区别:在线广告更多与用户相关,例,在google上搜索“kids shoes”,则会出现与搜索相关的一些带有广告标签(“Ad”)的连接。例如,淘宝中带有hot标签的物品。
    注: 国家规定如果是广告的话,必须带有广告标签。
  2. 传统广告与在线广告区别?

    通过上图可以看到,互联网广告回报率近年来不断上升,主要是存在许多商家对曝光的需求度较高。而且这种在线广告是于用户相关的,而不是一些硬性的广告。例如: google公司广告收入占总收入的90%,所以其他
  3. 在线广告投放类型
    Retarget 基于用户行为的广告: 用户在网站中浏览的一些信息,进行广告投放。
    Behavior: 用户在京东和淘宝中浏览一些物品,如果你跳转到一些其他网站,则会发现有一些你曾经看过的一些物品
    GEO基于位置: 例如美观点评, 例如用户吃饭。
  4. 广告角色
    平台方:提供广告展示的平台,例如腾讯,百度等
    用户方: 即浏览广告的用户
    商家: 需要曝光商品的商家。
  5. 广告收费模式
    1) 按曝光收费: 按每曝光多少次收费,这类一般是展示广告,例如腾讯多是展示广告
    2) 按点击预估: 点击后收费,特别是百度搜索广告(特别是医疗广告,每点击一次100~200元),淘宝直通车(淘宝大概点击一次2元左右)。
    3) 按购买预估: 按购买后收取广告费。这种比较少,广告费比较高,但是一旦发生则利润非常高。
  6. 点击率计算方式(CPC)
  7. 点击率预估
    可展示广告位置与次数是有限,所以需要尽可能的将用户可能点击的广告展示给用户,使得最终广告费最大。因此需要做点击率预估。
  8. 广告特征提取
    商品角度: 是不是热销商品, 评价率,退货率等,即可表现商品的质量
    广告内容: 搜的蓝色牛仔裤,搜索结果是否接近我搜索关键词,也会影响用户点击。
    用户偏好: 有些一用户喜欢个性,不喜欢大众的

二、LR做CTR预估

  1. 背景

    https://www.kaggle.com/c/avazu-ctr-prediction/rules
    kaggel广告点击率预估案例

  2. code

#load数据
import pandas as pd
data = pd.read_csv('train_small.csv', verbose=False)
data.shape
#import graphlab as gl
#data = gl.SFrame.read_csv('train_subset.csv', verbose=False)
#数据包含列及类型了解
data.info()
#数据概览
data.head(10)
#click点击率baseline
data['click'].mean()
#数据探索
#data.groupby('device_type', {'CTR':gl.aggregate.MEAN('click')})
data['device_type'].groupby([data['device_type'],data['click']]).count()
#数据探索
#data.groupby('C1', {'CTR':gl.aggregate.MEAN('click')})
data['C1'].groupby([data['C1'],data['click']]).count()
#数据探索
#data['C15'].sketch_summary().frequent_items()
data['C15'].groupby([data['C15']]).count()
#数据探索
#data['C16'].sketch_summary().frequent_items()
data['C16'].groupby([data['C16']]).count()
#实际为分类变量但存储为int, 此处转换为字符串
data['device_type'] = data['device_type'].astype(str)
data['C1'] = data['C1'].astype(str)
data.info()
#训练集与测试集切割
#train_data, test_data = data.random_split(0.8, seed=1)
from sklearn import cross_validation #交叉验证
train_data, test_data = cross_validation.train_test_split(data, test_size=0.3, random_state=0) #模型训练
model_feature='click|device_type|C1|C15|C16'
model_index=['click','device_type','C1','C15','C16']
train_df = train_data.filter(regex=model_feature)
index=model_index
train_df=train_df.reindex_axis(index,axis=1)
train_df.info()from sklearn import linear_model #训练模型
x_train=train_df.as_matrix()[:,1:]
y_train= train_df.as_matrix()[:,0]
clf = linear_model.LogisticRegression(C=1.0, penalty='l1', tol=1e-6)
clf.fit(x_train,y_train)#保存模型
from sklearn.externals import joblib #保存模型
joblib.dump(clf, "train_model.m")#模型权重与偏执项
clf.coef_.T,clf.intercept_[0]#model.predict(test_data, output_type='probability').head(5)
#将模型权重与属性对应
import re
from pandas import Series,DataFrame #数据存储结构
import pandas as pd #数据分析
replace_reg = re.compile(r'\[|\]')
coef_feature=pd.DataFrame({"columns":list(train_df.columns)[1:], "coef":[replace_reg.sub('',str(value)) for value in list(clf.coef_.T)]}) #系数与属性对应
coef_b=Series({ 'columns':'intercept_','coef':str(clf.intercept_[0])})
coef_feature=coef_feature.append(coef_b,ignore_index=True)
coef_feature#预测数据处理
cv_df = test_data.filter(regex=model_feature)
index=model_index
cv_df=cv_df.reindex_axis(index,axis=1)
x_test=cv_df.as_matrix()[:,1:]
y_test=cv_df.as_matrix()[:,0]
x_test,y_test#模型预测
proba=clf.predict_proba(x_test)[:,1]
test_data['proba']=proba
predictions=clf.predict(x_test)
test_data['predictions']= predictions
#test_data['proba'] #预测概率查看#模型评估
from sklearn.metrics import precision_recall_curve, roc_curve, auc  #模型效果评估
from sklearn.metrics import classification_report #
precision, recall, thresholds = precision_recall_curve(y_test, test_data['proba'])
precision, recall, thresholds
report = test_data['proba'] > 0.5
#type(y_test[0])
y_test=[int(x) for x in y_test] #lable是字符串型,需要转换为int型
report_result=classification_report(y_test, report, target_names = ['neg', 'pos'])
report_result

3、结果
训练权重

模型评估

kaggle案例:广告点击率预估+LR相关推荐

  1. Kaggle实战:点击率预估

    版权声明:本文出自程世东的知乎,原创文章,转载请注明出处:Kaggle实战--点击率预估. 请安装TensorFlow1.0,Python3.5 项目地址: chengstone/kaggle_cri ...

  2. 业余草推荐阿里妈妈自研广告点击率预估核心算法MLR

    业余草推荐阿里妈妈自研广告点击率预估核心算法MLR. 小编觉得CTR(广告点击率)预估的能力对于广告系统的意义和重要性,类似于在证券市场上预测股价的能力,优秀的CTR预测,通向美好和财富...(以下转 ...

  3. 计算广告(一)【Ad Click Prediction: a View from the Trenches】工程实践视角下的广告点击率预估

    计算广告(一)Ad Click Prediction: a View from the Trenches --工程实践视角下的广告点击率预估 这是谷歌发表于KDD2013的一篇文章,从年份来看,已经有 ...

  4. 微信公众号广告点击率预估效果优化

    [转载]微信公众号广告点击率预估效果优化_腾讯大数据 http://data.qq.com/article?id=2914 1.背景 点击率预估(pCTR)是广告投放过程中的一个重要环节,精准的点击率 ...

  5. 效果广告点击率预估实践:在线学习

    效果广告点击率预估实践:在线学习 原创 2016-03-24 腾讯大数据 腾讯大数据 1.引言 技术钻研如逆水行舟,不进则退.公司的广告业务发展非常迅猛,有目共睹,激烈的外部竞争和客户越来越高的期望, ...

  6. 对“科大讯飞2021丨广告点击率预估挑战赛 Top1方案(附完整代码)_Jack_Yang的博客-CSDN博客”的补充。

    这篇文章的初衷是针对科大讯飞2021丨广告点击率预估挑战赛 Top1方案(附完整代码)_Jack_Yang的博客-CSDN博客进行补充. 博客的信息量很少,对任务背景的介绍也不太对,说实话令人费解.我 ...

  7. 大规模推荐引擎和广告点击率预估引擎中的TopK计算

    转自:https://chuansongme.com/n/2035198 推荐引擎的研究结果成千上万,绝大部分工作都来自于矩阵分解或者类似,在针对用户和Item分别训练出特征向量之后,根据向量内积计算 ...

  8. 大数据建模之广告点击率预估

    一.数据和样本 广告点击率(click through rate,CTR)预估的问题通常被转化为一个分类问题:在给定网民 u(user).广告 i(item).环境 e (environment) 的 ...

  9. 精准营销:剖析广告点击率预估系统

    引文 点击率预估系统最早是由谷歌实现,并应用在其搜索广告系统.在看到这一大杀器为谷歌带来滚滚财源之后,其他公司也纷纷效仿.直到今日,大大小小的"互联网广告公司",都宣称自己掌握了基 ...

最新文章

  1. lsa五类_OSPF外部路由4类5类LSA
  2. HighNewTech之5G网络:带你了解5G网络的前世今生—两张长图帮你捋清思路
  3. leetcode 978. Longest Turbulent Subarray | 978. 最长湍流子数组(Java)
  4. 1097 Deduplication on a Linked List (25 分)_35行代码AC
  5. lucene 源码分析_Lucene分析过程指南
  6. 计算机作文叙事,电脑争夺战叙事作文
  7. Git(10)-merge
  8. java使用httpclient封装post请求和get的请求
  9. 第四章 - 数据运算
  10. xcode工程间的引用,iOS静态库
  11. Java基础练习题——查找整数
  12. 帆软教程:报表数据钻取
  13. 好用的网页在线客服工具
  14. XElement.Load 需要释放吗_蚕茧能清洁毛孔吗 蚕茧护肤的正确方法速Get√|蚕茧|清洁-爱美·BEAUTY...
  15. 火爆业界的明星, 下一代存储技术的先行: NVDIMM (下篇)
  16. MMDet踩坑与使用体会
  17. Js实现Flash播放效果[带源码]
  18. Cly的三角形 (思维+斐波那契)
  19. 特征匹配中的欧氏距离
  20. ribbon 远程调用工具(Spring Cloud)

热门文章

  1. 【逻辑与计算理论】从逻辑到计算的转变之路
  2. SpringBoot整合腾讯云COS对象存储实现文件上传
  3. NYU计算机系,NYU的Computer Science and Engineering「纽约大学计算机科学与工程系」
  4. 第八届蓝桥杯 java B组 日期问题
  5. (一)双S型速度规划 原理
  6. dnf锁定计算机,DNF老电脑福音 教你如何提升游戏流畅度
  7. 声明一个Tree(树)类,有成员ages(树龄),成员函数grow(int years)用以对ages 加上years,showage( )用以显示tree对象的ages值。在主函数中定义Tree类对
  8. 象棋棋谱xqf工具包 v2.02 绿色
  9. 【Hexo】Hexo-NexT主题-博客搭建
  10. 使用python生成微信好友个性签名词云图