【数据挖掘】朴素贝叶斯分类器 ( 多属性概率计算 | 朴素贝叶斯分类案例分析 )

文章目录

  • 一、 朴素贝叶斯分类器 简介
  • 二、 后验概率 及 对比内容
  • 三、 先验概率 及 未知处理方案
  • 四、 处理多属性数据集方案
  • 五、 朴素贝叶斯分类 案例

一、 朴素贝叶斯分类器 简介


1 . 分类任务简介 :

① 样本和属性 : 给定一个数据集 , 每个样本都有

n

维的特征向量 , 即每个样本有

n

个属性值 ;

② 属性值分类 : 样本的某个属性值

D

m

个取值类型 , 即根据该属性

D

可以将样本分为

m

类 ;

③ 分类操作 : 给定未知样本

X

, 将其按照属性值

D

, 分为

m

个类型中的一类 ;

2 . 朴素贝叶斯分类器 分类过程 :

① 提出假设 : 假设属性的

m

个取值分别是

\{ C_1 , C_2 , \cdots , C_m \}

;

② 计算每个分类的概率 :

样本

X

属于

C_1

类别的概率 :

P(C_1 | X)

;

样本

X

属于

C_2

类别的概率 :

P(C_2 | X)

;

\vdots

样本

X

属于

C_m

类别的概率 :

P(C_m | X)

;

③ 分类结果确定 : 将样本

X

分类为

C_i

类别 , 前提是该类别概率是最大的 , 其大于其余

X

样本属于其余类别的概率 , 表示为 :

P(C_i | X) > P(C_j | X) , 1 \leq j \leq m , j \not = i

二、 后验概率 及 对比内容


1 . 后验概率 : 上述的 样本

X

属于

C_i

类别的概率

P(C_i | X)

是最大的 , 贝叶斯方法中会将该

X

样本分类为

C_i

类别 , 同时该最大概率称为 后验概率 ;

根据贝叶斯定理可以计算后验概率值 :

P(C_i | X) = \frac{P(X | C_i) P(C_i)}{P(X)}

2 . 对比不同假设的概率 :

① 不考虑

P(X)

:

P(X)

是一个常数 , 可以不考虑该值 , 所有的概率都除以了该值 , 对比各个类别概率时 , 可以不考虑改值具体是多少 ;

② 对比内容 : 只对比不同概率的

P(X | C_j) P(C_j) , 1 \leq j \leq m

的值大小即可 ;

三、 先验概率 及 未知处理方案


1 . 先验概率未知 : 如果先验概率

P(C_j) , 1 \leq j \leq m

是未知的

2 . 概率相等策略 : 那么假定这些类型

\{ C_1 , C_2 , \cdots , C_m \}

出现的概率是相等的 ;

① 如 : 进行邮件过滤时 , 不知道收到正常邮件 , 和垃圾邮件的概率各是多少 , 假定

50\%

概率收到正常邮件 , 假定

50\%

概率收到垃圾邮件 ;

② 如果上述类别的先验概率

P(C_j) , 1 \leq j \leq m

相等 , 那么只需要对比 似然概率

P(X | C_j) , 1 \leq j \leq m

的大小即可 ;

3 . 使用测试集数据计算先验概率 :

① 已知条件 :

S

是训练集数据样本总个数 ,

S_j , 1 \leq j \leq m

是被分类为

S_j

类别的样本个数 , 即属性

D

取值

S_j

的样本个数 ;

② 计算方法 : 计算

P(C_j) , 1 \leq j \leq m

先验概率 , 使用

P(C_j) = \frac{S_j}{S}

公式计算即可 , 即将本训练集中的分类比例当做其先验概率 ;

四、 处理多属性数据集方案


1 . 多属性特征 : 如果要处理的样本数据的特征有

n

个属性 , 其取值

\{X_1 , X_2 , \cdots , X_n\}

组成了向量

X

;

2 . 后验概率 : 计算最终分类为

C_1

时 , 多个属性的取值为

X

向量的概率 , 即

P(X | C_1)

3 . 朴素贝叶斯由来 : 朴素地认为这些属性之间不存在依赖关系 , 就可以使用乘法法则计算这些属性取值同时发生的概率 ;

