文章目录

  • 前言
  • 一、贝叶斯定理是什么?
  • 条件概率
  • 贝叶斯定理
  • 二、朴素贝叶斯算法
  • 连续值的分类
  • Laplace校准
  • 三、朴素贝叶斯应用案例



前言

    贝叶斯算法是一种分类算法,它以贝叶斯定理作为基础,因此被称为贝叶斯分类。其中“朴素贝叶斯”是贝叶斯分类中最基础的算法。

一、贝叶斯定理是什么?

    说到贝叶斯定理,不得不佩服伟大的数学家。不是说贝叶斯定理有多么复杂,而是真正的实用于我们的生活。

Java贝叶斯算法 贝叶斯算法介绍_条件概率,如何得知两条件对换后的条件概率Java贝叶斯算法 贝叶斯算法介绍_条件概率_02?贝叶斯定理则帮助了我们!在开始讲解贝叶斯定理前,首先要温习一下基本的概念。

条件概率

Java贝叶斯算法 贝叶斯算法介绍_条件概率, 条件概率,表示事件B已经发生的前提下,事件A发生的概率,其求解公式为:Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_04,但这里写个后话,机器学习里并不这样求解,而是根据大数定律,直接用频率代替概率。

贝叶斯定理

Java贝叶斯算法 贝叶斯算法介绍_条件概率的概率,但我们却想要知道条件互换后的概率Java贝叶斯算法 贝叶斯算法介绍_条件概率_02,这就用到了大名鼎鼎的“贝叶斯定理”!

    这里先直接给出结论:

Java贝叶斯算法 贝叶斯算法介绍_先验概率_07


对应机器学习理念:

Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_08

x为特征,y代表标签

  1. 先验概率Java贝叶斯算法 贝叶斯算法介绍_先验概率_09求解
        事实上,先验概率Java贝叶斯算法 贝叶斯算法介绍_先验概率_09在实际工作中很容易得到,利用大数定理(当样本足够多时,频率趋于稳定等于其概率),这样当训练样本充足时,Java贝叶斯算法 贝叶斯算法介绍_先验概率_09可以使用各类出现的频率来代替。例如西瓜数据集中,好瓜坏瓜统计值占比即可体现其先验概率。
  2. 条件概率Java贝叶斯算法 贝叶斯算法介绍_朴素贝叶斯_12求解
        条件概率,它表达的意思是在类别B中出现A的概率,它涉及到属性的联合概率问题,若只有一个离散属性还好,当属性多时采用频率估计起来就十分困难,因此这里一般采用极大似然法进行估计,即直接统计得出,例如已知标签y分两种好瓜和坏瓜,特征x分为{色泽,纹理,敲声…等},因此可直接统计Java贝叶斯算法 贝叶斯算法介绍_朴素贝叶斯_13Java贝叶斯算法 贝叶斯算法介绍_先验概率_14等频率

二、朴素贝叶斯算法

    前言曾提及,朴素贝叶斯作为最基础最简单的贝叶斯分类算法,为什么这样说?接下来你就会明白。

    我们拿西瓜数据集来举例,数据集中有X特征属性,包括敲声,纹理等特征。最终分类集合有两种,好瓜和坏瓜,根据第一节贝叶斯定理的计算过程,我们可按照如下思路进行建模:

  • Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_15为待分类的特征属性,如Java贝叶斯算法 贝叶斯算法介绍_先验概率_16: 敲声,Java贝叶斯算法 贝叶斯算法介绍_条件概率_17: 纹理等;
  • 有类别集合Java贝叶斯算法 贝叶斯算法介绍_朴素贝叶斯_18, 例如Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_19: 好瓜,Java贝叶斯算法 贝叶斯算法介绍_条件概率_20: 坏瓜;
  • 计算先验概率Java贝叶斯算法 贝叶斯算法介绍_朴素贝叶斯_21, Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_22, 可根据统计值的频率替代概率。
  • 计算条件概率Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_23,
    理论上可通过乘法定理求得,但在朴素贝叶斯算法中,假设各属性之间相互独立,即条件独立假设。这样, 在第3步的条件概率计算中,公式可简化为如下版本:
        即直接统计各标签下对应的特征所占的频率即可,这也是朴素贝叶斯计算的精华所在,有了条件独立假设,在计算各类下特征的条件概率则简单了许多。

