Naive Bayes model
朴素贝叶斯
简单易懂 by hch
我们用一个例子开始:
我们把它当成概率论求条件概率的题解解试试
P ( 感 冒 ∣ 打 喷 嚏 ∩ 建 筑 工 人 ) = P ( 感 冒 ∩ 打 喷 嚏 ∩ 建 筑 工 人 ) P ( 打 喷 嚏 ∩ 建 筑 工 人 ) = P ( 感 冒 ) P ( 打 喷 嚏 ∩ 建 筑 工 人 ) ∗ P ( 感 冒 ∩ 打 喷 嚏 ∩ 建 筑 工 人 ) P ( 感 冒 ) = P ( 感 冒 ) P ( 打 喷 嚏 ∩ 建 筑 工 人 ) ∗ P ( 打 喷 嚏 ∩ 建 筑 工 人 ∣ 感 冒 ) = P ( 感 冒 ) P ( 打 喷 嚏 ) ∗ P ( 建 筑 工 人 ) ∗ ( P ( 打 喷 嚏 ∣ 感 冒 ) + P ( 建 筑 工 人 ∣ 感 冒 ) ) P(感冒|打喷嚏\cap建筑工人)=\frac{P(感冒\cap打喷嚏\cap建筑工人)}{P(打喷嚏\cap建筑工人)}\\=\frac{P(感冒)}{P(打喷嚏\cap建筑工人)}*\frac{P(感冒\cap打喷嚏\cap建筑工人)}{P(感冒)}\\=\frac{P(感冒)}{P(打喷嚏\cap建筑工人)}*P(打喷嚏\cap建筑工人|感冒)\\=\frac{P(感冒)}{P(打喷嚏)*P(建筑工人)}*(P(打喷嚏|感冒)+P(建筑工人|感冒)) P(感冒∣打喷嚏∩建筑工人)=P(打喷嚏∩建筑工人)P(感冒∩打喷嚏∩建筑工人)=P(打喷嚏∩建筑工人)P(感冒)∗P(感冒)P(感冒∩打喷嚏∩建筑工人)=P(打喷嚏∩建筑工人)P(感冒)∗P(打喷嚏∩建筑工人∣感冒)=P(打喷嚏)∗P(建筑工人)P(感冒)∗(P(打喷嚏∣感冒)+P(建筑工人∣感冒))
p ( A ∣ B ) = P ( A B ) p ( B ) = P ( A ) P ( B ) ∗ P ( A B ) P ( A ) = P ( A ) P ( B ) ∗ P ( B ∣ A ) p(A|B)=\frac{P(AB)}{p(B)}=\frac{P(A)}{P(B)}*\frac{P(AB)}{P(A)}=\frac{P(A)}{P(B)}*P(B|A) p(A∣B)=p(B)P(AB)=P(B)P(A)∗P(A)P(AB)=P(B)P(A)∗P(B∣A)
多么神奇:
我们会发现
P ( 感 冒 ) , P ( 打 喷 嚏 ) , P ( 打 喷 嚏 ∣ 感 冒 ) , P ( 建 筑 工 人 ∣ 感 冒 ) P(感冒),P(打喷嚏),P(打喷嚏|感冒),P(建筑工人|感冒) P(感冒),P(打喷嚏),P(打喷嚏∣感冒),P(建筑工人∣感冒)
是在表中多么好求!!
开始拓展
x | 特征1 | 特征2 | … | 特征n | tag |
---|---|---|---|---|---|
x1 | 1 | 0 | 1 | 1 | 1 |
x2 | 0 | 1 | 1 | 1 | 3 |
x3 | 1 | 0 | 0 | 1 | 2 |
… | … | … | … | … | … |
xm | 1 | 0 | 0 | 0 | 5 |
xj表示第j个样本,共有m个样本
xji表示第j个样本的第i维特征值
yj表示第j个样本的tag,即结果
tag共有K种
ck表示第k种tag
我们试图通过已知tag的数据去训练模型,从而预测未知tag的数据
(下面数学公式有哪里不懂了,记得回来看这里的定义)
预想下,我们如何预测:
给予我们上面一个表(样本数据),再给我们一个
x 待 预 测 = [ 1 , 0 , 1 , 1 , . . . , 1 ] x_{待预测}=[1,0,1,1,...,1] x待预测=[1,0,1,1,...,1]
让我们预测它的tag?
很容易结合上面例子,想到针对不同的tag取值,我们都求一下它们的条件概率,然后选里面最大的,即(下面用x表示 x_待预测)
y = a r g m a x { P ( Y = c k ∣ X = x ) } y=arg max{P(Y=c_k|X=x)} y=argmax{P(Y=ck∣X=x)}
a r g m a x ( f ( x ) ) 表 示 f ( x ) 取 最 大 值 时 的 x 0 argmax(f(x))表示f(x)取最大值时的x_0 argmax(f(x))表示f(x)取最大值时的x0
P ( Y = c k ∣ X = x ) = P ( X = x ∣ Y = c k ) ∗ P ( Y = c k ) P ( X = x ) = ( ∑ i = 1 n P ( X = x i ∣ Y = c k ) ) ∗ P ( Y = c k ) ∏ i = 1 n P ( X = x i ) P(Y=c_k|X=x)=P(X=x|Y=c_k)*\frac{P(Y=c_k)}{P(X=x)}\\ =(\sum_{i=1}^{n} P(X=x_i|Y=c_k))* \frac{P(Y=c_k)}{\prod_{i=1}^{n}P(X=x_i)} P(Y=ck∣X=x)=P(X=x∣Y=ck)∗P(X=x)P(Y=ck)=(i=1∑nP(X=xi∣Y=ck))∗∏i=1nP(X=xi)P(Y=ck)
理解不了上面数学公式的,试着结合生动的例子理解下里面变量的含义,
正如马克思指出的 :