【数据挖掘】拉普拉斯修正 ( 判别模型 | 概率模型 | 贝叶斯分类 | 拉普拉斯修正 | 朴素贝叶斯分类应用场景 | 朴素贝叶斯优缺点 )

2023-03-27 19:35:45 浏览数 (1)

文章目录
  • I . 判别模型 与 概率模型
  • II . 贝叶斯分类
  • III . 拉普拉斯修正
  • IV . 使用 朴素贝叶斯分类器 拉普拉斯修正 为样本分类 ( 完整分类流程 )
  • V . 朴素贝叶斯分类器使用
  • VI . 朴素贝叶斯分类的优缺点

I . 判别模型 与 概率模型

计算

P(C|X)

当属性值取

X

时 , 类别属于

C

的概率 ;

使用 判别模型 和 概率模型 计算上述

P(C|X)

概率对比 ;

① 判别模型 : 直接正面对

P(C|X)

进行建模 ; 如 决策树 , 神经网络 , 支持向量机 ;

② 概率模型 :

P(C|X)

的逆向概率

P(X|C)

进行建模 , 再计算

P(C|X)

; 如 贝叶斯分类器 ;

II . 贝叶斯分类

贝叶斯分类中 , 计算

P(C|X)

当属性值取

X

时 , 类别属于

C

的概率 ;

P(C|X)

很难直接获得 , 使用贝叶斯公式可以通过其逆概率计算该值 :

P(C|X) = frac{P(X|C) P(C)}{P(X)}
  • 先验概率 :
P(C)

是先验概率 , 数据集中类别为

C

的样本数出现的概率 , 数据集越大越准确 ;

  • 证据因子 :
P(X)

是属性取值

X

的概率 , 该值也是从数据集中统计样本属性为

X

的概率 , 数据集越大越准确 , 该值与类别判定无关 ;

  • 类条件概率 ( 似然 ) :
P(X|C)

样本是

C

类别时 , 属性值是

X

的概率 , 可以通过机器学习获得 ;

P(X|C)

是通过机器学习基于有限样本估算概率 ,

P(X)

P(C)

可以根据当前样本统计获得 ;

III . 拉普拉斯修正

1 . 分类属性

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

的样本个数 ;

2 . 属性屏蔽的情况 :

给出一个样本 , 预测其分类 ;

如果该样本的某个属性值 , 在某一个预测的分类

C_i

中没有出现过 , 即

S_{ik}

0

, 那么计算出来的分类属性

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

就是

0

;

进而

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

多属性分类的联合概率也就成为

0

;

那么计算其分类为

C_i

的概率肯定是

0

, 整体的联合概率是通过乘法法则计算的 , 这样会抹去其它属性的信息 , 即使其它属性的权重很大 , 整体概率也会成为

0

;

其它属性的概率权重被屏蔽了 , 结果肯定不准确 ; 这种情况就要 引入 拉普拉斯修正 ;

3 . 拉普拉斯修正 :

① 计算 先验概率 时 进行 拉普拉斯修正 :

P(C) = frac{| D_c | 1}{ | D | N }
D_c

表示训练集中 , 分类为

C

的样本个数 ;

D

表示训练集中样本中个数 ;

N

表示按照某属性分类的类别数 , 如 , 是否购买商品 , 是 或 否 两种可取值类别 , 这里

N=2

;

② 计算 类条件概率 ( 似然 ) 时 进行 拉普拉斯修正 :

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

是分类为

C_i

类型的数据集样本个数 ;

S_{ik}

是被分类成

C_i

类型的样本中 , 并且第

k

个值是

X_k

的样本个数 ;

N_i

表示该属性的可取值个数 , 如 , 是否购买商品 , 是 或 否 两种可取值类别 , 这里

N_i=2

;

IV . 使用 朴素贝叶斯分类器 拉普拉斯修正 为样本分类 ( 完整分类流程 )

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(C) = frac{| D_c | 1}{ | D | N }
D_c

表示训练集中 , 分类为

C

的样本个数 ;

D

表示训练集中样本中个数 ;

N

表示按照某属性分类的类别数 , 如 , 是否购买商品 , 是 或 否 两种可取值类别 , 这里

N=2

;

P(Y)

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

14

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

frac{9 1}{14 2}

;

P(N)

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

14

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

frac{5 1}{14 2}

;

7 . 计算

P(X|Y)

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

4

个属性取值

X

向量的概率 ; ( 引入拉普拉斯修正 )

这里使用引入拉普拉斯修正的 分类概率 计算公式 :

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

是分类为

C_i

类型的数据集样本个数 ;

S_{ik}

是被分类成

C_i

类型的样本中 , 并且第

k

个值是

X_k

的样本个数 ;

N_i

