朴素贝叶斯分类器数学原理

数学

给定一个feature集合

X = ( X 1 , X 2 , X 3 , . . . , X n ) X=(X_{1},X_{2},X_{3},...,X_{n}) X=(X1,X2,X3,...,Xn)

标签

Y Y Y ∈ ( y 1 , y 2 , . . . , y n ) \in (y_{1},y_{2},...,y_{n}) (y1,y2,...,yn)

给定一组feature,标签Y为y的概率:

P ( Y = y ∣ X = ( x 1 , x 2 , . . . , x n ) ) P(Y=y|X=(x_{1},x_{2},...,x_{n})) P(Y=yX=(x1,x2,...,xn))

根据已有的数据,和新的一组feature,我们要找出 P ( Y = y ∣ X = ( x 1 , x 2 , . . . , x n ) ) P(Y=y|X=(x_{1},x_{2},...,x_{n})) P(Y=yX=(x1,x2,...,xn))的最大值。

问题是 P ( Y = y ∣ X = ( x 1 , x 2 , . . . , x n ) ) P(Y=y|X=(x_{1},x_{2},...,x_{n})) P(Y=yX=(x1,x2,...,xn))很难计算,但是我们有贝叶斯公式: P ( Y ∣ X ) = P ( X ∣ Y ) P ( Y ) P ( X ) P(Y|X) = \frac{P(X|Y)P(Y)}{P(X)} P(YX)=P(X)P(XY)P(Y),其中等式右边的数据我们可以分析下:

  1. P ( X ) P(X) P(X)不会变,因此计算时可以不考虑
  2. P ( Y ) P(Y) P(Y)很容易算出来。某一个 y m y_{m} ym ( y 1 , y 2 , . . . , y n ) (y_{1},y_{2},...,y_{n}) (y1,y2,...,yn)的概率
  3. P ( X ∣ Y ) P(X|Y) P(XY)通过训练集也很容易算出来。只需算给定 y m y_{m} ym,一个feature集合 X X X出现的次数即可

简易数据集

x 1 x_{1} x1 x 2 x_{2} x2 y y y
0 0 0
0 1 1
1 2 1
0 0 1
2 2 0
1 1 0
0 2 1
2 0 0
2 1 0
1 0 0

Y Y Y ∈ ( 0 , 1 ) \in (0,1) (01)

P ( Y = 0 ) = 6 10 P(Y=0)={\frac{6}{10}} P(Y=0)=106, P ( Y = 1 ) = 4 10 P(Y=1)={\frac{4}{10}} P(Y=1)=104

计算

当一个feature集 ( 0 , 1 ) (0,1) (0,1)出现,并需要决定其标签时,

我们通过比较 P ( Y = 0 ∣ X = ( 0 , 1 ) ) & P ( Y = 1 ∣ X = ( 0 , 1 ) ) P(Y=0|X=(0,1)) \& P(Y=1|X=(0,1)) P(Y=0∣X=(0,1))&P(Y=1∣X=(0,1))中较大的数字决定

根据贝叶斯公式,我们需计算

P ( X = ( 0 , 1 ) ∣ Y = 0 ) = 0 P(X=(0,1)|Y=0)=0 P(X=(0,1)Y=0)=0

P ( X = ( 0 , 1 ) ∣ Y = 1 ) = 1 4 P(X=(0,1)|Y=1)=\frac{1}{4} P(X=(0,1)Y=1)=41

P ( X = ( 0 , 1 ) ∣ Y = 0 ) ∗ P ( Y = 0 ) = 0 × 6 10 = 0 P(X=(0,1)|Y=0)*P(Y=0)=0\times\frac{6}{10}=0 P(X=(0,1)Y=0)P(Y=0)=0×106=0

P ( X = ( 0 , 1 ) ∣ Y = 1 ) ∗ P ( Y = 1 ) = 1 4 × 4 10 = 1 10 P(X=(0,1)|Y=1)*P(Y=1)=\frac{1}{4}\times\frac{4}{10}=\frac{1}{10} P(X=(0,1)Y=1)P(Y=1)=41×104=101

至此,当一个feature集 ( 0 , 1 ) (0,1) (0,1)出现,我们应将其打标签 Y = 1 Y=1 Y=1

问题

训练集内没有已经出现过的feature集

如果我们的feature集有10类feature(10维),每个feature又有很多可选值,那就很有可能出现训练集内没有数据,导致不同标签(分类)的 P ( X = ( x 1 , x 2 , x 2 ) ∣ Y = y ) ∗ P ( Y = y ) P(X=(x_{1},x_{2},x_{2})|Y=y)*P(Y=y) P(X=(x1,x2,x2)Y=y)P(Y=y)值都是0(不管 P ( Y = y ) P(Y=y) P(Y=y)的值是多少,乘号前部是0的情况)。

因此,我们介绍朴素贝叶斯分类器,朴素的意思指我们认为 x 1 , x 2 , x 2 x_{1},x_{2},x_{2} x1,x2,x2都是独立的,这样以来我们能有效规避样本不在训练集的问题。

那么 P ( X = ( 0 , 1 ) ∣ Y = 0 ) P(X=(0,1)|Y=0) P(X=(0,1)Y=0)可拆解为 P ( X 1 = 0 ∣ Y = 0 ) × P ( X 2 = 1 ∣ Y = 0 ) = 1 6 × 2 6 = 1 18 P(X_{1}=0|Y=0) \times P(X_{2}=1|Y=0)=\frac{1}{6} \times \frac{2}{6} = \frac{1}{18} P(X1=0∣Y=0)×P(X2=1∣Y=0)=61×62=181

那么 P ( X = ( 0 , 1 ) ∣ Y = 1 ) P(X=(0,1)|Y=1) P(X=(0,1)Y=1)可拆解为 P ( X 1 = 0 ∣ Y = 1 ) × P ( X 2 = 1 ∣ Y = 1 ) = 3 4 × 1 4 = 3 16 P(X_{1}=0|Y=1) \times P(X_{2}=1|Y=1)=\frac{3}{4} \times \frac{1}{4} = \frac{3}{16} P(X1=0∣Y=1)×P(X2=1∣Y=1)=43×41=163

再乘以 P ( Y = 0 ) = 6 10 P(Y=0)={\frac{6}{10}} P(Y=0)=106, P ( Y = 1 ) = 4 10 P(Y=1)={\frac{4}{10}} P(Y=1)=104,得到 1 30 {\frac{1}{30}} 301, 3 40 {\frac{3}{40}} 403

因此我们给 X = ( 0 , 1 ) X=(0,1) X=(0,1)这个feature集打标签 Y = 1 Y=1 Y=1

如何处理连续变量

将连续变量放入指定的集合中,比如把年龄放到[0-10],[11-20],[21-30]…的集合中

参考

https://youtu.be/lFJbZ6LVxN8 The Math Behind Bayesian Classifiers Clearly Explained!

你可能感兴趣的:(机器学习,python,深度学习)