贝叶斯分类 为什么 是 机器学习
贝叶斯分类 为什么 是 机器学习
贝叶斯分类 为什么 是 机器学习
贝叶斯不是机器学习
只不过是一种演算法,而这一类演算法是属于机器学习中,解决问题的一种方法
贝叶斯网路和贝叶斯分类演算法的区别
1、贝叶斯网路是:一种概率网路,它是基于概率推理的图形化网路,而贝叶斯公式则是这个概率网路的基础。贝叶斯网路是基于概率推理的数学模型,所谓概率推理就是通过一些变数的资讯来获取其他的概率资讯的过程,基于概率推理的贝叶斯网路(Bayesian neork)是为了解决不定性和不完整性问题而提出的,它对于解决复杂装置不确定性和关联性引起的故障有很的优势,在多个领域中获得广泛应用。
2、贝叶斯分类演算法是:统计学的一种分类方法,它是一类利用概率统计知识进行分类的演算法。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类演算法可以与决策树和神经网路分类演算法相媲美,该演算法能运用到大型资料库中,而且方法简单、分类准确率高、速度快。
3、贝叶斯网路和贝叶斯分类演算法的区别:由于贝叶斯定理假设一个属性值对给定类的影响独立于其它属性的值,而此假设在实际情况中经常是不成立的,因此其分类准确率可能会下降。为此,就衍生出许多降低独立性假设的贝叶斯分类演算法,如TAN(tree augmented Bayes neork)演算法。
贝叶斯分类演算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的演算法。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类演算法可以与决策树和神经网路分类演算法相媲美,该演算法能运用到大型资料库中,而且方法简单、分类准确率高、速度快。
由于贝叶斯定理假设一个属性值对给定类的影响独立于其它属性的值,而此假设在实际情况中经常是不成立的,因此其分类准确率可能会下降。为此,就衍生出许多降低独立性假设的贝叶斯分类演算法,如TAN(tree augmented Bayes neork)演算法。
贝叶斯分类器的基本定义
基本定义:贝叶斯分类器的分类原理是通过某物件的先验概率,利用贝叶斯公式计算出其后验概率,即该物件属于某一类的概率,选择具有最大后验概率的类作为该物件所属的类。
解释:贝叶斯网路是一个带有概率注释的有向无环图,图中的每一个结点均表示一个随机变数,图中两结点间若存在着一条弧,则表示这两结点相对应的随机变数是概率相依的,反之则说明这两个随机变数是条件独立的。网路中任意一个结点X 均有一个相应的条件概率表(Conditional Probability Table,CPT),用以表示结点X 在其父结点取各可能值时的条件概率。若结点X 无父结点,则X 的CPT 为其先验概率分布。贝叶斯网路的结构及各结点的CPT 定义了网路中各变数的概率分布。
朴素贝叶斯分类器和一般的贝叶斯分类器有什么区别, 朴素贝叶斯演算法不是可以直接分类,为什么还要机器学习
朴素贝叶斯本来就是机器学习里的一种分类器,而且只是生成模型中的一类。
是生成模型的话,你得假设分布。”朴素“的话还得有独立性假设。结果如何和这些假设是否准确都有关系。总体来说生成模型假阳性率和效率也都一般般。
再者,给定影象的画素值,你觉得直接用这个特征来建表训练朴素贝叶斯的可行性如何?我觉得几乎没有可行性。相比起自己设计影象类资料的特征提取,深度卷积完全不需要管这一步所以至少影象方面深度学习目前的优势是毋庸置疑的。
朴素贝叶斯目前也就在自然语言之类的方面有不错的应用吧。
matlab怎样实现贝叶斯分类
贝叶斯分类器的分类原理是通过某物件的先验概率,利用贝叶斯公式计算出其后验概率,即该物件属于某一类的概率,选择具有最大后验概率的类作为该物件所属的类。也就是说,贝叶斯分类器是最小错误率意义上的优化,它遵循“多数占优”这一基本原则。
一、分类器的基本概念
经过了一个阶段的模式识别学习,对于模式和模式类的概念有一个基本的了解,并尝试使用MATLAB实现一些模式类的生成。而接下来如何对这些模式进行分类成为了学习的第二个重点。这就需要用到分类器。
表述模式分类器的方式有很多种,其中用的最多的是一种判别函式的形式,如果对于所有的j≠i,有:
则此分类器将这个特征向量x判为ωi类。因此,此分类器可视为计算c个判别函式并选取与最大判别值对应的类别的网路或机器。一种分类器的网路结构如下图所示:
二、贝叶斯分类器
一个贝叶斯分类器可以简单自然地表示成以上网路结构。贝叶斯分类器的分类原理是通过某物件的先验概率,利用贝叶斯公式计算出其后验概率,即该物件属于某一类的概率,选择具有最大后验概率的类作为该物件所属的类。在具有模式的完整统计知识条件下,按照贝叶斯决策理论进行设计的一种最优分类器。分类器是对每一个输入模式赋予一个类别名称的软体或硬体装置,而贝叶斯分类器是各种分类器中分类错误概率最小或者在预先给定代价的情况下平均风险最小的分类器。它的设计方法是一种最基本的统计分类方法。
对于贝叶斯分类器,其判别函式的选择并不是唯一的,我们可以将所有的判别函式乘上相同的正常数或者加上一个相同的常量而不影响其判决结果;在更一般的情况下,如果将每一个gi
(x)替换成f(gi
(x)),其中f(∙)是一个单调递增函式,其分类的效果不变。特别在对于最小误差率分类,选择下列任何一种函式都可以得到相同的分类结果,但是其中一些比另一些计算更为简便:
一个典型的模式识别系统是由特征提取和模式分类两个阶段组成的,而其中模式分类器(Classifier)的效能直接影响整个识别系统的效能。 因此有必要探讨一下如何评价分类器的效能,这是一个长期探索的过程。分类器效能评价方法见::blog.csdn./liyuefeilong/article/details/44604001
三、基本的Bayes分类器实现
这里将在MATLAB中实现一个可以对两类模式样本进行分类的贝叶斯分类器,假设两个模式类的分布均为高斯分布。模式类1的均值向量m1
= (1, 3),协方差矩阵为S1 =(1.5, 0; 0, 1);模式类2的均值向量m2 = (3, 1),协方差矩阵为S2 =(1,
0.5; 0.5, 2),两类的先验概率p1 = p2 = 1/2。详细的操作包含以下四个部分:
1.首先,编写一个函式,其功能是为若干个模式类生成指定数目的随机样本,这里为两个模式类各生成100个随机样本,并在一幅图中画出这些样本的二维散点图;
2.由于每个随机样本均含有两个特征分量,这里先仅仅使用模式集合的其中一个特征分量作为分类特征,对第一步中的200个样本进行分类,统计正确分类的百分比,并在二维图上用不同的颜色画出正确分类和错分的样本;(注:绿色点代表生成第一类的散点,红色代表第二类;绿色圆圈代表被分到第一类的散点,红色代表被分到第二类的散点! 因此,里外颜色不一样的点即被错分的样本。)
3.仅用模式的第二个特征分量作为分类特征,重复第二步的操作;
4.同时用模式的两个分量作为分类特征,对200个样本进行分类,统计正确分类百分比,并在二维图上用不同的颜色画出正确分类和错分的样本;
正确率:
可以看到,单单使用一个分类特征进行分类时,错误率较高(多次试验均无法得出较好的分类结果),而增加分类特征的个数是提高正确率的有效手段,当然,这会给演算法带来额外的时间代价。
四、进一步的Bayes分类器
假设分类资料均满足高斯分布的情况下,设计一个判别分类器,实验目的是为了初步了解和设计一个分类器。
1.编写一个高斯型的Bayes判别函式GuassianBayesModel( mu,sigma,p,X ),该函式输入为:一给定正态分布的均值mu、协方差矩阵sigma,先验概率p以及模式样本向量X,输出判别函式的值,其程式码如下:
2.以下表格给出了三类样本各10个样本点,假设每一类均为正态分布,三个类别的先验概率相等均为P(w1)=P(w2 )=P(w3 )=1/3。计算每一类样本的均值向量和协方差矩阵,为这三个类别设计一个分类器。
3.用第二步中设计的分类器对以下测试点进行分类:(1,2,1),(5,3,2),(0,0,0),并且利用以下公式求出各个测试点与各个类别均值之间的Mahalanobis距离。以下是来自百度百科的关于马氏距离的解释:
马氏距离计算公式:
更具体的见: :baike.baidu./link?url=Pcos75ou28q7IukueePCNqf8N7xZifuXOTrwzeWpJULgVrRnytB9Gji6IEhEzlK6q4eTLvx45TAJdXVd7Lnn2q
4.如果P(w1)=0.8, P(w2 )=P(w3 )=0.1,再进行第二步和第三步实验。实验的结果如下:
首先是得出三类样本点各自的均值和协方差矩阵:
在三个类别的先验概率均为P(w1)=P(w2 )=P(w3 )=1/3时,使用函式进行分类并给出分类结果和各个测试点与各个类别均值之间的Mahalanobis距离。
验证当三个类别的先验概率不相等时,同样使用函式进行分类并给出分类结果和各个测试点与各个类别均值之间的Mahalanobis距离。
可以看到,在Mahalanobis距离不变的情况下,不同的先验概率对高斯型Bayes分类器的分类结果影响很大~ 事实上,最优判决将偏向于先验概率较大的类别。
完整的程式码如下由两个函式和主要的执行流程组成:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 产生模式类函式
% N:生成散点个数 C:类别个数 d:散点的维数
% mu:各类散点的均值矩阵
% sigma:各类散点的协方差矩阵
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function result = MixGaussian(N, C, d, mu, sigma)
color = {'r.', 'g.', 'm.', 'b.', 'k.', 'y.'}; % 用于存放不同类资料的颜色
% if nargin <= 3 & N < 0 & C < 1 & d < 1
% error('引数太少或引数错误');
if d == 1
for i = 1 : C
for j = 1 : N/C
r(j,i) = sqrt(sigma(1,i)) * randn() + mu(1,i);
end
X = round(mu(1,i)-5);
Y = round(mu(1,i) + sqrt(sigma(1,i))+5);
b = hist(r(:,i), X:Y);
subplot(1,C,i),bar(X:Y, b,'b');
title('三类一维随机点的分布直方图');
grid on
end
elseif d == 2
for i = 1:C
r(:,:,i) = mvnrnd(mu(:,:,i),sigma(:,:,i),round(N/C));
plot(r(:,1,i),r(:,2,i),char(color(i)));
hold on;
end
elseif d == 3
for i = 1:C
r(:,:,i) = mvnrnd(mu(:,:,i),sigma(:,:,i),round(N/C));
plot3(r(:,1,i),r(:,2,i),r(:,3,i),char(color(i)));
hold on;
end
else disp('维数只能设定为1,2或3');
end
result = r;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 高斯型Bayes判别函式
% mu:输入正态分布的均值
% sigma:输入正态分布的协方差矩阵
% p:输入各类的先验概率
% X:输入样本向量
% 输出判别函式值、马氏距离和判别结果
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function GuassianBayesModel( mu,sigma,p,X )
% 构建判别函式
% 计算点到每个类的Mahalanobis距离
for i = 1:3;
P(i) = mvnpdf(X, mu(:,:,i), sigma(:,:,i)) * p(i);
r(i) = sqrt((X - mu(:,:,i)) * inv(sigma(:,:,i)) * (X - mu(:,:,i))');
end
% 判断样本属于哪个类的概率最高
% 并显示点到每个类的Mahalanobis距离
maxP = max(P);
style = find(P == maxP);
disp(['点[',num2str(X),']关于第一类的判别函式值为:',num2str(P(1))]);
disp(['点[',num2str(X),']关于第二类的判别函式值为:',num2str(P(2))]);
disp(['点[',num2str(X),']关于第三类的判别函式值为:',num2str(P(3))]);
disp(['点[',num2str(X),']到第1类的Mahalanobis距离为:',num2str(r(1))]);
disp(['点[',num2str(X),']到第2类的Mahalanobis距离为:',num2str(r(2))]);
disp(['点[',num2str(X),']到第3类的Mahalanobis距离为:',num2str(r(3))]);
disp(['点[',num2str(X),']属于第',num2str(style),'类']);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%贝叶斯分类器实验主函式
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 生成两类各100个散点样本
mu(:,:,1) = [1 3];
sigma(:,:,1) = [1.5 0; 0 1];
p1 = 1/2;
mu(:,:,2) = [3 1];
sigma(:,:,2) = [1 0.5; 0.5 2];
p2 = 1/2;
% 生成200个二维散点,平分为两类,每类100个
aa = MixGaussian(200, 2, 2, mu, sigma);
title('两类共200个高斯分布的散点');
% 只x分量作为分类特征的分类情况
figure;
% 正确分类的散点个数
right1 = 0;
right2 = 0;
% 正确率
rightRate1 = 0;
rightRate2 = 0;
for i = 1:100
x = aa(i,1,1);
plot(aa(:,1,1),aa(:,2,1),'r.');
% 计算后验概率
P1 = normpdf(x, 1, sqrt(1.5));
P2 = normpdf(x, 3, sqrt(1));
if P1 > P2
plot(aa(i,1,1),aa(i,2,1),'ks');
hold on;
right1 = right1 + 1;% 统计正确个数
elseif P1 < P2
plot(aa(i,1,1),aa(i,2,1),'go');
hold on;
end
end
rightRate1 = right1 / 100; % 正确率
for i = 1:100
x = aa(i,1,2);
plot(aa(:,1,2),aa(:,2,2),'g.');
% 计算后验概率
P1 = normpdf(x, 1, sqrt(1.5));
P2 = normpdf(x, 3, sqrt(1));
if P1 > P2
plot(aa(i,1,2),aa(i,2,2),'ks');
hold on;
elseif P1 < P2
plot(aa(i,1,2),aa(i,2,2),'go');
hold on;
right2 = right2 + 1; % 统计正确个数
end
end
rightRate2 = right2 / 100;
title('使用第一个分类特征的分类结果');
disp(['只用第一个特征时,第一类分类的准确率为:',num2str(rightRate1*100),'%']);
disp(['只用第一个特征时,第二类分类的准确率为:',num2str(rightRate2*100),'%']);
% 只使用y分量的分类特征的分类情况
figure;
% 正确分类的散点个数
right1 = 0;
right2 = 0;
% 正确率
rightRate1 = 0;
rightRate2 = 0;
for i = 1:100
y = aa(i,2,1);
plot(aa(:,1,1),aa(:,2,1),'r.');
% 计算后验概率
P1 = normpdf(y, 3, sqrt(1));
P2 = normpdf(y, 1, sqrt(2));
if P1 > P2
plot(aa(i,1,1),aa(i,2,1),'ks');
hold on;
right1 = right1 + 1; % 统计正确个数
elseif P1 < P2
plot(aa(i,1,1),aa(i,2,1),'go');
hold on;
end
end
rightRate1 = right1 / 100; % 正确率
for i = 1:100
y = aa(i,2,2);
plot(aa(:,1,2),aa(:,2,2),'g.');
% 计算后验概率
P1 = normpdf(y, 3, sqrt(1));
P2 = normpdf(y, 1, sqrt(2));
if P1 > P2
plot(aa(i,1,2),aa(i,2,2),'ks');
hold on;
elseif P1 < P2
plot(aa(i,1,2),aa(i,2,2),'go');
hold on;
right2 = right2 + 1; % 统计正确个数
end
end
rightRate2 = right2 / 100; % 正确率
title('使用第二个分类特征的分类结果');
disp(['只用第二个特征时,第一类分类的准确率为:',num2str(rightRate1*100),'%']);
disp(['只用第二个特征时,第二类分类的准确率为:',num2str(rightRate2*100),'%']);
% 同时使用两个分类特征的分类情况
figure;
% 正确分类的散点个数
right1 = 0;
right2 = 0;
% 正确率
rightRate1 = 0;
rightRate2 = 0;
for i = 1:100
x = aa(i,1,1);
y = aa(i,2,1);
plot(aa(:,1,1),aa(:,2,1),'r.');
% 计算后验概率
P1 = mvnpdf([x,y], mu(:,:,1), sigma(:,:,1));
P2 = mvnpdf([x,y], mu(:,:,2), sigma(:,:,2));
if P1 > P2
plot(aa(i,1,1),aa(i,2,1),'ks');
hold on;
right1 = right1 + 1;
else if P1 < P2
plot(aa(i,1,1),aa(i,2,1),'go');
hold on;
end
end
end
rightRate1 = right1 / 100;
for i = 1:100
x = aa(i,1,2);
y = aa(i,2,2);
plot(aa(:,1,2),aa(:,2,2),'g.');
% 计算后验概率
P1 = mvnpdf([x,y], mu(:,:,1), sigma(:,:,1));
P2 = mvnpdf([x,y], mu(:,:,2), sigma(:,:,2));
if P1 > P2
plot(aa(i,1,2),aa(i,2,2),'ks');
hold on;
else if P1 < P2
plot(aa(i,1,2),aa(i,2,2),'go');
hold on;
right2 = right2 + 1;
end
end
end
rightRate2 = right2 / 100;
title('使用两个分类特征的分类结果');
disp(['同时使用两个特征时,第一类分类的准确率为:',num2str(rightRate1*100),'%']);
disp(['同时使用两个特征时,第二类分类的准确率为:',num2str(rightRate2*100),'%']);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 进一步的Bayes分类器
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% w1,w2,w3三类散点
w = zeros(10,3,3);
w(:,:,1) = [-5.01 -8.12 -3.68;...
-5.43 -3.48 -3.54;...
1.08 -5.52 1.66;...
0.86 -3.78 -4.11;...
-2.67 0.63 7.39;...
4.94 3.29 2.08;...
-2.51 2.09 -2.59;...
-2.25 -2.13 -6.94;...
5.56 2.86 -2.26;...
1.03 -3.33 4.33];
w(:,:,2) = [-0.91 -0.18 -0.05;...
1.30 -.206 -3.53;...
-7.75 -4.54 -0.95;...
-5.47 0.50 3.92;...
6.14 5.72 -4.85;...
3.60 1.26 4.36;...
5.37 -4.63 -3.65;...
7.18 1.46 -6.66;...
-7.39 1.17 6.30;...
-7.50 -6.32 -0.31];
w(:,:,3) = [ 5.35 2.26 8.13;...
5.12 3.22 -2.66;...
-1.34 -5.31 -9.87;...
4.48 3.42 5.19;...
7.11 2.39 9.21;...
7.17 4.33 -0.98;...
5.75 3.97 6.65;...
0.77 0.27 2.41;...
0.90 -0.43 -8.71;...
3.52 -0.36 6.43];
% 均值
mu1(:,:,1) = sum(w(:,:,1)) ./ 10;
mu1(:,:,2) = sum(w(:,:,2)) ./ 10;
mu1(:,:,3) = sum(w(:,:,3)) ./ 10;
% 协方差矩阵
sigma1(:,:,1) = cov(w(:,:,1));
sigma1(:,:,2) = cov(w(:,:,2));
sigma1(:,:,3) = cov(w(:,:,3));
% 各类别的先验概率
% p(1) = 1/3;
% p(2) = 1/3;
% p(3) = 1/3;
p(1) = 0.8;
p(2) = 0.1;
p(3) = 0.1;
% 样本向量
X = [1 0 0];
% 呼叫高斯型Bayes判别函式,输出判别函式值、马氏距离和判别结果
GuassianBayesModel(mu1,sigma1,p,X);
贝叶斯分类的问题
P(C|K)
为什么朴素贝叶斯分类称为朴素的
因为朴素贝叶斯的思想很朴素Navie。
你日常生活中也每时每刻都在进行着分类,比如你看到一个黑人,心里十有八九猜他来自非洲。因为生活经验告诉你非洲黑人最多,当然人家也有可能会是美洲或亚洲人。但是在没有任何其他可用的资讯的情况下,我们会选择最有可能的类别。
为什么朴素贝叶斯称为“朴素”?请简述朴素贝叶斯分类的主要思想
朴素贝叶斯分类器是一种应用基于独立假设的贝叶斯定理的简单概率分类器。
之所以成为朴素,应该是Naive的直译,意思为简单,朴素,天真。
朴素贝叶斯分类是最常用的两大分类演算法(决策树分类和朴素贝叶斯分类)。分类是将一个未知样本分到几个预先已知类的过程。
朴素贝叶斯分类是基于贝叶斯概率的思想,假设属性之间相互独立,例如A和B,则P(B|A)代表A发生的情况下,B发生的概率。
具体的情况可以参见 刘未鹏大牛写的《数学之美番外篇:平凡而又神奇的贝叶斯方法》
高斯贝叶斯分类器设计怎么做
为了测试评估贝叶斯分类器的效能,用不同资料集进行对比实验是必不可少的. 现有的贝叶斯网路实验软体包都是针对特定目的设计的,不能满足不同研究的需要. 介绍了用Matlab在BNT软体包基础上建构的贝叶斯分类器实验平台MBNC,阐述了MBNC的系统结构和
