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

作者:沈伟臣

编辑:张 欢

前言

了解概率统计的同学都知道有频率学派和贝叶斯学派两种统计流派,那么频率学派和贝叶斯学派到底有什么区别呢?本篇文章分为三部分,首先介绍几种基本概率模型,然后介绍贝叶斯平滑在广告点击率(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因子为控制平滑程度的参数,其本质是通过改变分布的有效样本量来控制先验和后验的权重的。

/*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时的平滑结果。

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

理解了贝叶斯系列了吗?

原文发布于微信公众号 - 机器学习算法全栈工程师(Jeemy110)

原文发表时间:2017-08-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据科学与人工智能

【陆勤阅读】机器学习算法基础知识

可利用的算法非常之多。困难之处在于既有不同种类的方法,也有对这些方法的扩展。这导致很快就难以区分到底什么才是正统的算法。在这个帖子里,我希望给你两种方式来思考和...

2007
来自专栏数据科学与人工智能

人工神经网络简介

概要:人工神经网络简称神经网络,是基于生物学中神经网络的基本原理。 一、人工神经网络的概念 人工神经网络(Artificial Neural Network,...

3577
来自专栏AI科技评论

卷积神经网络(CNN)新手指南

引言 卷积神经网络:听起来像是生物与数学还有少量计算机科学的奇怪结合,但是这些网络在计算机视觉领域已经造就了一些最有影响力的创新。2012年神经网络开始崭露头角...

3034
来自专栏喔家ArchiSelf

全栈必备 贝叶斯方法

对一个全栈老码农而言,经常在开发或者研发管理的时候遇到各种预测、决策、推断、分类、检测、排序等诸多问题。面对“你的代码还有bug么?”这样的挑战,一种理智的回答...

913
来自专栏AI科技评论

开发 | AI股市预测实战:用LSTM神经网络预测沪深300未来五日收益率

LSTM Networks(长短期记忆神经网络)简介 LSTM Networks 是递归神经网络(RNNs)的一种,该算法由 Sepp Hochreiter...

2675
来自专栏目标检测和深度学习

你不得不了解的8种神经网络结构!

机器学习已经在各个行业得到了大规模的广泛应用,并为提升业务流程的效率、提高生产率做出了极大的贡献。目前机器学习主要在以下方面应用: 模式识别:实际场景中的目标、...

3798
来自专栏张俊红

机器学习中非平衡数据处理

总第97篇 这一篇主要说一下机器学习中非平衡数据的处理方式以及用python如何实现. 在前面的一篇推文中我们提到过,非平衡数据会影响最后的评判效果,严重的会...

3415
来自专栏机器之心

入门 | 10个例子带你了解机器学习中的线性代数

1366
来自专栏机器之心

前沿 | CNN取代RNN?当序列建模不再需要循环网络

在这篇博文中,我们来探讨循环网络模型和前馈模型之间的取舍。前馈模型可以提高训练稳定性和速度,而循环模型表达能力更胜一筹。有趣的是,额外的表现力似乎并没有提高循环...

941
来自专栏机器学习算法与Python学习

必须了解的8种神经网络架构

机器学习已经在各个行业得到了大规模的广泛应用,并为提升业务流程的效率、提高生产率做出了极大的贡献。目前机器学习主要在以下方面应用: 模式识别:实际场景中的目标...

2885

扫描关注云+社区