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

1、贝叶斯公式

贝叶斯的公式如下

\[ P(B_{i}| A) = \frac {P(B_{i} | P(A)) * P(B_{i})} { \sum\nolimits_{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\nolimits_{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\nolimits_{k} P(Y=y_{k}) * \prod_{j} P(X^{(j)} = x^{(j)} | Y = y_{k}) } \]

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

\[ y = \arg\max_{y_{k}} P(Y = y_{k} | X = x ) \]

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

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

3、一个例子

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

根据公式得到下面的概率

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

posted @ 2020-05-14 11:51  空空如也_stephen  阅读(164)  评论(0编辑  收藏  举报