朴素贝叶斯

介绍

朴素贝叶斯是一种简单的 贝叶斯算法,因为贝叶斯定理涉及到了概率学、统计学,其应用相对复杂,因此我们只能以简单的方式使用它,比如天真的认为,所有事物之间的特征都是相互独立的,彼此互不影响

分类算法

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

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

例子

已知某学校男生占60%,女生占40%,男生只穿裤子,女生有一半穿裤子,一半穿裙子

正向概率问题

随机选一个学生,穿长裤的概率是多少,穿裙子的概率是多少

逆向概率问题

随机选一个学生,只能看见穿的是长裤,但不知道性别,需要推断出该学生是女生的概率?

解答:

穿裤子是女生的概率 = 学校女生的概率 * 女生中穿裤子的概率 / 学校中穿裤子的概率

公式如下:

P(女生|穿裤子) = P(女生) * P(穿裤子|女生) / P(穿裤子)

分布求解:

  • 学校女生的概率 是0.4
  • 女生中穿裤子的概率 是0.5
  • 学校中穿裤子的概率 = 男生穿裤子的概率 + 女生穿裤子的概率
    • 男生穿裤子的概率 是 0.6(学校男生的概率) * 1(男生中穿裤子的概率,男生都穿裤子) = 0.6
    • 女生穿裤子的概率 是 0.4(学校女生的概率) * 0.5(女生中穿裤子的概率) = 0.2

带入公式:

0.4(学校女生的概率) * 0.5(女生中穿裤子的概率) / ( 0.6(男生穿裤子的概率) + 0.2(女生穿裤子的概率) )

公式

将上面例子的公式:

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(嫁) = 6 (嫁的数量) /12(总共数据量) = 1/2

计算 p(不帅|嫁)

p(不帅|嫁) 的含义:在嫁的情况下,不帅有多少

p(不帅|嫁) = 3 (嫁的情况下,不帅的数量) / 6(嫁的数量) = 1/2

计算 p(性格不好|嫁)

p(性格不好|嫁) 的含义:在嫁的情况下,性格不好有多少

p(性格不好|嫁) = 1 (嫁的情况下,性格不好的数量) / 6(嫁的数量) = 1/6

计算 p(矮|嫁)

p(矮|嫁)的含义:在嫁的情况下,个子矮的有多少

p(矮|嫁) = 1 (嫁的情况下,个子矮的数量) / 6(嫁的数量) = 1/6

计算 p(不上进|嫁)

p(不上进|嫁)的含义:在嫁的情况下,不上进的有多少

p(不上进|嫁) = 1 (嫁的情况下,不上进的数量) / 6(嫁的数量) = 1/6

计算 p(不嫁)

p(不嫁) = 6 (不嫁的数量) /12(总共数据量) = 1/2

计算 p(不帅|不嫁)

p(不帅|不嫁) 的含义:在不嫁的情况下,不帅有多少

p(不帅|不嫁) = 2 (不嫁的情况下,不帅的数量) / 6(嫁的数量) = 1/3

计算 p(性格不好|不嫁)

p(性格不好|不嫁) 的含义:在不嫁的情况下,性格不好的有多少

p(性格不好|不嫁) = 3 (不嫁的情况下,性格不好的数量) / 6(嫁的数量) = 1/2

计算 p(矮|不嫁)

p(矮|不嫁) 的含义:在不嫁的情况下,个子矮的有多少

p(矮|不嫁) = 6 (不嫁的情况下,个子矮的数量) / 6(嫁的数量) = 1

计算 p(不上进|不嫁)

p(不上进|不嫁) 的含义:在不嫁的情况下,不上进的有多少

p(不上进|不嫁) = 4 (不嫁的情况下,不上进的数量) / 6(嫁的数量) = 2/3

计算 P(不帅、性格不好、矮、不上进)

通过上面分析可知:

P(不帅、性格不好、矮、不上进)
= P(嫁)P(不帅|嫁)P(性格不好|嫁)P(矮|嫁)P(不上进|嫁)+P(不嫁)P(不帅|不嫁)P(性格不好|不嫁)P(矮|不嫁)P(不上进|不嫁)
= 1/2 * 1/2 * 1/6 * 1/6 * 1/6 + 1/2 * 1/3 * 1/2 * 1* 2/3
= 1/864 + 1/18

带入贝叶斯公式

李雷的特征:不帅、性格不好、个子矮、不上进,女生嫁给他的概率:

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

优缺点

优点

  1. 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化即可!)
  2. 分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)

缺点

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

参考:
https://blog.csdn.net/fisherming/article/details/79509025
https://blog.csdn.net/AMDS123/article/details/70173402
http://c.biancheng.net/ml_alg/sklearn-bayes.html


原文出处:/show_1EF3Kolgw3Eh.html