热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习——朴素贝叶斯与分类问题

朴素贝叶斯与分类问题贝叶斯定理  贝叶斯定理的基本内容:在运用概率对某一事件进行推断,在这之前往往已经事先掌握了关于这一事件的概率,这个概率可能是主观概率或者相对概率,这种初始的概

朴素贝叶斯与分类问题

贝叶斯定理

  贝叶斯定理的基本内容:在运用概率对某一事件进行推断,在这之前往往已经事先掌握了关于这一事件的概率,这个概率可能是主观概率或者相对概率,这种初始的概率可以称为先验概率。如果在后续的研究中,通过抽样调查样本等信息源又获得了有关该事件的信息,我们就可以根据这些新信息对先验概率进行修正,使先验概率变为后验概率。这个修正概率的定理就称为贝叶斯定理

  贝叶斯定理是用来描述两个条件概率之间关系的定理,比如P(AB)P(BA)P(A|B)和P(B|A),通常,事件A在事件B发生的条件下的概率P(AB)P(A|B)与事件B在事件A的条件下的概率P(BA)P(B|A)是不一样的,但是这两者之间有确定的关系,贝叶斯法则就是这种关系的陈述,

   贝叶斯公式如下P(AiB)=P(BAi)P(Ai)j=1nP(BAi)P(Ai)P(A_i|B)=\frac{P(B|A_i)P(A_i)}{\sum_{j=1}^n{P(B|A_i)P(A_i)}}
  各部分解释为:
    P(A)P(A)是A的先验概率或边缘概率。称为"先验"是因为它不考虑任何B方面的因素。
    P(AB)P(A|B)是已知B发生后A的条件概率,也由于得自B的取值而被称作A的后验概率。
    P(B)P(B)是B的先验概率或边缘概率。称为"先验"是因为它不考虑任何A方面的因素。
    P(BA)P(B|A)是已知A发生后B的条件概率,也由于得自A的取值而被称作B的后验概率。

  贝叶斯定理应用概述:贝叶斯推断与其他统计学推断方法截然不同,它建立在主观判断的基础上,在不完全情报下,也就是说,你可以不需要客观证据,先估计一个主观概率对部分未知的状态进行描述,然后根据实际结果不断修正,最后再利用期望值和修正概率做出最优决策。
  引用百度百科的实例:
    假设一个对吸毒者的常规检测结果的敏感度与可靠度均为99%,也就是说,当被检者吸毒时,每次检测呈阳性(+)的概率为99%。而被检者不吸毒时,每次检测呈阴性(-)的概率为99%。从检测结果的概率来看,检测结果是比较准确的,但是贝叶斯定理却可以揭示一个潜在的问题。假设某公司将对其全体雇员进行一次鸦片吸食情况的检测,已知0.5%的雇员吸毒。我们想知道,每位检测呈阳性的雇员,他吸毒的概率有多高?

    令"A"为雇员吸毒事件,"C"为雇员不吸毒事件,"B"为检测呈阳性事件。则:
    P(A)P(A)代表雇员吸毒的概率,不考虑其他情况,该值为0.5%。(因为公司预先统计表明该公司的雇员中有0.5%的人吸毒,所以这个值就是A的先验概率)
    P(C)P(C)代表雇员不吸毒的概率,显然,该值为99.5%,也就是1-P(A)。
    P(BA)P(B|A)代表吸毒者阳性检出率,这是一个条件概率,由于阳性检测准确性是99%,因此该值为99%。
    P(BC)P(B|C)代表不吸毒者阳性检出率,也就是出错检测的概率,该值为1%,因为不吸毒者其检测为阴性的概率为99%,因此,其被误检测成阳性的概率为1-99%。
    P(B)P(B)代表不考虑其他因素影响的阳性检出率。P(B) = 吸毒者阳性检出率(0.5% * 99% = 0.495%)+ 不吸毒者阳性检出率(99.5%x1% = 0.995%)= 1.49%,这是检测呈阳性的先验概率。用数学公式描述为:
P(B)=P(A)P(BA)+P(C)P(BC)P(B)=P(A)P(B|A) + P(C)P(B|C)
根据上述描述,我们要计算的是某位员工检测呈阳性时,这名员工也确实吸毒的条件概率P(AB)P(A|B)P(AB)=P(BA)P(A)P(B)=P(BA)P(A)P(A)P(BA)+P(C)P(BC)=99%0.5%99%0.5%+1%99.5%=33.22%P(A|B)=\frac{P(B|A)P(A)}{P(B)}=\frac{P(B|A)P(A)}{P(A)P(B|A)+P(C)P(B|C)}=\frac{99\%*0.5\%}{99\%*0.5\%+1\%*99.5\%}=33.22\%
   结论:测试条件越难发生,发生误判的可能性越大

