朴素贝叶斯 (Naive-Bayes Algorithm)
本文包含对朴素贝叶斯公式的一些简单数学推导
以及机器学习的一些应用
1. 贝叶斯公式(Bayesian Formula)
P(A∣B)=P(B)P(B∣A)⋅P(A)
其中:
- P(A):先验概率 (prior)
- P(B∣A):似然概率 (likelihood)
- P(A∣B):后验概率 (posterior)
- P(B):证据 (evidence)
这个公式是怎么得来的呢?
从直觉上来说,它应该取决于两个因素:
-
先验 𝑃(𝐴):本来 𝐴 就有多大可能性。
-
似然 𝑃(𝐵∣𝐴):如果 𝐴真的发生,那么观察到 𝐵的可能性有多大。
很自然地,我们得到了一个正比的关系:
P(A∣B)∝P(B∣A)P(A)
但是 P(B) 的作用是什么呢?
让我们对公式做一个变形,在等号两边同乘 P(B) 用来反推:
P(A∣B)⋅P(B)=P(B∣A)⋅P(A)
这里我们可以看到 left=P(AB)=right ,这个等式是恒成立的
因此 P(B) 在这里起到的是 概率归一化 的作用 , 只是让这个等式成立的一个因子
2.朴素贝叶斯 (Naive Bayesian)
假设我们有一个特征集合
X={x1,x2,…,xn}
以及一个类别 (C)。在 特征条件独立 的假设下,有:
P(X∣C)=P(x1∣C)⋅P(x2∣C)⋅…⋅P(xn∣C)
也就是说 C 条件下发生 X 的概率等于 ,C条件下每个 子特征 发生的概率的乘积
3.算法应用
现在我们来看看朴素贝叶斯 如何运用到机器学习的算法中
1) 训练阶段 (Train)
我们假设在所有的数据集中 , 一共有 N 种标签(类别); 对于每一组数据,都包含有 d 个特征数据和 1 个 标签数据
Ci :第 i 类
xj : 第j个特征值 (对应着一个类中一个实际的值)
其中,
n 代表训练数据的数量 ;
ni 代表标签为 i (第 i 类) 数据的数量
ni,j 代表标签为 i 且第j个特征值为xj的数据的数量
- 计算 先验概率 (Prior)
P(Ci)=nni
- 计算 似然概率 (Likelihood)
P(xj∣Ci)=nini,j
这里xj是一个实际的值,相当于−−P(feature_value=xj∣Ci)=nini,j
2) 预测阶段 (Predict)
给定一个未分类的样本 X,其 特征 为 [x1,x2,…,xd]。
我们可以利用贝叶斯公式计算每个类别的 后验概率:
P(Ci∣X)=P(X)P(X∣Ci)⋅P(Ci)
(这里 P(Ci∣X) 表示对象 X 属于类别 Ci 的概率)
其中,P(X) 对于不同的类别 Ci 来说是常数,所以在不同类别中进行后验概率的比较时可以忽略。
在 条件独立性假设 下,似然项 P(X∣Ci) 可以分解为各个特征条件概率的乘积:
P(Ci∣X)∝P(Ci)⋅P(x1∣Ci)⋅P(x2∣Ci)⋅…⋅P(xd∣Ci)
(其中 P(xj∣Ci)表示在类别 Ci 下,第 j 个特征取值为xj 的概率)
这表明:后验概率与类别的先验概率以及该类别下各特征条件概率的乘积成正比。
接下来 , 我们只需要将训练阶段得出的 先验概率 和 似然 带入到我们得出的公式中 , 就可以得到在 X 情况下 Ci 后验的概率,也就是X 有多大可能属于Ci
观察所有得到的N个后验概率 ,当某一类别 Ci 的 后验概率 最大时,我们就认为对象X 属于该类别 Ci。
4.总结
朴素贝叶斯是一种简单且强大的机器学习算法。
它的优势是:
- 逻辑简单容易实现,适合大规模数据集。
- 运算开销较小。预测需要用到的概率在训练阶段都已经准好了,当新数据来了之后,只需要获取对应的概率值并进行简单的运算就能获得预测的结果。
- 受噪声和无关属性影响小。
相应的, 它的缺点或者说局限性就在于我们预设的那一步条件独立性假设
希望我的文章对你有所帮助~
点个赞再走吧~