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

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

作者: v1gor | 来源:发表于2019-11-02 14:07 被阅读0次

    本讲视频及讲义链接

    上一讲介绍了朴素贝叶斯算法区分垃圾邮件和非垃圾邮件的过程,在建模过程中,我们选取的特征 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)

    • n 的含义是这封邮件的长度
    • P(y) 指的是一封邮件是否是垃圾邮件的先验概率。
    • P(x_i|y) 表示在已知这封邮件的类别的情况下,邮件的第 i 个单词的值为 k_i(k_i \in [1,50000]) 的概率。

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

    \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}

    • 分子表示的是训练样本中每一封垃圾邮件中出现在词典中索引为 k 的单词的次数之和。
    • 分母表示训练样本中所有垃圾邮件的总长度
    • 整个式子的意思就是:在训练样本中的所有垃圾邮件包含的单词中,在词典中索引为 k 的那个单词出现的概率。

    对这个参数应用上一讲末尾讲到的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) ,再比较它们的大小即可。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/doncbctx.html