朴素贝叶斯

  朴素贝叶斯:它是一种简单且强大的预测建模算法,其目的在于通过训练集学习联合分布概率p(X,Y)p(X,Y)
  由贝叶斯定理可以将联合概率转换为先验概率与条件概率分布之积:p(X=x,Y=ck)=p(Y=ck)p(X=ckY=ck)p(X=x,Y=c_k)=p(Y=c_k)p(X=c_k|Y=c_k)
  先验概率分布 p(Y=ck)p(Y=c_k) 通过统计每个类别中的样本数得到,即:p(Y=ck)=count(Y=ck)Np(Y=c_k)=\frac{count(Y=c_k)}{N}
  条件概率分布p(X=xY=ck)p(X=x|Y=c_k)则难以估计,原因在于x的量级非常巨大,即:p(X=x,Y=ck)=p(X1=x1,...,Xn=xnY=ck)p(X=x,Y=c_k)=p(X_1=x_1, ... ,X_n=x_n|Y=c_k)
由上式得该条件概率分布的参数数量为指数级。
  为了解决这个问题,朴素贝叶斯法假设所有特征是条件独立的。该条件的独立性假设为:p(X=x,Y=ck)=p(X1=x1,...,Xn=xnY=ck)=i=1np(Xi=xiY=ck)p(X=x,Y=c_k)=p(X_1=x_1, ... ,X_n=x_n|Y=c_k)=\prod^n_{i=1}{p(X_i=x_i|Y=c_k)}
  利用极大似然估计为:p(X=x,Y=ck)=count(Xi=xi,yi=ck)count(yi=ck)p(X=x,Y=c_k)=\frac{count(X_i=x_i,y_i=c_k)}{count(y_i=c_k)}
  公式解释:给定类别为ckc_k的条件下,特征向量第ii维为某个特定值xix_i的概率等于类别为ckc_k且第ii维为xix_i的样本数量除以类别ckc_k下所有的样本数量。

  利用贝叶斯公式求出后验概率p=(Y=ckX=x)p=(Y=c_k|X=x)最大的类别ckc_k作为输出yy,公式描述如下:y=argmaxckp(Y=ckX=x)y=\arg\max_{c_k}p(Y=c_k|X=x)
  将贝叶斯公式代入上式得:y=argmaxckp(X=xY=ck)p(Y=ck)p(X=x)y=\arg\max_{c_k}\frac{p(X=x|Y=c_k)p(Y=c_k)}{p(X=x)}
  由于分母p(X=x)p(X=x)ckc_k无关,在求最大后验概率可省略,即:y=argmaxckp(X=xY=ck)p(Y=ck)y=\arg\max_{c_k}p(X=x|Y=c_k)p(Y=c_k)
  将前文中得独立性假设带入上式中,得:y=argmaxckp(Y=ck)i=0np(Xi=xiY=ck))y=\arg\max_{c_k}p(Y=c_k)\prod_{i=0}^np(X_i=x_i|Y=c_k))
  此时只要求得先验概率分布 p(Y=ck)p(Y=c_k)与条件概率分布p(X=xY=ck)p(X=x|Y=c_k)即可得出结果。

  朴素贝叶斯之所以朴素,是因为它假设每个输入变量是独立的。虽然这个假设在实际生活中出现的频率不多,朴素贝叶斯算法对于绝大部分的复杂问题仍然有效。

朴素贝叶斯分类器

贝叶斯定理、贝叶斯分类器与朴素贝叶斯分类器三者的关系:贝叶斯原理为数学模型,是基础。在此数学基础上设计出了贝叶斯分类。而朴素贝叶斯分类则为贝叶斯分类中的一个具体实现方法。
机器学习——朴素贝叶斯与分类问题
朴素贝叶斯分类器基本思想:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。
贝叶斯分类器工作流程:工作流程大体分为三个阶段:准备阶段、分类器训练阶段、应用阶段。如下图所示:
机器学习——朴素贝叶斯与分类问题

贝叶斯算法的优缺点

  优点:
    (1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率,常用于文本分类。
    (2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,当数据量超出内存时,可以采采取增量训练。
    (3)对缺失数据不敏感,算法也比较简单。
  缺点:
    (1)理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。
    (2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
    (3)由先验概率来决定后验概率,存在错误率。

参考引用

《统计学习方法》李航 著
《自然语言处理入门》何晗 著
朴素贝叶斯分类——guoyunfei20
朴素贝叶斯分类:原理——qiu_zhi_liao


推荐阅读
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有