4 . 计算单个分类概率 : 分类为

C_1

n

个属性每个取值取值概率 :

当最终分类为

C_1

时 , 第

1

个属性取值

X_1

的概率为

P(X_1 | C_1)

;

当最终分类为

C_1

时 , 第

2

个属性取值

X_2

的概率为

P(X_2 | C_1)

;

\vdots

当最终分类为

C_1

时 , 第

n

个属性取值

X_n

的概率为

P(X_n | C_1)

;

最终分类为

C_1

时 ,

n

个属性取值

X

向量的概率 :

P(X|C_1) = \prod_{k=1}^n P( X_k | C_1 )

5 . 多属性分类概率总结 : 分类为

C_i

n

个属性取值

X

向量的概率为 :

P(X|C_i) = \prod_{k=1}^n P( X_k | C_i )

6 . 分类属性

P( X_k | C_i )

计算方式 : 如果第

k

个属性的取值是离散的 , 即分类属性 , 那么通过以下公式计算 :

P( X_k | C_i ) = \frac{S_{ik}}{S_i}
S_i

是分类为

C_i

类型的数据集样本个数 ;

S_{ik}

是被分类成

C_i

类型的样本中 , 并且第

k

个值是

X_k

的样本个数 ;

7 . 回归属性

P( X_k | C_i )

计算方式 : 如果第

k

个属性的取值是连续的 , 即回归属性 , 那么通过以下公式计算 :

P( X_k | C_i ) = g(x_k , \mu_{C_i}, \sigma_{C_i}) = \frac{1}{ \sqrt {2 \pi} \sigma_{C_i} }e ^ {- \frac{( x - \mu_{C_i} ) ^ 2}{2 \sigma_{C_i}^2}}

这是通过概率密度函数进行计算 , 假定该属性服从高斯分布概率模型 ;

g(x_k , \mu_{C_i}, \sigma_{C_i})

是高斯分布概率密度函数 ,

\mu_{C_i}

是平均值 ,

\sigma_{C_i}

是标准差 ;

8 . 样本分类 :

① 样本 : 给出未知属性类型样本 , 其

n

个已知的属性取值为

X

向量 ;

② 分类个数 : 其根据分类属性可能分为

m

类 ;

③ 分类 : 求其取值为

X

向量时 , 分类为

C_i

的概率 , 哪个概率最大 , 其被分为哪个

C_i

类型 , 表示为

P(C_i | X) = \frac{P(X | C_i) P(C_i)}{P(X)}

④ 后验概率 : 多属性取值为

X

向量时 , 分类为

C_i

的概率进行比较 , 分母都是

P(X)

, 是一个常数 , 可以不考虑这种情况 , 只比较

P(X | C_i) P(C_i)

值的大小 ,

P(X | C_i) P(C_i)

值最大的情况 , 就是分类的目标分类

C_i

, 也就是后验概率 ;

五、 朴素贝叶斯分类 案例


1 . 需求 : 根据 年龄 , 收入水平 , 是否是学生 , 信用等级 , 预测该用户是否会购买商品 ;

年龄

收入水平

是否是学生

信用等级

是否购买商品

小于 30 岁

高收入

不是

一般

不会

小于 30 岁

高收入

不是

很好

不会

31 ~ 39 岁

高收入

不是

一般

40 岁以上

中等收入

不是

一般

40 岁以上

低收入

一般

40 岁以上

低收入

很好

不会

31 ~ 40 岁

低收入

不是

很好

小于 30 岁

中等收入

不是

一般

不会

小于 30 岁

低收入

一般

40 岁以上

中等收入

一般

小于 30 岁

中等收入

很好

31 ~ 39 岁

中等收入

不是

很好

31 ~ 39 岁

高收入

一般

40 岁以上

中等收入

不是

很好

不会

2 . 为某未知类型样本进行分类 ;

① 未知样本的

4

个属性值为 : 年龄 小于 30 岁 , 收入 中等 , 是否是学生 是 , 信用等级 一般 , 四个值组成向量

X

;

② 分类类型 : 是否购买商品 , 是 或者 否 ; 购买商品为 时间

Y

