zoukankan      html  css  js  c++  java
  • 先验概率、后验概率、似然函数与机器学习中概率模型(如逻辑回归、朴素贝叶斯)的关系理解

    看了好多书籍和博客,讲先验后验、贝叶斯公式、两大学派、概率模型、或是逻辑回归,讲的一个比一个清楚 ,但是联系起来却理解不能

     

    基本概念如下

     

    • 先验概率:一个事件发生的概率 [P(y)]
    • 后验概率:一个事件在另一个事件发生条件下的条件概率 [P(y|x)]
    • 贝叶斯公式:联合概率公式直接能推导出来的,代表什么意义?不放在具体问题中代表不了任何意义 [P(y|x) = frac{{P(x|y)P(y)}}{{P(x)}}]

    拿一个实际的例子,如果用阴天预测是否下雨

     

    • 先验概率:下雨的概率 [P(rain)]
    • 后验概率:已经知道阴天,下雨的概率 [P(rain|cloudy)]
    • 贝叶斯公式:表现了后验概率与先验概率的关系 [P(rain|cloudy) = frac{{P(cloudy|rain)P(rain)}}{{P(cloudy)}}] 
      • 把注意力集中在分子,公式可以理解为:阴天会下雨的概率(后验概率),不仅跟下雨那天的确是阴天的概率(条件概率)有关,还跟下雨本身的概率(先验概率)有关,如果下雨本身概率很低(先验概率=0),即便下雨一定阴天(条件概率=1),那么下雨的概率还是会很低(后验概率=0) [P(rain|cloudy) = frac{{P(cloudy|rain)P(rain)}}{{P(cloudy)}}] 
      • 把注意力集中在分母,公式可以理解为:阴天会下雨的概率(后验概率),不仅跟下雨并且是阴天的概率有关,还跟不下雨也是阴天的概率有关 [P(rain|cloudy) = frac{{P(cloudy|rain)P(rain)}}{{P(cloudy|rain)P(rain) + P(cloudy|norain)P(norain)}}]
    • 似然函数:根据贝叶斯公式得出的先验概率与后验概率的关系参数 [{P(cloudy|rain)}] 由于已经知道是阴天了,忽略P(cloudy) [P(rain|cloudy) propto P(cloudy|rain)P(rain)]

    在很多文献中,将x与y分别描述为“因”和“果”,P(因)即为先验概率,P(因|果)即已经知道结果求原因的概率为后验概率,这里产生了第一个混淆点,在很多现实的例子里,“因”“果”是什么?因为阴天所以下雨?还是因为要下雨所以阴天?

    在上面的例子里,显然只能解释为后者,即这天要下雨是“原因”,阴天是下雨的“结果”,下雨可能引发阴天,也可能引发不阴天。这个理解本身就很别扭。

    在英文中,P(y)先验概率、P(y|x)后验概率、P(x|y)似然函数、P(x)分别的名称为:prior、posterior、likelihood、evidence,最后的P(x)连中文名称都没有,但我个人认为这个才是理解这些概念的关键。

    先说说概率论两大学派,频率学派和贝叶斯学派,频率学派认为事件出现的概率是一定的,贝叶斯学派认为事件的概率也是存在分布的

    • 频率学派:认为事件概率是确定的,所以重复实验解决一切问题,代表算法是最大似然估计MLE,这里常举的例子是硬币的例子,如果抛10次硬币,10次正面向上,则频率学派认为P(抛硬币正面向上)就为1.0。
    • 贝叶斯学派:认为事件概率本身是有分布的,所以引入先验概率(分布)的概念,代表算法是最大后验概率估计MAP,如果认为硬币很可能是均匀的,如果抛10次硬币,10次正面向上,则贝叶斯学派认为P(抛硬币正面向上)是一个介于0.5-1.0之间的数。

    这里是怎么跟上面的先验概率、后验概率、似然函数联系起来的呢,注意频率学派和贝叶斯学派都是参数估计的方法,所以要估计的不是正面或者反面向上,而是模型的参数,P(抛硬币正面向上)其实只是模型参数的一个表现。如果用“因果论”来解释,模型参数即为因,抛硬币结果为正面向上即为果。这里为了避免混淆,许多文献令模型参数为θ,区别于之前使用的y。

    • 先验概率: [P( heta )]
    • 后验概率: [P( heta |x)]
    • 似然函数: [P(x| heta )]

    基于这样的定义,推导两个学派的估计方法

    • 频率学派:使用最大似然估计,即 [mathop {arg max }limits_ heta  (P({x_1},{x_2},...,{x_{10}}| heta ))] 像硬币实验一样的独立重复实验可化简为 [mathop {arg max }limits_ heta  (prodlimits_i {P({x_i}| heta )} )] 直观理解也很好理解,如果抛10次硬币都是正面向上,那么最可能的估计当然就是这枚硬币只有可能正面向上(说不定两面都是正面)
    • 贝叶斯学派:使用最大后验概率估计,即 [mathop {arg max }limits_ heta  (P( heta |{x_1},{x_2},...,{x_{10}})) propto P({x_1},{x_2},...,{x_{10}}| heta )P( heta )] 正好比最大似然估计多了一项P(θ),即对应先验分布,直观理解即硬币可能两面都是正面,也可能一面重一些,也可能是均匀的,各种情况的(先验)概率不同,各种情况下10次抛硬币结果都正面朝上的(条件)概率也不同

    目前还比较顺利,但回到刚才阴天下雨的问题,在机器学习任务中,我们一般是希望通过阴天来判断是否会下雨,那么模型对应的(表现)就是P(rain|cloudy),这里用“因”到底应该对应模型参数?还是下雨?

    接下来看一个机器学习的典型模型——逻辑回归,逻辑回归模型如下(x为输入特征向量、θ为参数向量、y为预测结果)  [P(y = 1|x) = frac{1}{{1 + {e^{ - heta x}}}}] [P(y = 0|x) = 1 - P(y = 1) = frac{1}{{1 + {e^{ heta x}}}}] P(y=1|x)与P(y=0|x)是该模型对于后验概率的估计,可以化简为 [P(y|x) = {(frac{1}{{1 + {e^{ - heta x}}}})^y}{(1 - frac{1}{{1 + {e^{ - heta x}}}})^{1 - y}}] 然后是用最大似然估计推导逻辑回归参数估计的过程 [mathop {arg max }limits_ heta  prodlimits_i {{{(frac{1}{{1 + {e^{ - heta {x_i}}}}})}^{{y_i}}}{{(1 - frac{1}{{1 + {e^{ - heta {x_i}}}}})}^{1 - {y_i}}}} ] 

    这推导表面上顺利的不得了,大家都这么写,仔细想想不对啊!似然函数是P(a|b)的话,后验分布应该是P(b|a),两个怎么成了一回事?x、y、θ挤到一块,哪个是哪个?

    所以个人认为用“因”“果”描述先验后验,不太合适。英文将P(x)描述为evidence,evidence有显性的意思在里面,如果用“显示的”“隐藏的”来描述,看是不是能顺畅点。

    在阴天下雨模型中,我们知道今天是阴天,要推断的是是否要下雨,阴天是“显示的”,下雨是“隐藏的”,那么先验概率自然是P(下雨),后验概率则为P(下雨|阴天)。

    在硬币模型中,我们知道10次抛硬币结果是正面,要推断的是抛硬币结果模型,抛硬币结果是“显”,模型是“隐”,那么先验分布为P(模型),后验分布为P(模型|10次抛硬币结果是正面)。

    在逻辑回归模型中,模型的功能是根据输入x预测输出y,自然x是已知的,是“显”,y是要预测的,是“隐”,所以模型将决策函数假设为后验概率P(y|x)。但是在参数估计的过程中,输入的是训练数据,训练数据的x、y都是已知的,而模型参数θ才是未知的,所以x、y是“显”,θ是“隐”,所以此时的似然函数不是P(x|y),也不是P(θ|x),而是P(θ|x,y),这样,最大似然估计的式子就可以推导出来了!

    回头看逻辑回归的模型,其实假设的也不是P(y|x),而是P(y|x,θ)。

    所以其实预测和参数估计是两个过程,一个是概率过程,根据模型求概率(数据),一个是统计过程,根据数据(展现出来的概率)求模型,两个过程正好相反,这里是第二个混淆点。

    举另一个实例,如果需要根据一个人是否咳嗽判断他是否有肺炎,那么“是否咳嗽”就是“显”,“是否有肺炎”就是“隐”;如果需要根据一个人是否有肺炎判断他平时是否咳嗽,那么“是否有肺炎”就是“显”,“是否咳嗽”就是“隐”,这哪有什么绝对的因果关系嘛。

    接下来再看一个机器学习的经典模型——朴素贝叶斯,朴素贝叶斯模型为最大化后验概率(x为输入特征向量、y为预测结果) [y = mathop {arg max }limits_{{y_k}} P({y_k}|x)]  但是参数估计方式是怎样呢,很多地方解释为最大后验概率估计MAP [mathop {arg max }limits_{{y_k}} P({y_k}|x) propto mathop {arg max }limits_{{y_k}} P(x|{y_k})P({y_k})] 按之前的说法,x、y都是已知的,概率有什么好估计的呢?所以参数估计方法如果非要说是最大后验概率估计的话,也是如下试 [mathop {arg max }limits_ heta  (mathop {arg max }limits_{{y_k}} P( heta |x,{y_k})) propto mathop {arg max }limits_ heta  (mathop {arg max }limits_{{y_k}} P(x,{y_k}| heta )P( heta ))] 但是我们的确没有给参数θ预设任何值,所以从这个角度其实P(θ)就是均匀分布,最大后验概率估计等同于最大似然估计 [mathop {arg max }limits_ heta  (mathop {arg max }limits_{{y_k}} P(x,{y_k}| heta )) = mathop {arg max }limits_ heta  (mathop {arg max }limits_{{y_k}} P(x|{y_k}, heta )P({y_k}| heta ))] 这里又是一个混淆点,贝叶斯学派与频率学派的区别关键在于认为参数是一定的还是有概率分布的,在朴素贝叶斯模型中,也可以认为P(y)是一个概率分布,所以称朴素贝叶斯是符合贝叶斯学派思想的也没什么问题。问题是,我们在估计模型参数的时候,并没有办法估计P(y)的概率分布,还是估计了一个固定的P(y)的值,而不是概率分布,所以还是不太算得上是最大后验概率估计。

    在《统计学习方法》中也是如下描述的:P(y)的最大似然估计为(I(***)为指示函数) [P({y_k}) = frac{{I(y = {y_k})}}{n}] P(x|y)的最大似然估计为  [P({x_i}|{y_k}) = frac{{I(x = {x_i},y = {y_k})}}{{I(y = {y_k})}}]  然后在预测时使用 [mathop {arg max }limits_{{y_k}} P({y_k}|{x_i}) propto mathop {arg max }limits_{{y_k}} P({x_i}|{y_k})P({y_k})]

     

    参考文献:

    https://blog.csdn.net/u011508640/article/details/72815981 

    https://www.cnblogs.com/ldphoebe/p/5041813.html

    https://blog.csdn.net/zjuPeco/article/details/77165974

    https://www.zhihu.com/question/24261751

    https://www.zhihu.com/question/27398304

  • 相关阅读:
    中介模式与外观模式(门面模式)区别
    java反射
    Spring注解@ResponseBody,@RequestBody
    Spring事务管理
    Junit运行在Spring环境下
    java开发常用到的jar包总结
    java二维数组
    Android开发之执行定时任务AlarmManager,Timer,Thread
    Android开发之Android Context,上下文(Activity Context, Application Context)
    Android开发之创建App Widget和更新Widget内容
  • 原文地址:https://www.cnblogs.com/jhc888007/p/9815720.html
Copyright © 2011-2022 走看看