连续值的分类

Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_24。这一小节,主要针对特征是连续值时,该如何计算条件概率?

    当特征为连续值时,通常可以将特征分布视为“高斯分布(正态分布)”,根据高斯分布的特征,只需计算出此连续特征的平均值和标准差,就可以描述此特征对应的概率密度。

Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_25

    即Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_26

Laplace校准

Java贝叶斯算法 贝叶斯算法介绍_条件概率_27时,即此分类下没有某划分出来特征项样本,则会在计算条件概率的乘法公式中将结果置0,这将很大程度的影响着分类器的质量。为了避免这种情况的发生,通常会将此特征项计数值+1,避免0的出现!这种做法成为Laplace校准

三、朴素贝叶斯应用案例

应用:检测某短视频平台中账户是否为僵尸账号
类别Java贝叶斯算法 贝叶斯算法介绍_先验概率_28
特征x:Java贝叶斯算法 贝叶斯算法介绍_条件概率_29\

Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_30

Java贝叶斯算法 贝叶斯算法介绍_条件概率_31

Java贝叶斯算法 贝叶斯算法介绍_先验概率_32

Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_33

Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_34

0

Java贝叶斯算法 贝叶斯算法介绍_条件概率_35

Java贝叶斯算法 贝叶斯算法介绍_先验概率_36

1

Java贝叶斯算法 贝叶斯算法介绍_朴素贝叶斯_37

Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_38

\

目标:提供某账号的特征,分析此账号是否为僵尸账号。

Step1:梳理贝叶斯定理
    Java贝叶斯算法 贝叶斯算法介绍_先验概率_39

Step2:计算先验概率Java贝叶斯算法 贝叶斯算法介绍_朴素贝叶斯_40
    根据后台人工统计的数据,分别统计出Java贝叶斯算法 贝叶斯算法介绍_条件概率_41的概率,假如样本量为10000,其中真实账号有7800个,僵尸账号有2200个,那么:
Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_42
Java贝叶斯算法 贝叶斯算法介绍_先验概率_43

Step3:计算各分类各特征的条件概率

Java贝叶斯算法 贝叶斯算法介绍_先验概率_44;
Java贝叶斯算法 贝叶斯算法介绍_条件概率_45;
Java贝叶斯算法 贝叶斯算法介绍_先验概率_46;

Java贝叶斯算法 贝叶斯算法介绍_先验概率_47;
Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_48;
Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_49;


Java贝叶斯算法 贝叶斯算法介绍_条件概率_50;
Java贝叶斯算法 贝叶斯算法介绍_先验概率_51;
Java贝叶斯算法 贝叶斯算法介绍_先验概率_52;

Java贝叶斯算法 贝叶斯算法介绍_先验概率_53;
Java贝叶斯算法 贝叶斯算法介绍_先验概率_54;
Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_55;


Java贝叶斯算法 贝叶斯算法介绍_朴素贝叶斯_56;
Java贝叶斯算法 贝叶斯算法介绍_朴素贝叶斯_57;
Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_58;
Java贝叶斯算法 贝叶斯算法介绍_条件概率_59;


建立完分类器后,对测试样本进行分类,若我们拿到一个账号,其特征为Java贝叶斯算法 贝叶斯算法介绍_朴素贝叶斯_60

根据Java贝叶斯算法 贝叶斯算法介绍_Java贝叶斯算法_61,其中分母为常数,忽略之。


Java贝叶斯算法 贝叶斯算法介绍_条件概率_62

Java贝叶斯算法 贝叶斯算法介绍_先验概率_63

可以看到,通过朴素贝叶斯分类器,更倾向于将此账号划分为正常账号!