, 不购买商品为事件

N

;

③ 样本

4

个属性取值

X

, 并且类型为

Y

的概率 :

P(Y | X)

;

④ 样本

4

个属性取值

X

, 并且类型为

N

的概率 :

P(N | X)

;

3 . 计算取值

X

向量时 , 某分类的概率

P(Y | X)

:

① 以

P(Y | X)

计算为例 : 样本

4

个属性取值

X

, 并且类型为

Y

的概率 , 直接求该概率是无法计算的 ;

② 引入贝叶斯公式 : 使用其逆概率

P(X|Y)

, 当类型是

Y

是 , 取值为

X

的概率 ;

P(Y | X) = \frac{P(X|Y) P(Y)}{P(X)}

③ 逆概率

P(X|Y)

: 当类型是

Y

是 , 取值为

X

的概率 ; 即 当购买商品时 , 前

4

个属性取值为

X

向量的概率 ;

4 . 计算取值

X

向量时 , 某分类的概率

P(N | X)

:

① 以

P(N | X)

计算为例 : 样本

4

个属性取值

X

, 并且类型为

N

的概率 , 直接求该概率是无法计算的 ;

② 引入贝叶斯公式 : 使用其逆概率

P(X|N)

, 当类型是

N

是 , 取值为

X

的概率 ;

P(N | X) = \frac{P(X|N) P(N)}{P(X)}

③ 逆概率

P(X|N)

: 当类型是

N

是 , 取值为

X

的概率 ; 即 当购买商品时 , 前

4

个属性取值为

X

向量的概率 ;

5 . 比较取值

Y

和 取值

N

的两个概率 :

① 原始概率 :

P(N | X)

P(Y | X)

两个概率进行比较 ;

\frac{P(X|Y) P(Y)}{P(X)}

\frac{P(X|N) P(N)}{P(X)}

两个概率进行比较 ;

② 省略分母比较分子 : 分母都是

P(X)

, 可以只比较分子 ,

P(X|Y) P(Y)

P(X|N) P(N)

进行比较 ;

6 . 计算

2

个先验概率 :

P(Y)

表示购买商品的概率 , 即上面

14

个训练集样本中 , 购买商品的概率 , 是

\frac{9}{14}

;

P(N)

表示不买商品的概率 , 即上面

14

个训练集样本中 , 不买商品的概率 , 是

\frac{5}{14}

;

7 . 计算

P(X|Y)

概率 : 样本用户购买商品时 , 前

4

个属性取值

X

向量的概率 ;

① 属性独立 : 朴素贝叶斯分类中认为属性间都是独立的 , 互不干扰 , 可以将 “前

4

个属性取值

X

向量的概率” 变成概率乘积 ;

② 未知样本的

4

个属性值为 : 年龄 小于 30 岁 , 收入 中等 , 是否是学生 是 , 信用等级 一般 , 四个值组成向量

X

;

P(X|Y)

计算 : 买商品的用户样本中 , 取值为

X

向量的概率 , 如下 :

P(X|Y) = P( 年龄小于 30 | Y) \times P( 收入中等 | Y) \times P( 是学生 | Y) \times P( 信用等级一般 | Y)

其中 :

P( 年龄小于 30 | Y)

买商品的用户中 , 年龄 小于 30 岁的概率 ;

P( 收入中等 | Y)

买商品的用户中 , 收入中等的概率 ;

P( 是学生 | Y)

买商品的用户中 , 是学生的概率 ;

P( 信用等级一般 | Y)

买商品的用户中 , 信用等级一般的概率 ;

P( 年龄小于 30 | Y)

计算 :

9

个人买商品 , 其中有

2

个小于 30 岁 ;

P( 年龄小于 30 | Y) = \frac{2}{9}

P( 收入中等 | Y)

计算 :

9

个人买商品 , 其中有

4

个 中等收入者 ;

P( 收入中等 | Y) = \frac{4}{9}

P( 是学生 | Y)

计算 :

9

个人买商品 , 其中有

6

个 是学生 ;

P( 是学生 | Y) = \frac{6}{9}

P( 信用等级一般 | Y)

计算 :

9

个人买商品 , 其中有

6

