1 min read

吴恩达《机器学习导论》:朴素贝叶斯算法详解

学习心得

观看吴恩达教授机器学习课程时,我发现重点在于理解视频内容而非大量记笔记。建议先完整观看视频,重点关注总结部分(wrap up)和回顾内容(recap),然后查阅讲义,最后整理200行左右的笔记即可。真正的价值在于理解算法原理。

朴素贝叶斯模型概述

朴素贝叶斯算法主要包含两种事件模型:

  1. 多元伯努利事件模型(Multivariate Bernoulli Event Model):特征\(x\)取值仅为0或1
  2. 多项式事件模型(Multinomial Event Model):特征\(x\)可以取多种离散值

In particular \(x_i|y\) is now a multinomial, rather than a Bernoulli distribution.

本文重点讲解第二种模型——多项式事件模型,该模型虽然理解难度较大(我反复观看了三遍才完全理解),但能够更好地处理词频信息,且同样不考虑词的位置信息。

多项式事件模型原理

模型动机

在垃圾邮件分类场景中,词频信息至关重要。例如”促销”这个词,出现一次和出现多次具有不同的意义:

  • 出现多次:更可能是垃圾邮件
  • 出现一次:可能是误操作,重要性较低

模型定义

假设我们有\(m\)封邮件作为训练集,每封邮件的长度不同。定义:

  • \(i = 1,\cdots,m\):第\(i\)封邮件
  • \(n_i\):第\(i\)封邮件的词数
  • \(j = 1,\cdots,n_i\):第\(i\)封邮件的第\(j\)个词位置
  • 字典大小为50000个词

使用指示函数\(\mathcal I\{x_j^{(i)}=k\}\)来表示第\(i\)封邮件的第\(j\)个词是否为字典中的第\(k\)个词。

概率模型

朴素贝叶斯的基本假设是条件独立性:

\[P(x;y)=(\prod_{i=1}^nP(x_i|y))\cdot P(y)\]

其中:

  • \(x\)是特征向量
  • \(y\)是类别标签(0:正常邮件,1:垃圾邮件)

定义参数:

  • \(\phi_{k|y=1}=P(x_j=k|y=1)\):在垃圾邮件中词\(k\)出现的概率
  • \(\phi_{k|y=0}=P(x_j=k|y=0)\):在正常邮件中词\(k\)出现的概率
  • \(\phi_y=P(y)\):先验概率

参数估计公式

\[\phi_{k|y=1}= \frac{ \sum_{i=1}^m (\mathcal I\{y^{(i)}=1\} \sum_{j=1}^{n_i} \mathcal I\{x_j^{(i)}=k\} ) }{ \sum_{i=1}^m ( \mathcal I\{y^{(i)}=1\} \cdot n_i ) }\]

公式解析:

  1. 分子部分
    • \(\mathcal I\{y^{(i)}=1\}\):筛选垃圾邮件
    • \(\sum_{j=1}^{n_i} \mathcal I\{x_j^{(i)}=k\}\):统计第\(i\)封邮件中词\(k\)的出现次数
    • 分子总和:所有垃圾邮件中词\(k\)的总出现次数
  2. 分母部分
    • \(\sum_{i=1}^m (\mathcal I\{y^{(i)}=1\} \cdot n_i)\):所有垃圾邮件的总词数
    • 表示在\(y=1\)条件下所有可能的词位置

Laplace平滑

为了避免零概率问题,采用Laplace平滑:

\[\phi_{k|y=1}= \frac{ \sum_{i=1}^m (\mathcal I\{y^{(i)}=1\} \sum_{j=1}^{n_i} \mathcal I\{x_j^{(i)}=k\} )+1 }{ \sum_{i=1}^m ( \mathcal I\{y^{(i)}=1\} \cdot n_i )+50000 }\]

平滑原理:在分子加1(确保每个词至少出现一次),分母加字典大小50000(保持概率归一化)。

模型特点与局限性

优势

  1. 词频敏感性:能够区分词的出现频率差异
  2. 实现简单:可以使用one-hot编码处理多频词
  3. 实践效果好:尽管假设词间独立(现实中不成立),但在实际应用中表现良好

局限性

  1. 位置无关:不考虑词在文本中的位置信息
  2. 独立性假设:假设特征之间完全独立,与现实不符

后续内容预告

接下来将介绍非线性生成模型,进一步扩展朴素贝叶斯算法的应用范围。