Probability & Naive Bayes¶
约 5087 个字 预计阅读时间 17 分钟
本节课主要是基于贝叶斯定理的一些应用。主要涉及贝叶斯定理(Bayes Rule),参数估计(最大似然估计(MLE)和最大后验概率(MAP)),贝叶斯分类器(Bayes Classifiers),条件独立(Conditional Independence)以及朴素贝叶斯(Naïve Bayes)。
Bayes Rule¶
这里,\(P(A)\) 是先验概率,\(P(A\mid B)\) 是后验概率。
贝叶斯定理不仅仅是一个关于概率的“好奇推测”,而是必要的基础,用于推理过去的事实以及未来可能发生的事情。贝叶斯定理对于类比推理(analogical reasoning)或归纳推理(inductive reasoning)的强度评估有重要作用。
回忆我们之前提到过的 EPE 和 RSS,一种是基于期望预测误差的,一种是基于数据和真实值之间的误差的,是实际数据产生的误差。
通过方程 \(F: X \rightarrow Y\) 拟合,和概率模型学习 learn \(P(Y \mid X)\),两者有什么区别?
函数近似(Function Approximation)和学习 \(P(Y | X)\) 两者都与从输入到输出的映射关系有关,但它们的目的和方法有所不同。
-
函数近似: 在这里,我们通常有一个确定的函数 \(F: X \to Y\) ,我们试图用一个近似的函数 \(F_{\text{approx}}\) 来模拟这个函数。这样做的目的是简化问题,或是因为 \(F\) 太复杂,不易于分析或计算。
-
学习 \(P(Y | X)\): 这里的目标是理解或建模输出 \(Y\) 和输入 \(X\) 之间的概率关系。这通常出现在机器学习和统计中,特别是在分类和回归问题中。这里我们不仅关心一个确定的输出,还关心输出的不确定性或概率分布。
函数近似通常用于找到一个最好的确定性映射从 \(X\) 到 \(Y\),而学习 \(P(Y | X)\) 则是为了了解 \(Y\) 如何以概率形式依赖于 \(X\)。
有些时候,两者将会依靠所求目标和已有条件相互转换。
假设我们想学习一个函数 \(f\),它从 \(<G, H>\) 映射到 \(W\)。其中,\(G\) 是性别,\(H\) 是工作时数,而 \(W\) 是财富状态。 同样的,我们也可以理解为学习条件概率 \(P(W | G, H)\)。
解决方法:
从数据中学习联合分布,并根据这个分布来计算条件概率 \(P(W | G, H)\)。例如,女性工作时间少于40.5小时时,她是富有的(rich)的概率是多少。这里应用最简单的贝叶斯公式可以实现。
但是,我们在实际情况中,往往会遇到联合分布过于复杂而无法求出的情况(因为数据量过于庞大)。因此,我们只能采用近似估计的方法,找到最大概率的情况。这样子,我们就可以从相对不足的数据中估计出想要的概率情况。
我们接下来主要采用两种方法估计,分别是 最大似然估计(MLE)和最大后验概率(MAP)。
MLE & MAP¶
我们知道最大似然估计是已知模型,未知参数,根据现有数据,求出这个模型下发生这个数据的概率最大的参数值情况。
MLE的求法可以表示为:
求解的情况为:
而 MAP 则是要求数据发生的前提下模型参数发生的最大概率。这样做的好处就是可以加入先验信息。我们可以在预设的模型中提前加入一些我们的预测情况条件。它和 MLE 有着较强的关系,可以用贝叶斯公式表示为:
考虑到数据和模型中参数无关,我们通常简化上面的公式,只强调它们之间的正比关系:
上述的 model 更多情况下理解为 \(\theta\),是模型中的参数的意思
根据上面这个正比关系,我们实际上可以把 MAP 看作一种“正则化”的最大似然估计,其中先验概率 \(P(\theta)\) 起到了“正则化项”的作用,避免过分拟合那些仅在观测数据中出现但不太可能的参数值。当先验是均匀分布时,MAP估计简化为MLE估计。
求解 MAP 的步骤:
-
确定似然函数 \(L(\theta)\): 根据模型确定给定参数 \(\theta\) 下数据 \(D\) 的似然函数 \(L(\theta) = P(D|\theta)\)。
-
确定先验分布 \(P(\theta)\): 根据先验知识确定参数 \(\theta\) 的概率分布。
-
构造后验概率: 应用贝叶斯定理构造参数 \(\theta\) 的后验概率:
其中 \(P(D|\theta)\) 是数据在参数 \(\theta\) 下的似然,\(P(\theta)\) 是参数的先验概率。后验概率 \(P(\theta|D)\) 与 \(P(D|\theta)P(\theta)\) 成正比,因为 \(P(D)\) 是一个关于 \(\theta\) 的常数。
- 对后验概率取对数: 对后验概率取对数转换成求和问题,这是因为取对数可以将乘积转换成求和,从而简化计算,得到对数后验概率:
由于 \(\log P(D)\) 对于 \(\theta\) 是常数,所以在优化时可以忽略。
- 求解最大化问题: 将取对数后的后验概率关于 \(\theta\) 求导,并设导数为0求解,得到 \(\theta\) 的MAP估计:
在某些情况下,我们可以直接求导并解析求解,比如在参数的先验分布和似然函数都有共轭关系时。然而,在许多实际问题中,解析解可能难以获得,此时可能需要用到数值方法如梯度下降等优化算法来求得 MAP 估计值。
最终,得到的参数估计值是在考虑了数据的似然性和先验知识的双重影响下的最有可能(最大后验)的参数值。
总结一下基本概念:
-
似然函数 (Likelihood function): \(P(\text{data} | \theta)\) 是在已知参数 \(\theta\) 的情况下,观察到当前数据的概率。它是关于 \(\theta\) 的函数,用来衡量不同的 \(\theta\) 值在给定数据下的支持程度。
-
先验 (Prior): \(P(\theta)\) 是在观察数据之前,关于参数 \(\theta\) 的概率分布。这表示我们对 \(\theta\) 的初始信念或知识。
-
后验 (Posterior): \(P(\theta | \text{data})\) 是在观察到数据之后,对参数 \(\theta\) 概率分布的更新。这是结合了先验信息和数据信息之后的 \(\theta\) 的概率分布。
-
共轭先验 (Conjugate prior): 如果先验 \(P(\theta)\) 和后验 \(P(\theta | \text{data})\) 有相同的形式,我们称 \(P(\theta)\) 为似然函数 \(P(\text{data} | \theta)\) 的共轭先验。这意味着后验分布和先验分布是同一类分布,这在计算和理解上通常会更简单。共轭先验的概念则是为了计算上的方便,当我们可以选择共轭先验时,后验分布的形式会和先验保持一致。例如,对于布尔结果(抛硬币实验)的实验中,我们往往会采用 beta 分布,因为它是和我们的布尔情况有相同形式的(分子部分)。而由于我们往往不考虑分母部分,所以我们可以省去 beta 分布的分母上的 beta 函数,只留下分子。
为什么引入 MAP?
引入先验的目的是在数据不足或不完全时利用先验知识增加估计的准确性,以及在模型可能过拟合时增加正则化以改善模型的泛化能力。先验也使得模型可以整合领域专家的知识,特别是在数据可能受到噪声影响的情况下。而且,先验在贝叶斯统计框架中使决策过程能够考虑到参数估计的不确定性。虽然随着数据量的增加先验的相对重要性可能降低,但在实际应用中,通常数据并非总是足够的,因此先验的作用仍然是显著的。
Bayes Classifier¶
对于 MLE 和 MAP,我们进行了参数的估计。现在,我们来尝试进行推断和决策,通过先验数据来得到我们想要归纳的类别。我们采用贝叶斯分类器的方法,计算给定数据的条件下某个假设的概率。
在之前的情况中,我们如果要求某些数据的情况对应某个假设,我们需要求出所有数据的分布情况。这意味着我们需要指数级别的分布情况。例如,要计算给定数据下 \(Y\) 发生的概率,即 \(P(Y|X_1,X_2,\cdots,X_n)\) 发生的概率,我们就要进行接近 \(2^n\) 个不同参数情况下的测量(假设 \(X_i\) 的值的情况为 \(0\) 或 \(1\))。
朴素贝叶斯分类器通过条件独立的假设,能很好的减少这些测量的次数,从参数的指数级别变成线性级别。
当有新的数据点需要分类时,贝叶斯分类器会使用贝叶斯定理来计算这个数据点属于每个类别的后验概率。后验概率是指在观察到新数据点的特征后,它属于某个类别的概率。最后,算法会选择具有最高后验概率的类别作为数据点的预测分类。
我们先来看贝叶斯分类器计算 \(P(Y|X_1,X_2,\cdots,X_n)\) 的方法。
现在,我们假定 \(X=<X_1,X_2,\cdots,X_n>\)
在实际应用中,我们需要考虑所有可能的 \(Y=y_k\) 值,并为每个值计算后验概率。然后比较这些后验概率,选择最大的一个作为预测类别。
这也就是说,对于式子的左边,我们将要分别计算得到 \(Y=y_k\) 情况下概率的情况,并且找到使得 \(P(Y=y_k)\) 最大的 \(y_k\) 值,即 \(\arg \max_{y_k}P(Y=y_k|X)\)。正如我们前面所提到的,要求最大的概率时,\(P(X)\) 并不重要,原因是这个分母对于所有 \(Y_k\) 的值是常数。
于是,问题转变为了求 \(P(X|Y)\) 和 \(P(Y)\) 的概率情况。
Conditional Independence¶
朴素贝叶斯假设:
也就是说,朴素贝叶斯假设在条件 \(Y\)的情况下,\(X_i\) 之间相互独立,可以直接被展开。这就是条件独立。
Naïve Bayes¶
根据条件独立,我们于是可以再展开前面的式子得到:
于是,我们就可以找到使得 \(X\) 数据发生的后验概率最大的情况:
在实施贝叶斯分类器时,我们常常需要对条件概率进行估计,这个估计可以通过 MLE 或 MAP 来完成。换句话说,MLE 和 MAP 可以用作实现贝叶斯分类器中的一个步骤。
非独立情况
在朴素贝叶斯分类器中,每个特征 \(X_i\) 被假设为在给定类别 \(Y\) 的条件下相互独立。这个假设允许我们将联合概率 \(P(X_1, X_2, \ldots, X_n | Y)\) 分解为每个单独概率的乘积:
这种分解极大地简化了模型,因为它减少了参数的数量,并且使得从有限的数据中学习变得更加可行。
当我们在数据集中添加重复的特征时,如两个完全相同的特征 \(X_i\) 和 \(X_k\),我们实际上违反了朴素贝叶斯的这个条件独立性假设。在这种情况下,这两个特征不再是独立的,因为它们是相同的。这意味着模型会过分强调这个重复特征的影响,因为其对后验概率 \(P(Y|X)\) 的贡献被算了两次,这可能会导致模型的预测偏差。
在极端情况下,如果我们添加了多个相同的特征副本,朴素贝叶斯分类器将会赋予这个重复信息更大的权重,这可能会导致分类器的性能变差,特别是在特征的重复数量很多时。这会造成模型对那些具有重复特征的数据点做出过于确定的预测,即使这种确定性是基于重复计数的相同信息。
例如,假设我们的分类任务是基于病人的多个生化指标来预测是否有疾病 \(Y\)。如果我们的特征集中有两个相同的血液检测结果 \(X_i\),那么在计算 \(P(Y|X)\) 时,朴素贝叶斯会错误地假设这两个相同的血液检测结果提供了独立的信息,而实际上它们提供了相同的信息。这会让模型更加确信其预测结果,即使这种信心是建立在重复数据的基础上的。
在实践中,处理这种情况的一种方法是进行特征选择,去除重复的特征,或者使用一些能够处理特征之间依赖关系的模型。
零概率问题
在朴素贝叶斯分类中,如果你的数据中某个类别下某个特征值从未出现过,那么该特征值在这个类别下的最大似然估计(MLE)概率将会是零。这种情况叫做“零概率问题”。当特征值 \(X_i\) 相对于类别 \(Y\) 的某个特定值来说是非常细分的时,如具体的出生日期“1992年1月25日”,在训练数据集的该类别中这个值可能从未出现过,尽管这个类别可能有许多其他的出生日期。由于朴素贝叶斯使用概率的乘积来计算后验概率 \(P(Y|X)\),任何一个概率为零的因素都会导致整个后验概率的乘积为零,这显然会影响分类器的性能,因为它会忽略掉所有其他的非零概率特征。
解决零概率问题的一个常见方法是采用拉普拉斯平滑,但这通常是在MLE的框架内提到的。对于MAP,我们引入先验分布并更新它基于观测数据。下面我们将展示如何结合拉普拉斯平滑和MAP来估计 \(P(X_i | Y)\)。
首先,我们假设有一个先验概率分布对 \(X_i\) 的可能值进行了某种均匀的或者基于先前知识的分布。然后,我们更新这个先验分布基于新的观察数据来获得后验概率。
拉普拉斯平滑是一种特殊情况,它可以看作是使用了均匀先验分布的MAP。在拉普拉斯平滑中,我们假设每种可能的 \(X_i\) 的值在观测开始前都有一个出现的次数(这个次数通常为1),这就是为什么它又被称作“加一平滑”。
拉普拉斯平滑后的 MAP 估计公式如下:
其中,\(N_{X_i, Y}\) 是在类别 \(Y\) 下特征 \(X_i\) 的观测频数,\(N_Y\) 是类别 \(Y\) 的观测总数,\(k\) 是特征 \(X_i\) 可能值的数量(在拉普拉斯平滑中,每个可能值至少被假定出现一次)。
这个平滑技术可以很容易地应用到朴素贝叶斯分类器中,即使是在面对极端情况,如某个特定日期或类别从未出现过的情况下,也能有效防止零概率的发生。通过这种方式,我们就可以确保 \(P(X_i | Y)\) 永远不会是零,即使在某些情况下 \(X_i\) 的某个值在 \(Y\) 类别下从未观察到。
在朴素贝叶斯分类器中,决策边界由后验概率相等的点组成,也就是说,它是一个概率等高线,其中所有点对于一个或多个类别的预测概率是相同的。由于朴素贝叶斯假设特征之间相互独立,这些边界可以根据独立特征的概率被推导出来。在特征的单个维度上,决策边界可能近似为平行于其他特征轴的形状。
当特征实际上不是独立的时,朴素贝叶斯分类器可能不会提供最佳的决策边界。但是,即使违反了特征独立性的假设,朴素贝叶斯分类器在实践中仍然可以表现得很好,部分原因是它的决策边界在实际应用中足够近似于最优边界。
在满足特征之间的条件独立性的假设下,如果我们有足够多的数据,朴素贝叶斯分类器将趋向于学习到每个类别下特征的真实概率分布。这意味着,理论上,分类器将能够达到与真实数据生成过程相匹配的最佳性能。
朴素贝叶斯分类器和连续数据
朴素贝叶斯分类器是基于概率的分类方法,它使用了贝叶斯定理以及一个强大的独立性假设。当处理离散数据时,朴素贝叶斯分类器通过计数实例来估计概率。但是,当特征是连续的,如身高、体重或者测试分数时,我们将不能简单地用计数来估计概率,因为连续数据理论上有无限多的可能值。
为了使用朴素贝叶斯方法来处理连续数据,我们需要一个方法来估计连续变量的概率密度函数(PDF),才可以进一步得到条件概率。最常见的做法是假设每个类别下的连续特征 \(X_i\) 都遵循一个正态分布(Gaussian)。正态分布可以完美地描述一个连续特征的概率分布。
对于每个类别 \(Y = y_k\) 和每个连续特征 \(X_i\),我们计算该类别下特征 \(X_i\) 的均值和方差。
- 均值 \(\mu_{y_k}\) 是该类别下所有特征 \(X_i\) 值的平均。
- 方差 \(\sigma^2_{y_k}\) 是该类别下所有特征 \(X_i\) 值的方差。
使用均值和方差参数,我们可以为给定的类别 \(Y\) 和特征值 \(x_i\) 计算出条件概率密度。通过以下正态分布公式完成:
有了这些概率密度函数,朴素贝叶斯分类器可以通过将这些条件概率密度与先验概率 \(P(Y)\) 相乘并应用贝叶斯定理来为一个新的实例计算后验概率。然后它将选择具有最高后验概率的类别作为新实例的预测类别。
正态分布假设的朴素贝叶斯分类器是一个简单而强大的模型,尤其是当实际数据分布接近正态分布时。然而,当数据分布显著偏离正态分布,或者特征之间存在相关性时,这个模型的性能可能会下降。
然而,在实际应用中,即使正态分布的假设不完全成立,朴素贝叶斯分类器仍然可以表现出较高的鲁棒性和准确性。这部分是因为分类任务通常依赖于估计最大后验概率,而不是精确地计算出真实的概率值。