zoukankan      html  css  js  c++  java
  • Python 贝叶斯分类

      很久的时间没有更新了,一是因为每天加班到比较晚的时间,另外,公司不能上网,回家后就又懒得整理,最近在看机器学习实战的书籍,因此才又决定重新拾起原先的博客!

      今天讲的是第三章的贝叶斯分类方法,我们从一个简简单单的例子开始入手:首先看(1)图中的例子,假设有一个装了7块时候的罐子,其中3块时黑色的,4块时白色的,从中随机取出一个石头,那么这个石头是灰色的概率是多大?

                                          

                                                       (1)                                                                           (2)

      我们可以很轻易的计算出取出一个灰色球的概率是4/7,取出一个黑色球的概率是3/7,但是假如这些球被放在两个不同的罐子中,如图(2) :A中有3个黑球,2个灰球,B中有三个灰球,两个黑球。那我们从中取出一个灰球的概率是多大?我们很自然的联想到要首先知道是从A中去取还是从B中去取。

    假设从A中取得概率为Pa,从B中取得概率为Pb,那么我们取出一个灰色球的概率为:

                                                         Pgray   =   ( 0.4 ) * Pa + ( 0.6 )* Pb

     此时的0.4 和0.6 分别表示为从A和B桶中取出一个灰色球的概率,我们也称其为条件概率, 记为P(gray | A) = 0.4,P(gray|B) = 0.6

     我们引出维基百科上关于贝叶斯公式的定义:

      贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。

                                                                                             P(A|B) = frac{P(B | A)\, P(A)}{P(B)}

      其中P(A|B)是在B发生的情况下A发生的可能性。贝叶斯定理中,每个名词都有约定俗成的名称:

    按这些术语,Bayes定理可表述为:

                                                                               后验概率 = (相似度*先验概率)/标准化常量

    也就是说,后验概率与先验概率和相似度的乘积成正比。

    另外,比例P(B|A)/P(B)也有时被称作标准相似度(standardised likelihood),Bayes定理可表述为:

                                                                                     后验概率 = 标准相似度*先验概率

          

    [例一(维基百科)]

    贝叶斯定理在检测吸毒者时很有用。假设一个常规的检测结果的敏感度与可靠度均为99%,也就是说,当被检者吸毒时,每次检测呈阳性(+)的概率为99%。而被检者不吸毒时,每次检测呈阴性(-)的概率为99%。从检测结果的概率来看,检测结果是比较准确的,但是贝叶斯定理却可以揭示一个潜在的问题。假设某公司将对其全体雇员进行一次鸦片吸食情况的检测,已知0.5%的雇员吸毒。我们想知道,每位医学检测呈阳性的雇员吸毒的概率有多高?令“D”为雇员吸毒事件,“N”为雇员不吸毒事件,“+”为检测呈阳性事件。可得

    • P(D)代表雇员吸毒的概率,不考虑其他情况,该值为0.005。因为公司的预先统计表明该公司的雇员中有0.5%的人吸食毒品,所以这个值就是D的先验概率
    • P(N)代表雇员不吸毒的概率,显然,该值为0.995,也就是1-P(D)。
    • P(+|D)代表吸毒者阳性检出率,这是一个条件概率,由于阳性检测准确性是99%,因此该值为0.99。
    • P(+|N)代表不吸毒者阳性检出率,也就是出错检测的概率,该值为0.01,因为对于不吸毒者,其检测为阴性的概率为99%,因此,其被误检测成阳性的概率为1-99%。
    • P(+)代表不考虑其他因素的影响的阳性检出率。该值为0.0149或者1.49%。我们可以通过全概率公式计算得到:此概率 = 吸毒者阳性检出率(0.5% x 99% = 0.495%)+ 不吸毒者阳性检出率(99.5% x 1% = 0.995%)。P(+)=0.0149是检测呈阳性的先验概率。用数学公式描述为:
                                                      P(+)=P(+,D)+P(+,N)=P(+|D)P(D)+P(+|N)P(N)

    根据上述描述,我们可以计算某人检测呈阳性时确实吸毒的条件概率P(D|+):

                                                                                  egin{align}P(D|+) & = frac{P(+ | D) P(D)}{P(+)} \
& = frac{P(+ | D) P(D)}{P(+ | D) P(D) + P(+ | N) P(N)} \
& = frac{0.99 	imes 0.005}{0.99 	imes 0.005 + 0.01 	imes 0.995} \
& = 0.3322.end{align}

    尽管我们的检测结果可靠性很高,但是只能得出如下结论:如果某人检测呈阳性,那么此人是吸毒的概率只有大约33%,也就是说此人不吸毒的可能性比较大。我们测试的条件(本例中指D,雇员吸毒)越难发生,发生误判的可能性越大。(这个相信能给曾经去体检结果非常不好的人一个乐观的消息)

    [例二 (Machine Learn in Action)]

       机器学习的一个非常重要的作用就是对文本进行分类,我们使用Python进行文本的分类

           (未完待续)

      

    参考:[1]刘未鹏 数学之美番外篇:平凡而又神奇的贝叶斯方法

            [2] Machine Learn in Action, Peter Harrington

  • 相关阅读:
    poj 1611 The Suspects
    POJ 2236 Wireless Network
    POJ 1703 Find them, Catch them
    poj 1733 Parity game
    hdu 1598 find the most comfortable road
    cmake的使用二:链接第三方静态库
    线段树基础
    迪杰斯特拉算法
    Floyd详解
    STL中的set使用方法详细
  • 原文地址:https://www.cnblogs.com/CBDoctor/p/3679244.html
Copyright © 2011-2022 走看看