一、基础知识
条件概率:
全概率公式:
贝叶斯公式:
二、朴素贝叶斯的公式
样本
类别集合Y={},共有k种类型的样本
生成式模型公式:
上式中,P(C)为先验概率,P(x|c)为条件概率/似然,P(x)为归因化因子,因此最后可以得出后验概率正比于。
由式子,当时,可以推导得到
朴素贝叶斯要求属性条件相互独立,即为中的,相互独立,因此最终的朴素贝叶斯分类器(Naive Bayesian Classifier)的表达式为:
注:样本集合X=,类别集合,
, 表示第c类中在属性取值为的样本个数
三、鸢尾花分类实践的朴素贝叶斯分类的matlab实现
load fisheriris %载入数据集
gscatter(meas(:,1), meas(:,2), species,'rgb','osd');%绘制数据集的散点图
xlabel('Sepal length');
ylabel('Sepal width');
N = size(meas,1);
%在每个类中的变量都假设为高斯分布,
nbGau = fitcnb(meas(:,1:2), species);
nbGauResubErr = resubLoss(nbGau)
nbGauCV = crossval(nbGau, 'CVPartition',cp);
nbGauCVErr = kfoldLoss(nbGauCV)
labels = predict(nbGau, [x y]);
gscatter(x,y,labels,'grb','sod')
%但是在很多时候,每个类中的变量的分布形式是不同的,虽然作为一个研究者很不希望这样的事情出现,但是
%这种情况是更加普遍的,这时候,我们可以采用的方式是采用核函数的方式,这是一个非常灵活的无参数技术
nbKD = fitcnb(meas(:,1:2), species, 'DistributionNames','kernel', 'Kernel','box');
nbKDResubErr = resubLoss(nbKD)
nbKDCV = crossval(nbKD, 'CVPartition',cp);
nbKDCVErr = kfoldLoss(nbKDCV)
labels = predict(nbKD, [x y]);
gscatter(x,y,labels,'rgb','osd')
四、朴素贝叶斯变换的特点
优点:
1、只需要计算组合概率,所需要估计的参数较少
2、对数据较少或者缺失数据的数据集进行分类时候的鲁棒性好
3、能够充分利用样本数据
4、能够学习变量间的因果关系
5、具有自我纠正能力
缺点:
1、对于输入数据的准备方式较为敏感
2、独立假设条件在实际中可能不成立
3、不能学习特征间的交互关系