个人信用等级一般 ;

P( 信用等级一般 | Y) = \frac{6}{9}

P(X|Y)

计算结果 :

\begin{array}{lcl} P(X|Y) &=& P( 年龄小于 30 | Y) \times P( 收入中等 | Y) \times P( 是学生 | Y) \times P( 信用等级一般 | Y) \\\\ &=& \frac{2}{9} \times \frac{4}{9} \times \frac{6}{9} \times \frac{6}{9} \\\\ \end{array}

8 . 计算

P(X|Y) P(Y)

值 :

P(X|Y) =\frac{2}{9} \times \frac{4}{9} \times \frac{6}{9} \times \frac{6}{9}
P(Y) = \frac{9}{14}
P(X|Y) P(Y) = \frac{2}{9} \times \frac{4}{9} \times \frac{6}{9} \times \frac{6}{9} \times \frac{9}{14} \approx 0.0282186948853616

9 . 计算

P(X|N)

概率 : 样本用户没有购买商品时 , 前

4

个属性取值

X

向量的概率 ;

① 属性独立 : 朴素贝叶斯分类中认为属性间都是独立的 , 互不干扰 , 可以将 “前

4

个属性取值

X

向量的概率” 变成概率乘积 ;

② 未知样本的

4

个属性值为 : 年龄 小于 30 岁 , 收入 中等 , 是否是学生 是 , 信用等级 一般 , 四个值组成向量

X

;

P(X|N)

计算 : 不买商品的用户样本中 , 取值为

X

向量的概率 , 如下 :

P(X|N) = P( 年龄小于 30 | N) \times P( 收入中等 | N) \times P( 是学生 | N) \times P( 信用等级一般 | N)

其中 :

P( 年龄小于 30 | N)

不买商品的用户中 , 年龄 小于 30 岁的概率 ;

P( 收入中等 | N)

不买商品的用户中 , 收入中等的概率 ;

P( 是学生 | N)

不买商品的用户中 , 是学生的概率 ;

P( 信用等级一般 | N)

不买商品的用户中 , 信用等级一般的概率 ;

P( 年龄小于 30 | N)

计算 :

5

个人不买商品 , 其中有

3

个小于 30 岁 ;

P( 年龄小于 30 | N) = \frac{3}{5}

P( 收入中等 | N)

计算 :

5

个人不买商品 , 其中有

2

个 中等收入者 ;

P( 收入中等 | N) = \frac{2}{5}

P( 是学生 | N)

计算 :

5

个人不买商品 , 其中有

1

个 是学生 ;

P( 是学生 | N) = \frac{1}{5}

P( 信用等级一般 | N)

计算 :

5

个人不买商品 , 其中有 $2 个人信用等级一般 ;

P( 信用等级一般 | N) = \frac{2}{5}

P(X|N)

计算结果 :

\begin{array}{lcl} P(X|N) &=& P( 年龄小于 30 | N) \times P( 收入中等 | N) \times P( 是学生 | N) \times P( 信用等级一般 | N) \\\\ &=& \frac{3}{5} \times \frac{2}{5} \times \frac{1}{5} \times \frac{2}{5} \\\\ \end{array}

10 . 计算

P(X|N) P(N)

值 :

P(X|N) = \frac{3}{5} \times \frac{2}{5} \times \frac{1}{5} \times \frac{2}{5}
P(N) = \frac{5}{14}
P(X|N) P(N) = \frac{3}{5} \times \frac{2}{5} \times \frac{1}{5} \times \frac{2}{5} \times \frac{5}{14} \approx 0.0068571428571429

11 . 比较

P(X|Y) P(Y)

P(X|N) P(N)

两个值 :

P(X|Y) P(Y) = \frac{2}{9} \times \frac{4}{9} \times \frac{6}{9} \times \frac{6}{9} \times \frac{9}{14} \approx 0.0282186948853616
P(X|N) P(N) = \frac{3}{5} \times \frac{2}{5} \times \frac{1}{5} \times \frac{2}{5} \times \frac{5}{14} \approx 0.0068571428571429

由上面进行对比得出 , 使用朴素贝叶斯分类 , 该样本用户会购买商品 ;