2 min read

吴恩达《机器学习导论》:生成学习算法详解

学习内容概览

本节课程主要介绍了两种重要的生成学习算法:

  • 高斯判别分析(Gaussian Discriminant Analysis, GDA)
  • 朴素贝叶斯(Naive Bayes, NB)
  • 拉普拉斯平滑(Laplace Smoothing)技术

这些算法虽然概念相对直观,但在实际应用中具有重要价值。

生成学习算法概述

判别式算法回顾

之前讨论的算法(如广义线性模型、牛顿算法)都属于判别式算法(discriminant algorithm),它们直接学习条件概率P(Y|X)或输出决策函数hθ(x) ∈ {0, 1}

生成式算法定义

生成学习算法(generative learning algorithm)采用不同的思路: - 学习联合概率分布P(x|y)和先验概率P(y) - 根据特征情况建模数据生成过程 - 使用贝叶斯定理进行预测

贝叶斯公式:

$$P(y=1|x) = \frac{P(x|y=1)P(y=1)}{P(x)}$$

其中边缘概率P(x)为:

P(x) = P(x|y=0)P(y=0) + P(x|y=1)P(y=1)

高斯判别分析(GDA)

多元高斯分布基础

GDA假设每个类别的特征向量服从多元高斯分布:

z ∼ 𝒩(μ⃗,Σ)

其中Σ是协方差矩阵,μ是均值向量。

多元高斯分布的概率密度函数:

$$p(x;\mu,\Sigma)= \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}}\exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu))$$

虽然公式看起来复杂,但在实际计算中通常不需要直接计算概率密度值。

详细推导可参考讲义

## Error in `knitr::include_graphics()`:
## ! Cannot find the file(s): "2018-01-11-learning-algorithm_files/images/gaussianDistributionPlot.png"

算法原理:通过计算P(x|y=1)P(x|y=0)两个高斯分布的投影,找到它们的交点连线作为决策边界。

GDA模型定义

先验概率:

P(y) = ϕy(1−ϕ)1 − y

条件概率分布:

$$P(x|y=0)= \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}}\exp(-\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0))$$

$$P(x|y=1)= \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}}\exp(-\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1))$$

与逻辑回归的区别

优化目标差异:

  • GDA:最大化联合概率max ∏P(x(i),y(i))
  • 逻辑回归:最大化条件概率max ∏P(y(i)|x(i))

这是两种不同的建模思路,各有优劣,没有绝对的优劣之分。

GDA与逻辑回归的关系

理论关系

当假设特征向量x|y服从高斯分布时,通过贝叶斯定理推导出的后验概率P(y=1|x)恰好是一个逻辑函数。这意味着GDA在特定假设下等价于逻辑回归,但GDA的假设条件更严格。

## Error in `knitr::include_graphics()`:
## ! Cannot find the file(s): "2018-01-11-learning-algorithm_files/images/GDAPlot.png"

计算过程

GDA的预测过程:

  1. 计算P(x|y=1)P(y=1)
  2. 计算边缘概率P(x) = P(x|y=1)P(y=1) + P(x|y=0)P(y=0)
  3. 应用贝叶斯公式得到P(y|x)

这种基于生成模型的方法提供了对数据分布的完整建模。

更一般的结论

重要定理:如果x|y服从某些特定的指数族分布,那么P(y=1|x)将是一个逻辑函数。

具体例子: - 高斯分布:x|y ∼ 𝒩(μy,Σ) → P(y=1|x)是逻辑函数 - 泊松分布:x|y = 1 ∼ 𝒫oisson(λ1)x|y = 0 ∼ 𝒫oisson(λ0) → P(y=1|x)也是逻辑函数

注意:这个关系是单向的,不能反向推导。

算法特点

GDA的优势: - 假设条件强,需要的数据量较少 - 对数据分布有完整的建模 - 在小样本情况下可能表现更好

局限性:

  • 假设条件可能过于严格
  • 对分布假设的敏感性较高

朴素贝叶斯(Naive Bayes)

算法动机

朴素贝叶斯是另一种生成学习算法,与GDA的主要区别在于: - GDA要求特征x是连续变量 - NB可以处理离散特征

应用场景:垃圾邮件分类

以垃圾邮件分类为例:

  • y = 1表示垃圾邮件
  • 使用字典将邮件转换为特征向量
  • 如果邮件包含字典中第i个词,则xi = 1,否则xi = 0
  • 特征空间:x ∈ {0, 1}n,共有2n种可能组合

参数估计问题

如果直接建模联合分布,需要估计2n − 1个参数,这在实践中是不可行的。

朴素贝叶斯假设

引入强假设:特征在给定类别下条件独立

$$\begin{alignat}{2} P(x_1,\cdots,x_n|y) & = P(x_1|y)P(x_2|y,x_1)\cdots P(x_n|y,x_1,\cdots,x_{n-1}) \\ & = P(x_1|y)P(x_2|y) \cdots P(x_n|y)\\ \end{alignat}$$

条件独立意味着P(x2|y,x1) = P(x2|y),即x1不影响x2的分布。

虽然这个假设在现实中通常不成立,但在实践中效果很好。

参数定义与估计

条件概率参数:

$$\begin{alignat}{2} \phi_{i|y=1} &= p(x_i=1|y=1) \\ &=\frac{\sum_{i=1}^m\mathcal I\{x_j^{(i)}=1,y^{(i)}=1\}}{\sum_{i=1}^m\mathcal I\{y^{(i)}=1\}}\\ \end{alignat}$$

ϕi|y = 0 = p(xi=1|y=0)

先验概率:

$$\begin{alignat}{2} \phi_y &= p(y=1) \\ &=\frac{\sum_{i=1}^m\mathcal I\{y^{(i)}=1\}}{m} \\ \end{alignat}$$

预测公式:

p(y|x) ∝ p(x|y)p(y)

朴素贝叶斯的假设主要体现在联合分布上,通过条件独立性简化了模型复杂度。

拉普拉斯平滑(Laplace Smoothing)

零概率问题

朴素贝叶斯的预测公式:

$$p(y=1|x) = \frac{p(x|y=1)p(y=1)}{p(x|y=1)p(y=1)+p(x|y=0)p(y=0)}$$

问题:如果训练数据中从未出现过某个特征组合x,则p(x|y) = 0,导致:

$$p(y=1|x) = \frac{0 \cdot p(y=1)}{0}$$

出现未定义的情况。

拉普拉斯平滑技术

二分类情况:

$$P(y=1) = \frac{n_1+1}{n_1+1+n_0+1}$$

这样即使训练集中n1 = 0,仍然保留了一定的概率预测y = 1

多分类一般形式:

$$P(y=j)=\frac{\sum_{i=1}^m \mathcal I\{y^{(i)}=j\}+1}{m+k}$$

其中k是类别数量。

条件概率的平滑

对于条件概率参数:

$$\begin{alignat}{2} \phi_{i|y=1} &= p(x_i=1|y=1) \\ &=\frac{\sum_{i=1}^m\mathcal I\{x_j^{(i)}=1,y^{(i)}=1\}+1}{\sum_{i=1}^m\mathcal I\{y^{(i)}=1\}+2}\\ \end{alignat}$$

拉普拉斯平滑通过添加伪计数避免了零概率问题,提高了模型的鲁棒性。