zoukankan      html  css  js  c++  java
  • 贝叶斯*方法总结

    1.综述:

      贝叶斯分类方法是统计学分类方法。它们可以预测类隶属关系的概率,如一个给定的元组属于一个特定类的概率。

    贝叶斯分类基于贝叶斯定理。分类算法的比较研究发现,一种称为朴素贝叶斯分类法的简单贝叶斯分类法可以与决策树和经过挑选的神经网络分类器相媲美。用于大型数据库,贝叶斯分类法也已表现出高准确率和高速度。

    朴素贝叶斯分类法假定一个属性值在给定类上的影响独立于其他属性的值,这一假定称为类条件独立性。做此假定是为了简化计算,并在此意义下称为“朴素的”。

    PS:如果各个属性值不是条件独立的,则计算概率时是要计算条件概率、联合概率什么的,如果元组属性值很多的话就非常麻烦;如果是假设各属性具有很好的独立性的话,计算概率时只需要单独计算,不需要考虑其他属性对其出现的概率的影响,这样就简单多了。

    2.贝叶斯定理

      贝叶斯分类法的核心即为贝叶斯定理。设X是数据元组。通常,X用n个属性集的测量值描述。令H为某种假设,如数据元组X属于某个特定类C,对于分类问题,希望确定给定“证据”或观测数据元组X,假设H成立的概率P(H|X)。换言之,给定X的属性描述,找出元组X属于类C的概率。

      P(H|X)是后验概率(posterior probability),或在条件X下,H的后验概率。相反,P(H)是先验概率(prior probability),或H的先验概率。后验概率P(H|X)比先验概率P(H)基于更多的信息。P(H)独立于X。

          类似的,P(X|H)是条件H下,X的后验概率。P(X)是X的先验概率。

      贝叶斯定理为:P(H|X)=P(X|H)*P(H)/P(X)。      PS:如果对这个公式有不清楚的,可以去看看概率论一书。

    3.朴素贝叶斯(Naive Bayesian)分类

      工作过程如下:

        a.设D是训练元组和它们相关联的类标号的集合。通常,每个元组用一个n维属性向量X={x1,x2,...,xn}表示,描述有n个属性A1,A2,...,An对元组的n个测量。

        b.假定有m个类C1,C2,...,Cm。给定元组X,分类法将预测X属于具有最高后验概率的类(在条件X下)。也就是说,朴素贝叶斯分类法预测X属于类Ci,当且仅当P(Ci|X)>P(Cj|X)  1<=j<=m,j!=i,这样,最大化P(Ci|X)。P(Ci|X)最大的类Ci称为最大后验概率假设。根据贝叶斯定理,P(Ci|X)=P(X|Ci)*P(Ci)/P(X)。

        c.由于P(X)对所有类为常数,所以只需要P(X|Ci)*P(Ci)最大即可。如果类的先验概率未知,则通常假定这些类是等概率的,即P(C1)=P(C2)=...=P(Cm),并据此对P(X|Ci)最大化。否则最大化P(X|Ci)*P(Ci)。注意,类先验概率可以用P(Ci)=|C(i,D)|/|D|估计,其中|C(i,D)|是D中Ci类的训练元组数。

        d.给定具有许多属性的数据集,计算P(X|Ci)的开销可能非常大。为了降低P(X|Ci)的开销,可以做类条件独立的朴素假定。给定元组的类标号,假定属性值有条件的相互独立(即属性之间不存在依赖关系)。因此,P(X|Ci)=∏P(xk|Ci)=P(x1|Ci)*P(x2|Ci)*P(x3|Ci)...P(xn|Ci) ;其中k=1,2,...,n 可以很容易的由训练元组估计概率P(x1|Ci),P(x2|Ci),...,P(xn|Ci)。注意,xk表示元组X在属性Ak的值。对于每个属性,考虑该属性是分类的还是连续值的。可以考虑如下两种情况:

          (1).如果Ak是分类属性,则P(xk|Ci)是D中属性Ak的值为xk的Ci类的元组数除以D中Ci类的元组数|C(i,D)|。

          (2).如果Ak是连续值属性,则需要多做一点工作,但计算很简单。通常,假定连续值属性服从均值为u,标准差为σ的高斯分布,由下式定义

                g(x,u,σ)=1/(sqrt(2π)*σ) * exp{-(x-u)^2/(2*σ^2)}   ;因此 P(xk|Ci)=g(xk,u_ci,σ_ci);  其中u_ci和σ_ci分别为Ci类训练元组属性Ak的均值和标准差。

        e.为了预测X的类标号,对每个类Ci,计算P(X|Ci)*P(Ci)。该分类法预测输入元组X的类为Ci,当且仅当  P(X|Ci)*P(Ci)>P(X|Cj)*P(Cj),   1<=j<=m,j!=i  。换言之,被预测的类标号是使P(X|Ci)*P(Cj)最大的类Ci。

    4.贝叶斯分类法的有效性

        理论上讲,与其他所有分类算法相比,贝叶斯分类法具有最小的错误率。然而,实践中并非总是如此。这是由于对其使用的假定(如类条件独立性)的不正确性,以及缺乏可用的概率数据造成的。

    5.消除零概率值

        在计算P(X|Ci)时,它的值可能为零。带入贝叶斯公式,这个零概率会消除乘积中涉及的所有其他(后验概率)的影响。

        可以假定训练数据库D很大,以至于对每个计数加1造成的估计概率的变换可以忽略不计,但可以方便的避免概率值为零。这种概率估计技术称为拉普拉斯校准或拉普拉斯估计法。如果对q个计数都加上1,则必须记住在用于计算概率的对应分母上加上q。

    PS:总的来说贝叶斯分类法的原理还是非常简单的,编程实现起来并不困难。

  • 相关阅读:
    pass cloudcc
    eclipse生成javaDoc时,出现"编码GBK 的不可映射字符"
    tabWidget 直布局
    用 Navicat for Oracle 管理 Oracle10g/11g 数据库
    Aspx页面内 成员变量丢失的问题
    AspNet2.0页面生命周期
    【Z】浅析豆瓣的 Google Analytics 应用
    绑定SqlDataSource的Gridview字符串字段长度截取(转)
    Java web 推荐书籍
    关于Reapeter的总结
  • 原文地址:https://www.cnblogs.com/evilKing/p/4067202.html
Copyright © 2011-2022 走看看