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) 作为类别输出。


    优缺点

    优点:

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

    缺点:

    • 朴素贝叶斯比较适合于属性间相互独立的情况,如果属性间的独立性不高,准确性会下降。
    • 当样本数据比较少的时候,可能无法进行正确分类。
  • 相关阅读:
    swagger生成接口文档
    二分查找通用模板
    go-json技巧
    【Go】获取用户真实的ip地址
    数据库储存时间类型
    密码加密:md5/sha1 +盐值
    参数里时间格式的转换
    不好定位的元素定位
    vim编辑器
    ps -ef | grep php kill -9
  • 原文地址:https://www.cnblogs.com/Bone-ACE/p/4558871.html
Copyright © 2011-2022 走看看