朴素贝叶斯本质上就是假设特征之间相互独立,并通过贝叶斯公式求解后验概率的思想。
写出全概率公式&贝叶斯公式
贝叶斯公式:在事件 B 下事件 A 发生的概率可转化为 $$ P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} $$ 全概率公式:在所有可能情况下事件 A 发生的概率 $$ P(A) = \sum_i^n P(A, B_i) = \sum_i^n P(A|B_i)P(B_i) $$
全概率公式的意义在于,当某一事件的概率难以求得时,可转化为在一系列条件下发生概率的和。
通过全概率公式,贝叶斯公式可转换为 $$ P(B_i|A) = \frac{P(A|B_i)P(B_i)}{P(A)} = \frac{P(A|B_i)P(B_i)}{\sum_j^nP(A|B_j)P(B_j)} $$
贝叶斯公式的意义在于,在事件 A 已经发生的条件下,用于确定导致 A 发生的各种「原因」的概率。
朴素贝叶斯为什么“朴素naive”?
朴素其实就是代表着简化问题复杂度,即通过「条件独立性假设」将问题简化。朴素贝叶斯模型会假设特征向量的各个维度间相互独立(毫无关系),即「条件独立性假设」。这个假设在现实中不一定真实,因为特征之间可能会存在相关性,因此比较 navïe。
朴素贝叶斯有没有超参数可以调?
没有,因为朴素贝叶斯最后比较的各个类的后验概率是直接通过数学统计方法通过训练数据中多个类的先验概率
虽然实际应用中朴素贝叶斯会和拉普拉斯平滑修正一起使用,而拉普拉斯平滑修正方法中有平滑系数这一超参数,但是这并不属于朴素贝叶斯模型本身的范畴。
朴素贝叶斯的工作流程是怎样的?
从数据准备,训练和应用三个阶段来理解
- 数据准备阶段:对于给定数据集,首先需要手动将存在高度相关性的特征的筛选出来,防止之后在训练的时候,重复计算从而影响分类结果。然后人工对一部分待分类项进行分类,形成训练样本集合。
- 训练阶段:该阶段的主要任务是生成分类器,根据数据计算的到各个值下的先验概率
$P(y_i)$ 和后验概率$P(X|y_i)$ ,并记录下来。 - 应用阶段:该阶段的任务是使用分类器对待分类项进行分类,对于给定的
$X$ ,计算各个类$y_i$ 的条件概率$P(y_i|X)$ ,选择概率最大的类作为最终的分类结果。
朴素贝叶斯对异常值敏不敏感?
基础的朴素贝叶斯模型的训练过程,本质上是通过数学统计方法从训练数据中统计先验概率
- 假如说对于相同的
$y$ 下,有异常值$X'$ 和正常值$X$ ,在这种情况下对于$P(y|X) = P(y)P(X|y)$ ,由于$P(y)$ 是相等的,$P(X'|y)$ 相比$P(X|y)$ 小很多,所以最终的$P(y|X)$ 肯定大于$P(y|X’)$ ,因此不影响最终的分类结果。 - 假如说对于相同的
$X$ 下,有异常值$y'$ 和正常值$y$ ,在这种情况下对于$P(y|X) = P(y)P(X|y)$ ,$P(y)$ 和$P(y')$ 可能不同,但$P(X|y')$ 相比$P(X|y)$ 小很多,所以最终的$P(y|X)$ 一般都不会小于$P(y'|X)$ ,因此不影响最终的分类结果。
综上所述,少数的异常值不会对统计结果造成比较大的影响,因此朴素贝叶斯对异常值不敏感。
为什么用朴素贝叶斯的时候需要用到拉普拉斯平滑修正?
为的是防止测试数据中存在之前训练数据中不存在的
