美文网首页机器学习神烦数学
01 贝叶斯算法 - 朴素贝叶斯

01 贝叶斯算法 - 朴素贝叶斯

作者: 白尔摩斯 | 来源:发表于2018-12-11 09:57 被阅读241次

    引子:

    1、孩子的性别问题

    已知一对夫妻生了2个孩子,其中一个是女孩,那么另一个也是女孩的概率的多少?
    普遍大家会觉得生男生女都一样,所以另一个也是女孩的概率是1/2。而另一部分稍微聪明一点的人认为:根据排列组合,两个孩子生男生女一共有4种可能性,所以都是女生的概率是1/4。
    然而恭喜你们,完美得避开了正确答案。
    我们来看看这究竟是怎么一回事,不考虑数学公式,我们来看看两个孩子中其中一个是女孩的可能性有哪些。

    首先,小夫妻生了老大和老二,但题干中并没有说明哪个是女孩。
    给出所有生孩子可能出现的情况:
    (老大,老二) = { 男男, 女女, 男女, 女男 };
    在其中,出现女孩的情况有三个:
    {女女, 男女, 女男 };
    在这三种情况里,满足其中一个是女孩,那么另一个也是女孩的情况只有一种。
    所以正确答案是1/3

    用条件公式概率公式来描述:

    思路1:
    \color{red}{P(A|B) = P(2个都是女孩 | 其中一个是女孩) = 1/3}
    即:在其中一个是女孩的情况下,夫妻生的双胞胎都是女孩的概率是1/3。

    思路2:
    P(AB) :表示两个都是女孩的概率 = 1/4;
    P(B):其中一个是女孩 = 3/4;
    \color{red}{P(A|B) =P(AB)/P(B) = 1/3}

    请将这两个红色的公式深深得植入大脑后开始本章的学习。


    2、古典概率中著名的三门问题

    参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机率?

    推荐一个非常鬼畜的动画来帮助大家理解这个问题:
    https://mp.weixin.qq.com/s/7XqjBR4xUUOtuWyzL5v2ig

    数学公式分析:

    第一次选中车,第二次中选车的联合概率,用公式表达:
    \color{red}{P(1车,2车) 这是一个联合概率。}

    P(1车,2车) = 第一次选中车的概率 × (第一次选中车的条件下,第二次还选中车的概率);用公式表达:
    \color{red}{P(1车,2车) = P(1车) × P(2车|1车)}
    分析:第一次抽到车的概率1/3,第二次如果换抽到车的概率是0。

    同理:第一次选中羊,第二次选中车的联合概率公式
    \color{red}{P(1羊,2车) = P(1羊) × P(2车|1羊)}
    分析:第一次抽到羊的概率2/3,第二次抽如果换,必然抽到车。

    获奖概率:P(2车) - 如果第二次换门,抽奖获得车的概率。
    \color{red}{P(2车) = P(1车,2车) + P(1羊,2车)}
    \color{red}{= P(1车) × P(2车|1车) + P(1羊) × P(2车|1羊)}
    \color{red}{= 1/3×0 + 2/3×1 = 2/3}

    同理,如果第二次换门,抽奖获得羊的概率:P(2羊)
    \color{red}{P(2羊) = P(1羊,2羊) + P(1车,2羊)}
    \color{red}{= P(1羊) × P(2羊|1羊) + P(1车) × P(2羊|1车)}
    \color{red}{= 2/3×0 + 1/3×1 = 1/3}

    结论:从概率角度来看,换个门是有价值的。

    衍生一个问题:一共1000个门里,有999只草泥马,只有一辆劳斯莱斯。
    你选了一扇门后,我去掉了另外998个装有草泥马的门。
    现在剩下一扇你刚才选的门,以及另外一扇没有打开的门。

    现在你换不换?

    傻子才不换...

    例子想要说明的重点:

    在给定条件的情况下,很多生活中看似显而易见的概率问题会发生重大的变化。

    在模型求解的过程中,会遇到2种问题:判别式模型生成式模型
    判别式模型: P(Y|X) - 条件概率,即在发生了X的条件下,生成了Y的概率。
    生成式模型: P(X,Y) - 联合概率,即考虑X和Y同时发生的概率。
    很多模型都是基于判别式和生成式进行构建的。很多分类的问题用的是判别式模型。聚类问题多数采用生成式模型。


    一、贝叶斯定理相关公式

    先验概率P(A):在不考虑任何情况下,A事件发生的概率。
    条件概率P(B|A):A事件发生的情况下,B事件发生的概率。
    后验概率P(A|B):在B事件发生之后,对A事件发生的概率的重新评估。

    有时候 P(B|A) 不太好求,但右边式子中的情况都比较好求,这时候可以通过贝叶斯公式转化问题:
    P(B|A) = P(A,B) / P(A) = P(B)P(A|B) / P(A)

    贝叶斯公式

    全概率:如果A和A'(A的补集)构成样本空间的一个划分,那么事件B的概率为:A和A'的概率分别乘以B对这两个事件的概率之和。

    例子中的:\color{red}{P(2车) = P(1车,2车) + P(1羊,2车)} 就是求全概率的一种情况。
    即: \color{red}{全集=A+A的补集}

    基于条件概率的贝叶斯定律数学公式:


    例子:后验概率问题 - P(B|A) = P(A,B) / P(A) = P(B)P(A|B) / P(A);
    有两个碗,第一个碗中装有30个水果糖和10个巧克力糖,第二个碗中装有20个水果糖和20个巧克力糖,现在随机选择一个碗,从中取出一颗糖,发现是水果糖,请求出这颗水果糖来自一号碗的概率有多大?

    思路:
    1、已知每个碗中取出水果糖的概率,已知每次选碗也是随机。
    2、那么先求出随机取碗条件下,取出是水果糖的全概率
    3、再根据P(B|A) = P(A,B) / P(A) = P(B)P(A|B) / P(A) 公式反推后验概率问题:水果糖来自一号碗的概率有多大。


    二、朴素贝叶斯算法

    朴素贝叶斯(Naive Bayes, NB)是基于“特征之间是独立的”这一朴素假设,应用贝叶斯定理的监督学习算法。朴素贝叶斯本质就是一个分类算法。

    对应给定的样本X的特征向量x1,x2,...,xn;该样本X的类别y的概率可以由贝叶斯公式得到:


    朴素贝叶斯算法推导:

    特征属性之间是独立的,所以得到:

    在给定样本的情况下,P(x1,x2,...,xm)是常数,所以得到:

    P(x1,x2,xn)是一个定值,所以式子左右成正比

    从而:

    用TF-IDF分词和词袋法来分析上述公式的应用:

    分析 - 朴素贝叶斯算法

    朴素贝叶斯算法流程/定义如下:

    1、设x={a1,a2,...,an}为待分类项,其中a为x的一个特征属性。
    2、类别集合为C={y1,y2,...,yn};
    3、分别计算P(y1|x),P(y2|x),....,P(yn|x)的值(贝叶斯公式)
    4、如果P(yk|x)=max{P(y1|x),P(y2|x),....,P(yn|x)},那么认为x为yk类型。


    三、高斯朴素贝叶斯

    Gaussian Naive Bayes是指当特征属性为连续值时,而且分布服从高斯分布,那么在计算P(x|y)的时候可以直接使用高斯分布的概率公式:

    因此只需要计算出各个类别中此特征项划分的各个均值和标准。

    P(xk|yk) 怎么求?

    1、先找到yk这个分类结果的样本,找到这些样本对应的xk属性,求这些xk的均值和标准差,最后代入g(x,η,σ);

    2、分别计算P(x1|yk)× ....× P(xn|yk) × P(yk)的值,这个公式和P(yk|x1,x2,...,xn)成正比;

    3、当分类个数为m个时,分别计算k=1~m的 P(x1|yk)× ....× P(xn|yk) × P(yk)的值,取其中最大概率时的K值,即最终的分类结果。


    四、伯努利朴素贝叶斯

    Bernoulli Naive Bayes是指当特征属性为离散值时,而且分布服从伯努利分布,那么在计算P(x|y)的时候可以直接使用伯努利分布的概率公式:

    伯努利分布是一种离散分布,只有两种可能的结果。1表示成功,出现的概率为p;0表示失败,出现的概率为q=1-p;其中均值为E(x)=p,方差为Var(X)=p(1-p);


    五、多项式朴素贝叶斯

    Multinomial Naive Bayes是指当特征属性服从多项分布,从而,对于每个类别y,参数为θy=(θy1,θy2,...,θyn),其中n为特征属性数目,那么P(xi |y)的概率为θyi; 该算法一般用于文本分类


    分析和总结:

    如果数据中既有连续的特征,又有离散的特征,我们该如何去做分类?
    本质上来说,我们计算的是每一个特征对应的概率。如图:

    当遇到连续值特征时,我们用高斯去算P(xi|y)。
    遇到离散值特征时,我们用多项式伯努利去算P(xi|y)。

    但问题是我们的API中没有自动得集成这些功能,在这种情况下该怎么去做分类呢?
    首先,我们要人为得去分析特征到底属于什么类型的数据。如果特征是一个连续值比较多的数据集,我们统一使用高斯就行了。反之统一用用多项式或伯努利。或者高级一点,对数据进行分箱操做。

    02 贝叶斯算法 - 案例一 - 鸢尾花数据分类
    03 贝叶斯算法 - 案例二 - 新闻数据分类

    相关文章

      网友评论

        本文标题:01 贝叶斯算法 - 朴素贝叶斯

        本文链接:https://www.haomeiwen.com/subject/catshqtx.html