zoukankan      html  css  js  c++  java
  • 贝叶斯算法原理【转】

    Bayes法是一种在已知先验概率与条件概率的情况下的模式分类方法,待分样本的分类结果取决于各类域中样本的全体。

    Bayes方法的薄弱环节在于实际情况下,类别总体的概率分布和各类样本的概率分布函数(或密度函数)常常是不知道的。为了获得它们,就要求样本 足够大。另外,Bayes法要求表达文本的主题词相互独立,这样的条件在实际文本中一般很难满足,因此该方法往往在效果上难以达到理论上的最大值。

     

    1.贝叶斯法则
    机器学习的任务:在给定训练数据D时,确定假设空间H中的最佳假设。
    最佳假设:一种方法是把它定义为在给定数据D以及H中不同假设的先验概率的有关知识下的最可能假设。贝叶斯理论提供了一种计算假设概率的方法,基于假设的先验概率、给定假设下观察到不同数据的概率以及观察到的数据本身。


    2.先验概率和后验概率
    用P(h)表示在没有训练数据前假设h拥有的初始概率。P(h)被称为h的先验概率。先验概率反映了关于h是一正确假设的机会的背景知识如果没有 这一先验知识,可以简单地将每一候选假设赋予相同的先验概率。类似地,P(D)表示训练数据D的先验概率,P(D|h)表示假设h成立时D的概率。机器学 习中,我们关心的是P(h|D),即给定D时h的成立的概率,称为h的后验概率。


    3.贝叶斯公式
    贝叶斯公式提供了从先验概率P(h)、P(D)和P(D|h)计算后验概率P(h|D)的方法
    p(h|D)=P(D|H)*P(H)/P(D)
    P(h|D)随着P(h)和P(D|h)的增长而增长,随着P(D)的增长而减少,即如果D独立于h时被观察到的可能性越大,那么D对h的支持度越小。


    4.极大后验假设
    学习器在候选假设集合H中寻找给定数据D时可能性最大的假设h,h被称为极大后验假设(MAP)
    确定MAP的方法是用贝叶斯公式计算每个候选假设的后验概率,计算式如下:
    h_map=argmax P(h|D)=argmax (P(D|h)*P(h))/P(D)=argmax P(D|h)*p(h) (h属于集合H)
    最后一步,去掉了P(D),因为它是不依赖于h的常量。


    5.极大似然假设
    在某些情况下,可假定H中每个假设有相同的先验概率,这样式子可以进一步简化,只需考虑P(D|h)来寻找极大可能假设。
    h_ml = argmax p(D|h) h属于集合H P(D|h)常被称为给定h时数据D的似然度,而使P(D|h)最大的假设被称为极大似然假设。


    6.举例
    一个医疗诊断问题
    有两个可选的假设:病人有癌症、病人无癌症
    可用数据来自化验结果:正+和负-
    有先验知识:在所有人口中,患病率是0.008
    对确实有病的患者的化验准确率为98%,对确实无病的患者的化验准确率为97%
    总结如下
    P(cancer)=0.008, P(cancer)=0.992
    P(+|cancer)=0.98, P(-|cancer)=0.02
    P(+|cancer)=0.03, P(-|cancer)=0.97
    问题:假定有一个新病人,化验结果为正,是否应将病人断定为有癌症?求后验概率P(cancer|+)和P(cancer|+)
    因此极大后验假设计算如下:
    P(+|cancer)P(cancer)=0.008*0.98=0.0078
    P(+|cancer)P(cancer)=0.992*0.03=0.0298
    hMAP=cancer
    确切的后验概率可将上面的结果归一化以使它们的和为1
    P(canner|+)=0.0078/(0.0078+0.0298)=0.21
    cancer|-)=0.79ØP(
    贝叶斯推理的结果很大程度上依赖于先验概率,另外不是完全接受或拒绝假设,只是在观察到较多的数据后增大或减小了假设的可能性。

     

    注意:当训练数据的值是缺失时,即先验概率为0%,预测值不稳定。一般会给每个数据加1,使概率不会为0%。

  • 相关阅读:
    JVM调优
    Java堆空间的划分:新生代、老年代
    说一下 jvm 有哪些垃圾回收器?
    JVM的垃圾回收算法有哪些
    订单并发处理--悲观锁和乐观锁、任务队列以及订单模块开发流程
    MySQL数据库的四种事务隔离级别以及事务的并发问题(脏读/不可重复读/幻读)
    Python面试总结复习(四)
    Python面试总结复习(三)
    Django表设计,多表操作复习
    python面试总结复习(二)
  • 原文地址:https://www.cnblogs.com/webyu/p/2934993.html
Copyright © 2011-2022 走看看