网站菜单

朴素贝叶斯分类算法

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。

1  分类问题综述

对于分类问题,其实谁都不会陌生,日常生活中我们每天都进行着分类过程。例如,当你看到一个人,你的脑子下意识判断他是学生还是社会上的人;你可能经常会走在路上对身旁的朋友说“这个人一看就很有钱”之类的话,其实这就是一种分类操作。

既然是贝叶斯分类算法,那么分类的数学描述又是什么呢?

从数学角度来说,分类问题可做如下定义:已知集合C = y^1, y^2, y^3,... , y^nI = x^1, x^2, x^3,..., x^n,确定映射规则y = f(x),使得任意x^i ∈ I有且只有一个y^i ∈ C,使得y^i ∈ f(x^i)成立。

其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合(特征集合),其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器f。

分类算法的内容是要求给定特征,让我们得出类别,这也是所有分类问题的关键。那么如何由指定特征,得到我们最终的类别,也是我们下面要讲的,每一个不同的分类算法,对应着不同的核心思想。

本篇文章,我会用一个具体实例,对朴素贝叶斯算法几乎所有的重要知识点进行讲解。

2  朴素贝叶斯分类

那么既然是朴素贝叶斯分类算法,它的核心算法又是什么呢?

下面是贝叶斯公式:

P(B|A) = \dfrac{P(A|B)P(B)}{P(A)}

换个表达形式就会明朗很多,如下:

P(类别|特征) = \dfrac{P(特征|类别)P(类别)}{P(特征)}

最终的目的是求得p(类别|特征)。

3  例题分析

下面我先给出例子问题。给定数据如下:

现在给我们的问题是,如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

这是一个典型的分类问题,转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))的概率,谁的概率大,我就能给出嫁或者不嫁的答案!

这里我们联系到朴素贝叶斯公式:

P(嫁|不帅,性格不好,身高矮,不上进) = \dfrac{P(不帅,性格不好,身高矮,不上进|嫁)P(嫁)}{P(不帅,性格不好,身高矮,不上进)}

我们需要求P(嫁|不帅,性格不好,身高矮,不上进)

这是我们不知道的,但是通过朴素贝叶斯公式可以转化为好求的三个量。

P(不帅,性格不好,身高矮,不上进|嫁)P(不帅,性格不好,身高矮,不上进)P(嫁)(至于为什么能求,后面会讲,那么就太好了,将待求的量转化为其它可求的值,这就相当于解决了我们的问题!)

4  朴素贝叶斯算法的朴素一词解释

那么这三个量是如何求得?

是根据已知训练数据统计得来,下面详细给出该例子的求解过程。回忆一下我们要求的公式如下:

P(嫁|不帅,性格不好,身高矮,不上进) = \dfrac{P(不帅,性格不好,身高矮,不上进|嫁)P(嫁)}{P(不帅,性格不好,身高矮,不上进)}

那么我只要求得P(不帅,性格不好,身高矮,不上进|嫁)P(不帅,性格不好,身高矮,不上进)P(嫁)即可,好的,下面我分别求出这几个概率,最后一比,就得到最终结果。

P(不帅、性格不好、身高矮、不上进|嫁) = P(不帅|嫁)P(性格不好|嫁)P(身高矮|嫁)P(不上进|嫁),那么我就要分别统计后面几个概率,也就得到了左边的概率!

等等,为什么这个成立呢?学过概率论的同学可能有感觉了,这个等式成立的条件需要特征之间相互独立吧!

对的!这也就是为什么朴素贝叶斯分类有朴素一词的来源,朴素贝叶斯算法是假设各个特征之间相互独立,那么这个等式就成立了!

由此,我们将(嫁|不帅、性格不好、矮、不上进)转换成三个可求的P(嫁)、P(不帅、性格不好、矮、不上进|嫁)、P(不帅、性格不好、矮、不上进)。进一步分解可以得:

P(不帅、性格不好、矮、不上进)=P(嫁)P(不帅|嫁)P(性格不好|嫁)P(矮|嫁)P(不上进|嫁)+P(不嫁)P(不帅|不嫁)P(性格不好|不嫁)P(矮|不嫁)P(不上进|不嫁)。

P(不帅、性格不好、矮、不上进|嫁)=P(不帅|嫁)P(性格不好|嫁)P(矮|嫁)P(不上进|嫁)

将上面的公式整理一下可得:

 P(嫁)=1/2、P(不帅|嫁)=1/2、P(性格不好|嫁)=1/6、P(矮|嫁)=1/6、P(不上进|嫁)=1/6。

P(不嫁)=1/2、P(不帅|不嫁)=1/3、P(性格不好|不嫁)=1/2、P(矮|不嫁)=1、P(不上进|不嫁)=2/3。

但是由贝叶斯公式可得:对于目标求解为不同的类别,贝叶斯公式的分母总是相同的。所以,只求解分子即可

于是,对于类别“嫁”的贝叶斯分子为:P(嫁)P(不帅|嫁)P(性格不好|嫁)P(矮|嫁)P(不上进|嫁)=1/2 * 1/2 * 1/6 * 1/6 * 1/6=1/864     

对于类别“不嫁”的贝叶斯分子为:P(不嫁)P(不帅|不嫁)P(性格不好|不嫁)P(矮|不嫁)P(不上进|不嫁)=1/2 * 1/3 * 1/2   2/3=1/18。

经代入贝叶斯公式可得:P(嫁|不帅、性格不好、矮、不上进)=(1/864) / (1/864+1/18)=1/49=2.04%

P(不嫁|不帅、性格不好、矮、不上进)=(1/18) / (1/864+1/18)=48/49=97.96%

则P(不嫁|不帅、性格不好、矮、不上进) > P(嫁|不帅、性格不好、矮、不上进),因此该女子选择不嫁。

5 朴素贝叶斯的优缺点

优点:

1. 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化即可!)

2. 分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)

缺点:

朴素贝叶斯假设属性之间相互独立,这种假设在实际过程中往往是不成立的。在属性之间相关性越大,分类误差也就越大。

来源:

显示评论 (1)

文章评论

  • 回旋霹雳蛋仔

    这个公式太扎心了

    • 本文作者
    • 回复

相关推荐

Yolov5_Seg输出解析

通过矩阵乘法(在代码中称为“matmul”)来计算分割掩码的原因,主要与实例分割网络(例如 YOLOv5 Segmentation)的实现方式有关。这种方法实际上是一种高效的特征图与目标分割系数组合的…

Ubuntu交叉编译Python

在 Ubuntu 上交叉编译 Python 的流程通常用于为不同平台生成可执行文件(如 ARM、MIPS 等)。以下是一般的操作步骤: 1. 安装必要的依赖工具 首先,确保已经安装了编译所需的工具和依…