分类预测 | 朴素贝叶斯(Naive Bayesian)
梦 罟
朴素贝叶斯模型
学习了一些朴素贝叶斯的知识,比想象中简单很多。趁着空闲,记录在案,谨防遗忘。
贝叶斯公式
提到贝叶斯,自然想起了《概率论与数理统计》中的贝叶斯公式:
公式中:
P(A)是A的先验概率或边缘概率,之所以称为"先验"是因为它不考虑任何B方面的因素。
P(A|B)是已知B发生后A的条件概率,也由于得自B的取值而被称作A的后验概率。
P(B|A)是已知A发生后B的条件概率,也由于得自A的取值而被称作B的后验概率。
Pr(B)是B的先验概率或边缘概率,也作标准化常量(normalized constant)。
作为对概率分布的主观判断进行修正的标准方法,贝叶斯公式的思想可以表示为:
后验概率 = (似然度 * 先验概率)/标准化常量
即:后验概率与先验概率和似然度的乘积成正比
举一个简单的例子:
那么阴天条件下不出门的概率就可以表示为:
朴素贝叶斯(Naive Bayesian)
作为从贝叶斯原理中提出的具体方法,朴素贝叶斯的家族关系可以表示如图:
事实上,朴素贝叶斯分类器是贝叶斯分类器中,最简单,最常用的一种,其表达形式如下:
值得注意的是,朴素贝叶斯算法之所以朴素(naive),是因为他假设样本特征之间相互独立,这使得算法的逻辑性和稳定性提高,即数据呈现不同特点时,朴素贝叶斯的分类性能不会有太大的差异。但另一方面,样本特征的独立性在大多数情况下是难以满足的,当特征关联性较高时,会导致贝叶斯算法的效果大大降低。
而在实际运用中,依据数据类型的不同,朴素贝叶斯模型又可以细分为:
高斯朴素贝叶斯(连续变量,假设服从正态分布)
伯努利朴素贝叶斯(0-1变量)
多项式朴素贝叶斯(离散变量)
具体应用场景如下表所示:
在下文中将对各类朴素贝叶斯模型进行实际测试。
最后是朴素贝叶斯的优缺点分析:
优点:
源于古典数学理论,有坚实的数学基础;
算法逻辑简单,易于实现;
对小规模的数据表现较好,适合增量学习;
对缺失数据不敏感,对训练样本的特征和类别只是进行概率计算。
缺点:
假设样本之间独立,偏离实际;
针对不同的输入数据,需要使用不同的处理模型。
实例验证
基于python的sklearn包,使用sf-crime数据集和iris数据集分别进行高斯、伯努利朴素贝叶斯模型实例化,流程可表达如下:
导入数据集,根据数据类型选择模型
进行数据预处理,提取出样本特征X和样本分类y
分割训练集与测试集
创建训练模型,将训练集和测试集放入模型
训练模型,输入精确度
以鸢尾花数据集为例,通过SepalLengthCm、SepalWidthCm、PetalLengthCm、PetalWidthCm四个特征属性推断鸢尾花的品类,故采用高斯朴素贝叶斯模型:
运行程序,鸢尾花数据集的预测正确度为0.97,即在97%的情况下通过4个特征属性都能正确推导出鸢尾花的品类。
至此,朴素贝叶斯模型实例验证完毕,我将全部文件放在原文链接,提取码为:niyp。
文/微寒