传统的分类器朴素贝叶斯很多人都知道怎么用,但是有没有想过它的原理,它是怎么样被一步一步的推导出来的。今天咱们就推导一下朴素贝叶斯模型。
现在有数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } D=\{(x^1,y^1),(x^2,y^2),...,(x^n,y^n)\} D={
(x1,y1),(x2,y2),...,(xn,yn)}
x x x表示的是一个文档的所有单词
y y y表示的是一个文档属于的类别。
n n n表示的是文档的数量
首先我们知道朴素贝叶斯是一个生成模型因此我们的目标函数可以写成:
p ( D ) = ∏ i = 1 n p ( x i , y i ) = ∏ i = 1 n p ( x i ∣ y i ) ⋅ p ( y i ) = ∏ i = 1 n p ( x 1 i , x 2 i , x 3 i , . . . , x m i ∣ y i ) ⋅ p ( y i ) p(D)= \prod_{i=1}^np(x^i,y^i)= \prod_{i=1}^np(x^i|y^i)\cdot p(y^i)= \prod_{i=1}^np(x^i_1,x^i_2,x^i_3,...,x^i_m|y^i)\cdot p(y^i) p(D)=∏i=1np(xi,yi)=∏i=1np(xi∣yi)⋅p(yi)=∏i=1np(x1i,x2i,x3i,...,xmi∣yi)⋅p(yi)
上面就是一个正常的生成模型的样子,相当于一个框架吧,下面我们加入朴素贝叶斯的核心思想:条件独立假设,所以我们的公式可以写成:
p ( D ) = ∏ i = 1 n ∏ j = 1 m p ( x j i ∣ y i ) ⋅ p ( y i ) p(D)= \prod_{i=1}^n \prod_{j=1}^mp(x^i_j|y^i)\cdot p(y^i) p(D)=∏i=1n∏j=1mp(xji∣yi)⋅p(yi)
下面我们的目标就是最大似然优化参数啦。也就是:
a r g m a x p ( D ) = a r g m a x ∏ i = 1 n ∏ j = 1 m p ( x j i ∣ y i ) ⋅ p ( y i ) = a r g m a x log [ ∏ i = 1 n ∏ j = 1 m p ( x j i ∣ y i ) ⋅ p ( y i ) ] argmaxp(D)=argmax \prod_{i=1}^n \prod_{j=1}^mp(x^i_j|y^i)\cdot p(y^i)=argmax\log [ \prod_{i=1}^n \prod_{j=1}^mp(x^i_j|y^i)\cdot p(y^i)] argmaxp(D)=argmax∏i=1n∏j=1mp(xji∣yi)⋅p(yi)=argmaxlog[∏i=1n∏j=1mp(xji∣yi)⋅p(yi)]
= a r g m a x log [ ∏ i