表示该属性的可取值个数 , 如 , 是否购买商品 , 是 或 否 两种可取值类别 , 这里

N_i=2

;

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

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 岁 ;

拉普拉斯修正 : 年龄有

3

种取值 , 分别是 小于 30 , 30 ~ 40 , 40 以上 , 拉普拉斯修正的

N_i = 3

;

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

P( 收入中等 | Y)

计算 :

9

个人买商品 , 其中有

4

个 中等收入者 ;

拉普拉斯修正 : 收入水平有

3

种取值 , 分别是 高 , 中 , 低 , 拉普拉斯修正的

N_i = 3

;

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

P( 是学生 | Y)

计算 :

9

个人买商品 , 其中有

6

个 是学生 ;

拉普拉斯修正 : 是否是学生有

2

种取值 , 分别是 是 , 否 , 拉普拉斯修正的

N_i = 2

;

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

P( 信用等级一般 | Y)

计算 :

9

个人买商品 , 其中有

6

个人信用等级一般 ;

拉普拉斯修正 : 信用等级 有

2

种取值 , 分别是 好 , 一般 , 拉普拉斯修正的

N_i = 2

;

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

P(X|Y)

计算结果 :

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

8 . 计算

P(X|Y) P(Y)

值 :

P(X|Y) =frac{2 1}{9 3} times frac{4 1}{9 3} times frac{6 1}{9 2} times frac{6 1}{9 2}
P(Y) = frac{9 1}{14 2}
P(X|Y) P(Y) = frac{2 1}{9 3} times frac{4 1}{9 3} times frac{6 1}{9 2} times frac{6 1}{9 2} times frac{9 1}{14 2} approx 0.0263644972451791‬

9 . 计算

P(X|N)

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

4

个属性取值

X

向量的概率 ;

这里使用引入拉普拉斯修正的 分类概率 计算公式 :

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

是分类为

C_i

类型的数据集样本个数 ;

S_{ik}

是被分类成

C_i

类型的样本中 , 并且第

k

个值是

X_k

的样本个数 ;

N_i

表示该属性的可取值个数 , 如 , 是否购买商品 , 是 或 否 两种可取值类别 , 这里

N_i=2

;

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

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 岁 ;

拉普拉斯修正 : 年龄有

3

种取值 , 分别是 小于 30 , 30 ~ 40 , 40 以上 , 拉普拉斯修正的

N_i = 3

;

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

P( 收入中等 | N)

计算 :

5

个人不买商品 , 其中有

2

个 中等收入者 ;

拉普拉斯修正 : 收入水平有

3

种取值 , 分别是 高 , 中 , 低 , 拉普拉斯修正的

N_i = 3

;

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

P( 是学生 | N)

计算 :

5

个人不买商品 , 其中有

1

个 是学生 ;

拉普拉斯修正 : 是否是学生有

2

种取值 , 分别是 是 , 否 , 拉普拉斯修正的

N_i = 2

;

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

P( 信用等级一般 | N)

计算 :

5

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

拉普拉斯修正 : 信用等级 有

2

种取值 , 分别是 好 , 一般 , 拉普拉斯修正的

N_i = 2

;

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

P(X|N)

计算结果 :

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

10 . 计算

P(X|N) P(N)

值 :

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

11 . 比较

P(X|Y) P(Y)

P(X|N) P(N)

两个值 :

P(X|Y) P(Y) = frac{2 1}{9 3} times frac{4 1}{9 3} times frac{6 1}{9 2} times frac{6 1}{9 2} times frac{9 1}{14 2} approx 0.0263644972451791‬
P(X|N) P(N) = frac{3 1}{5 3} times frac{2 1}{5 3} times frac{1 1}{5 2} times frac{2 1}{5 2} times frac{5 1}{14 2} approx 0.00421875

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

V . 朴素贝叶斯分类器使用

1 . 要求分类速度快 : 此时先计算出所有数据的概率估值 , 分类时 , 直接查表计算 ;

2 . 数据集频繁变化 : 使用懒惰学习的策略 , 收到 分类请求时 , 再进行训练 , 然后预测 , 分类速度肯定变慢 , 但是预测准确 ;

3 . 数据不断增加 : 使用增量学习策略 , 原来的估值不变 , 对新样本进行训练 , 然后基于新样本的估值修正原来的估值 ;

VI . 朴素贝叶斯分类的优缺点

朴素贝叶斯分类 :

  • 优点 : 只用几个公式实现 , 代码简单 , 结果大多数情况下比较准确 ;
  • 缺点 : 假设的属性独立实际上不存在 , 属性间是存在关联的 , 这会导致部分分类结果不准确 ;

针对属性间存在依赖的情况 , 使用 贝叶斯信念网络 方法进行分类 ;

0 人点赞