机器学习模型之朴素贝叶斯

1、贝叶斯公式

贝叶斯的公式如下

[ P(B_{i}| A) = frac {P(B_{i} | P(A)) * P(B_{i})} { sum olimits_{j=1}^{N} P(B_{j}) * P(A|P(B_{j}))} ]

2、分类中的朴素贝叶斯

上述公式中我们可以将A当做将要预测的实例,(B_{i})表示第(i)个类别标签,也就是说我们输入一个实例,得到在每一个类别标签上的概率,哪个大就选择哪个。

假设我们的训练数据集是

[ T = {(x_{1},y_{1}),(x_{2},y_{2})........(x_{N},y_{N})} ]

由这个训练数据集,我们可以算出每个类别标签在整个数据集出现的概率

[ P(Y|c_{k}) , k = 1,2,3 ....k ]

我们可以得到实例中每个实例所对应的条件概率表示

[ P(X=x|Y=c_{k}) = P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)}.....X^{(n)}=x^{(n)} | Y = c_{k}) ]

由于(P(X=x|Y=c_{k}))有指数数量的参数,所以在求解时是不符合实际需要的,所以在这里我们做了个假设,就是各个(x^{1},x^{2}....x^{n})之间是相互独立的,这也是为什么这种算法叫朴素贝叶斯的原因,最终(P(X=x|Y=c_{k}))可以表示成如下:

[ P(X=x|Y=c_{k}) = prod_{j=1}^{n} P(X=x^{j} | Y=c_{k}) ]

根据数据集,我们可以求解以上的一些参数,当这些参数求解之后,我们就可以进行预测新的实例了。假设我们有一条新的实例x,如何预测其分类的结果呢?首先我们根据贝叶斯公式可以得到

[ P(Y = y_{k} | X = x ) ]

即我们得到所有类别的概率,并选择最大的概率的类别作为结果。展开后为

[ P(Y = y_{k} | X = x ) = frac {P(Y = y_{k}) * P(X=x |Y = y_{k})} {sum olimits_{k} P(X=x |Y = y_{k})P(Y=y_{k})} ]

由于我们的前提假设,各个(x^{l})之间是相互独立的,所以可以写成

[ P(Y = y_{k} | X = x ) = frac { P(Y = y_{k}) * prod_{j} P(X^{(j)} = x^{(j)} | Y = y_{k}) } {sum olimits_{k} P(Y=y_{k}) * prod_{j} P(X^{(j)} = x^{(j)} | Y = y_{k}) } ]

接下来我们要计算(P(Y = y_{k} | X = x ))所对应的类别,即

[ y = argmax_{y_{k}} P(Y = y_{k} | X = x ) ]

由于式子中分母都相同,所以我们只需要最大化分子即可

[ y = argmax_{y_{k}} P(Y = y_{k}) * prod_{j} P(X^{(j)} = x^{(j)} | Y = y_{k}) ]

3、一个例子

这里我们就copy一下《统计学习方法》上的例子了,上面已经讲得很清楚了,我感觉自己举的例子也不一定有这个清楚。

根据公式得到下面的概率

最后我们选择最大的类别作为最终的类别

原文地址:https://www.cnblogs.com/stephen-goodboy/p/12887168.html