前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >贝叶斯系列——贝叶斯与其他统计流派的区别和联系

贝叶斯系列——贝叶斯与其他统计流派的区别和联系

作者头像
机器学习算法工程师
发布2018-03-06 12:22:21
1K0
发布2018-03-06 12:22:21
举报

作者:沈伟臣

编辑:张 欢

前言

了解概率统计的同学都知道有频率学派和贝叶斯学派两种统计流派,那么频率学派和贝叶斯学派到底有什么区别呢?本篇文章分为三部分,首先介绍几种基本概率模型,然后介绍贝叶斯平滑在广告点击率(CTR)预估中的应用。首先介绍概率统计上的三种基本概率模型。

古典模型

这个模型下,随机实验所有可能的结果是有限的,并且每个基本结果发生的概率是相同的。举例:投掷一枚均匀硬币,结果只有两种(假设硬币没有立起来),正面朝上和反面朝上,那么正面朝上的的概率就是0.5。这是基于古典概率模型的计算。

频率学派

认为待估计参数是某个未知的常量,通过多次试验,统计事件发生的次数占总试验的比值,得到待估计参数的值。举例:估算投掷一枚均匀硬币获得正面的概率。我们进行1000次试验,有498次朝上,所以得到正面的概率是0.498。

贝叶斯学派

认为待估计参数不是某个固定的常量,而是一种随机变量(服从某种分布)。关于这个随机变量,我们可以根据常识或其他客观事实对其有一个先验的分布估计(信念),之后根据试验来调整这个分布,最后求得该随机变量的后验分布。 这种思想解决了频率学派试验中当试验次数过少而导致的试验偏差的问题,比如,投掷一枚匀质硬币5次,这5次都是正面朝上,根据频率学派观点,认为硬币投掷正面朝上的概率是P(正面朝上)=5/5=1,这显然是不符合常理的。 举例: 现在定义事件A=(投掷一次硬币正面朝上),B=(投掷5次硬币,5次朝上)。在贝叶斯的框架下,我们根据常识认为投掷硬币正面朝上的概率是0.5,所以我们可以假设这个先验服从参数为Beta(10,10)的分布,然后根据贝叶斯定理可计算出在事件B发生的条件下的A的概率分布为分布Beta(15,10),这个分布的期望值是0.6。通过贝叶斯框架,我们计算出硬币正面朝上的概率仍然是一个接近0.5的值,更加符合我们的常识。(关于Beta分布和后验概率的具体计算会在以后的文章具体介绍) 下图是分别绘制的先验分布Beta(10,10)(蓝色)和后验分布Beta(15,10)(绿色) 。

从哲学的角度讲,频率学派认为概率是客观的,贝叶斯学派则在概率中加入了主观的因素。

在广告转化率预估的预测中,广告对应的历史转化率经常是一个重要的特征。一般而言,某个广告的转化率会围绕一个值上下波动,在使用历史转化率做特征时,如果简单的使用频率学派的转化量除以点击量计算转化率,会发现转化率随着天数的不同会产生巨大的波动,这并不利于模型的训练。如果我们使用贝叶斯平滑,一种简单的做法是使用广告的历史转化率作为先验,并假设其服从Beta分布,假设广告的转化行为服从伯努利分布(事实上这个假设是有偏差的,伯努利分布假设每次事件发生是相互独立,而广告的的转化行为是存在上下文关系的)。那么我们可以根据每天的点击量和转化量来计算转化率的后验分布,并且使用后验分布的均值作为平滑的的转化率。一个简单的平滑函数如下。factor因子为控制平滑程度的参数,其本质是通过改变分布的有效样本量来控制先验和后验的权重的。

代码语言:javascript
复制
/*clicks  点击量list  conversions 转化量list  factor 平滑因子,
该因子越小,结果越平滑*/     

   def gen_smooth_cvr(clicks,conversions,factor=1): 
   smooth_cvr = []   

   sum_a = 0    

   sum_b = 0  

  /*计算先验*/  
   a = conversions.mean()    

   c = clicks.mean()    

   b = c-a       

 /*遍历日志*/

    for conv,clk in zip(conversions,clicks):   

 /*添加后验分布均值到结果列表*/  
    smooth_cvr.append(beta.mean(a+conv,b+(clk-conv)))       
     a += conv        

     b += (clk-conv)        

     a /=factor        

     b/=factor    

     return smooth_cvr 

当使用factor默认参数即factor=1的时,平滑后的结果如下图蓝色折线。可以看到有一点过度平滑了。下面调整factor,令其为1.5。

factor=1时的平滑结果

factor=1.5时的平滑结果。

我们再尝试一下factor=1.25时的平滑结果。

factor =1.25时的平滑结果。

这时可以使用其作为平滑后的转化率特征进行训练。

理解了贝叶斯系列了吗?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习算法全栈工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档