zoukankan      html  css  js  c++  java
  • 朴素贝叶斯

    朴素贝叶斯算法是一种基于概率统计的分类方法,它主要利用贝叶斯公式对样本事件求概率,通过概率进行分类。以下先对贝叶斯公式做个了解。


    贝叶斯公式

    条件概率:

    对于事件A、B,若P(B)>0,则事件A在事件B发生的条件下发生的概率为:

    P(A|B)=P(AB)P(B)

    贝叶斯公式:

    将条件概率稍作转化即可得到贝叶斯公式如下:

    P(A|B)=P(B|A)P(A)P(B)


    实例

    先看看如何使用朴素贝叶斯进行预测吧。如下给出一个weather数据集,使用朴素贝叶斯算法预测样本 X={rainy,hot,normal,weak,?} 中属性play为yes还是no
    这里写图片描述

    思路:我们可以求出在{rainy,hot,normal,weak}发生的条件下,事件play=yes和事件play=no的概率,谁的概率大,最终答案就选谁。
    解:根据贝叶斯公式,有:
    P(play=yes|X)=P(X|play=yes)×P(play=yes)P(X)
    P(play=no|X)=P(X|play=no)×P(play=no)P(X)
    我们要比较这两个概率的大小,由于分母相同且大于0,所以我们只需要比较分子的大小即可。

    P(X|play=yes)×P(play=yes)=P(x1|play=yes)×P(x2|play=yes)×P(x3|play=yes)×P(x4|play=yes)×P(play=yes)

    其中,
    P(x1|play=yes)=P(outlook=rainy|play=yes)=3/9
    P(x2|play=yes)=P(temperature=hot|play=yes)=2/9
    P(x3|play=yes)=P(humidity=normal|play=yes)=6/9
    P(x4|play=yes)=P(wind=weak|play=yes)=6/9
    P(play=yes)=9/14

    P(play=yes|X)3/9×2/9×6/9×6/9×9/14=0.0211

    同理可得:
    P(x1|play=no)=P(outlook=rainy|play=no)=2/5
    P(x2|play=no)=P(temperature=hot|play=no)=2/5
    P(x3|play=no)=P(humidity=normal|play=no)=1/5
    P(x4|play=no)=P(wind=weak|play=no)=2/5
    P(play=no)=9/14
    P(play=no|X)2/5×2/5×1/5×2/5×9/14=0.0082

    根据结果,P(play=yes|X)>P(play=no|X)
    所以,样本 X={rainy,hot,normal,weak,?} 的play类标号值为yes

    朴素贝叶斯

    相信大部分朋友都能看懂上面这个例子,也对朴素贝叶斯有了一定的认识。下面作一些补充介绍:

    名词解释:

    • P(H) 表示假设H先验概率,即假设H会发生的概率。
    • P(H|X)表示在条件X下,假设H后验概率。即在事件X发生的条件下,假设H会发生的概率。
    • 在数据集D中,假设其属性集为:U={A1,A2,,An,C} ,其中A1,A2,,An属性变量C叫做类标号属性变量

    算法描述:

    函数名:NaiveBayes
    输入:类标号未知的样本X={x1,x2,…,xn}
    输出:未知样本 X 所属类别号
    (1for j=1 to m
    (2) 计算 X 属于每个类别 Cj 的概率 P(X|Cj) = P(x1|Cj) × P(x2|Cj) × … × P(xn|Cj);
    (3) 计算训练集中每个类别 Cj 的概率 P(Cj);
    (4) 计算概率值 μ = P(X|Cj) × P(Cj);
    (5end for6)选择概率值 μ 最大的 Ci(1i≤m) 作为类别输出。


    优缺点

    优点:

    • 朴素贝叶斯的优点是容易实现,给出公式让计算机运算就行了,而且预测的结果还比较准确。
    • 运行时间比较快,而且占用内存不会太大。
    • 健壮性好。

    缺点:

    • 朴素贝叶斯比较适合于属性间相互独立的情况,如果属性间的独立性不高,准确性会下降。
    • 当样本数据比较少的时候,可能无法进行正确分类。
  • 相关阅读:
    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
    11
    实战 迁移学习 VGG19、ResNet50、InceptionV3 实践 猫狗大战 问题
    tx2系统备份与恢复
    如何在Ubuntu 18.04上安装和卸载TeamViewer
    bzoj 3732 Network (kruskal重构树)
    bzoj2152 聪聪可可 (树形dp)
    牛客 216D 消消乐 (二分图最小点覆盖)
    牛客 197E 01串
    Wannafly挑战赛23
  • 原文地址:https://www.cnblogs.com/Bone-ACE/p/4558871.html
Copyright © 2011-2022 走看看