StanFord 机器学习公开课笔记(5):朴素贝叶斯算法进阶、

2019-11-02  本文已影响0人  v1gor

本讲视频及讲义链接

上一讲介绍了朴素贝叶斯算法区分垃圾邮件和非垃圾邮件的过程,在建模过程中,我们选取的特征 x 的每一维都只有 \{0,1\} 的取值,因此在对 P(x|y) 建立生成模型时,我们使用了用伯努利分布:

\begin{align} P(x|y) &= \Pi^{50000}_{i=1}P(x_i|y)\\ &= \Pi^{50000}_{i=1}\phi_{i|y}^{x_i}(1-\phi_{i|y})^{(1-x_i)} \end{align}

实际上这样的朴素贝叶斯分类器使用了多元伯努利事件模型(Multivariate Bernoulli Event Model)
不用太在意这个模型的名字,它只是说明这个模型用到了多个服从伯努利分布的随机变量。

更一般的情况,特征向量 x 每一维可能有 k 个取值,这时,对 P(x|y) 的建模就需要使用多项式分布,而不是伯努利分布。

多项式事件模型

这是一个专门用于文本分类的模型,它对文本的分类效果比之前介绍的朴素贝叶斯分类器还要好。当然你也可以尝试将它应用于其他问题。可以根据下面的内容来理解这个模型。

之前选取特征向量 x 的方式丢失了一些信息,比如它没有记录每个词出现的次数等,于是我们需要采用一个新的模型来解决这个问题。

特征表示

多项式事件模型采用不同的特征表示方法:

一封邮件的特征向量 x 的维数 n 表示这封邮件包含的单词的个数,其中的第 i 维表示这封邮件的第 i 个词在词典中的索引值。 也就是说,如果一封邮件包含300个单词,那么 n=300,我们继续假设词典中包含50000个单词,那么这封邮件的特征向量中的每一维的取值范围就是 [1,50000]

参数

有了上述的特征向量的定义之后,对于每一封邮件,可以计算对应的联合概率:

P(x,y)=(\Pi^n_{i=1}P(x_i|y))P(y)

这个模型所需的参数如下:

\phi_{k|y=1} = P(x_j=k|y=1)

\phi_{k|y=0} = P(x_j = k|y=0)

\phi_y = P(y = 1)

和之前的朴素贝叶斯分布一样,我们要将这些参数拟合为训练样本的极大似然估计:

\phi_{k|y=1} = \frac{\Sigma_{i=1}^m(I\{y^{(i)} = 1\}\Sigma^{n_i}_{j=1}I\{x^{(i)}_j = k\})}{\Sigma^m_{i=1}I\{y^{(i)} = 1\}n_i}

对这个参数应用上一讲末尾讲到的Laplace平滑,得到如下参数:

\phi_{k|y=1} = \frac{1+\Sigma_{i=1}^m(I\{y^{(i)} = 1\}\Sigma^{n_i}_{j=1}I\{x^{(i)}_j = k\})}{|V|+\Sigma^m_{i=1}I\{y^{(i)} = 1\}n_i}

其中 |V| 是词典的大小,在我们的假设中是50000。

另外两个参数可以按如下式子拟合:

\phi_{k|y=0} = \frac{1+\Sigma_{i=1}^m(I\{y^{(i)} = 0\}\Sigma^{n_i}_{j=1}I\{x^{(i)}_j = k\})}{|V|+\Sigma^m_{i=1}I\{y^{(i)} = 0\}n_i}

\phi_y = \frac{1+\Sigma_{i=1}^mI\{y^{(i)} = 1\}}{|V|+ m}

预测

有了这些参数,在给出一个新的邮件时,要对它进行分类,只需要分别计算 P(x|y=0) = \Pi^n_{i=1}P(x_i|y = 0)P(x|y=1) = \Pi^n_{i=1}P(x_i|y=1) ,再比较它们的大小即可。

上一篇下一篇

猜你喜欢

热点阅读