本篇文章是博主在人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在AI学习笔记:
AI学习笔记(14)---《Bayes分类器设计》
Bayes分类器设计
目录
1.前言
2.相关知识
2.1贝叶斯决策的基本概念
2.2正态模式下最小误判概率判决准则的具体形式
3.最小误判概率准则判决原理原理
3.1基本方式
3.2贝叶斯分类器设计步骤
3.3分类器分类步骤
4.编程实现
4.1统计判决贝叶斯MATLAB代码
4.2 正态分布模式的贝叶斯判别MATLAB代码
1.前言
理解并掌握贝叶斯判决的一般性原理,设计并实现一个基础贝叶斯分类器,能够根据自己的设计对贝叶斯决策理论算法有一个深刻认识。
正态模式下最小误判概率判决准则的具体形式;分类器分类步骤。
2.相关知识
2.1贝叶斯决策的基本概念
1.贝叶斯公式:
设实验E
的样本空间为S
,A
为E
的事件,B1,B2,...,Bn
为S
的一个划分,且P(A)>0,P(Bi)>0,(i=1,2,...,n)
,则
2.先验概率:
P(wi)
表示类wi
出现的先验概率,简称类wi
的概率。
3.后验概率:
P(wi∣x)
表示x
出现条件下类wi
出现的概率,称其为类别的后验概率,对于模式识别来讲,可以理解为x
来自类wi
的概率。
4.类概率:
p(x∣wi)
表示在类wi
条件下的概率密度,即类wi
模式x
的概率分布密度,简称为类概密。
2.2正态模式下最小误判概率判决准则的具体形式
正态分布模式的贝叶斯判决函数;
综上我们可以知道,di(x)
是一超二次曲面,如wi
类和wj
类相邻,则它们的决策界面方程为di(x)=dj(x)
,一般来说,正态分布的两个模式类别之间用一个而此判决界面就可以得到最有效果。由于对数函数是单调增函数,所以判决规则仍为:
3.最小误判概率准则判决原理原理
3.1基本方式
对于两类问题,统计判决的基本方式是根据类的概率和概密将模式的特征空间Ω
划分成两个判决域D1
和D2
,即
3.2两类问题
使用基本方式来分类时,会发生两种错误,一种是把实际属于w1
类的模式判定为w2
类,发生这种错误的原因是属于w1
的模式在特征空间中散步到Ω2
中去,从而将其判定为w2
类,这时的误判概率为:
同理将实际属于w2
类的模式判定为w1
类时的误判概率为:
如图所示:
我们的目标是总体上、统计上误判最少,因此所使用的判决准则是使得误判概率最小,这等价于使正确分类识别概率P(c)最大,即
经过推导,最终我们可以得到几种等价的最小误判概率准则下的判决规则:
将二类问题同样的分析方法运用到多类问题,可得到对于多类问题,最小误判概率准则有如下几种等价的判决规则:
3.2贝叶斯分类器设计步骤
1.计算先验概率P(wi)
:通过计算各类样本在总样本中占的比例得到先验概率;
P(wi)≈Ni/N,其中Ni为第i类样本的样本数,N为样本总数
2.计算类概率密度p(x∣wi)
;
3.利用贝叶斯公式求后验概率P(wi∣x)
;
4.根据最小误判概率准则进行判决,后验概率中最大值对应的类别即为识别对象的分类类别
3.3分类器分类步骤
-
确定类别
wi
,并提取每一类所对应的已知样本; -
特征提取,从样本中提取出一些可以作为区分不同类别的n个不同特征;
-
分别计算每一个类别的样本所对应的特征,计算出其均值矢量
ui
和协方差矩阵Σ
,即特征中心; -
对特征进行归一化操作,使其去量纲化;
-
利用选择的判决准则,对待分类样本进行分类。
4.编程实现
4.1统计判决贝叶斯MATLAB代码
x = [-3.9847 -3.5549 -1.2401 -0.9780 -0.7932 -2.8531
-2.7605 -3.7287 -3.5414 -2.2692 -3.4549 -3.0752
-3.9934 2.8792 -0.9780 0.7932 1.1882 3.0682
-1.5799 -1.4885 0.7431 -0.4221 -1.1186 4.2532]; % 样本数据
pw = [0.9 0.1]; % 先验概率
% 类条件概率分布正态分布分别为N(e1,a1)和N(e2,a2)
e1 = -2; a1 = 0.5; % 类条件分布1的均值和标准差
e2 = 2; a2 = 2; % 类条件分布2的均值和标准差
m = numel(x); % 样本数量
result = zeros(1, m); % 初始化结果向量
% 计算后验概率
p_w1_x = zeros(1, m); % 初始化后验概率p(w1|x)
p_w2_x = zeros(1, m); % 初始化后验概率p(w2|x)
for i = 1:m
% 计算p(w1|x)后验概率
p_w1_x(i) = (normpdf(x(i), e1, a1) * pw(1)) / ...
(normpdf(x(i), e1, a1) * pw(1) + normpdf(x(i), e2, a2) * pw(2));
% 计算p(w2|x)后验概率
p_w2_x(i) = (normpdf(x(i), e2, a2) * pw(2)) / ...
(normpdf(x(i), e1, a1) * pw(1) + normpdf(x(i), e2, a2) * pw(2));
end
% 根据最小误判概率准则进行判决,结果存入result中
for i = 1:m
if p_w1_x(i) > p_w2_x(i)
result(i) = 0; % 归类为类别1
else
result(i) = 1; % 归类为类别2
end
end
fprintf("%4d", result); % 输出结果
fprintf("\n");
4.2 正态分布模式的贝叶斯判别MATLAB代码
pkg load statistics
function GuassianBayesModel(w, p, X)
%%%%%%%%%% Begin %%%%%%%%%%
[row, col, class] = size(w); % 获取数据维度信息(行、列和类别数量)
% 根据给出的样本数据,求各个类的均值
u(:, :, 1) = sum(w(:, :, 1)) ./ row; % 计算类别1的均值
u(:, :, 2) = sum(w(:, :, 2)) ./ row; % 计算类别2的均值
u(:, :, 3) = sum(w(:, :, 3)) ./ row; % 计算类别3的均值
% 求各个类的协方差矩阵
sigma(:, :, 1) = cov(w(:, :, 1)); % 计算类别1的协方差矩阵
sigma(:, :, 2) = cov(w(:, :, 2)); % 计算类别2的协方差矩阵
sigma(:, :, 3) = cov(w(:, :, 3)); % 计算类别3的协方差矩阵
% 构建判别函数,计算点到每个类的马氏距离以及欧氏距离
md = zeros(1, class); % 初始化马氏距离数组
ed = zeros(1, class); % 初始化欧氏距离数组
P = zeros(1, class); % 初始化概率数组
for i = 1:class
md(i) = sqrt((X - u(:, :, i)) * inv(sigma(:, :, i)) * (X - u(:, :, i))'); % 计算马氏距离
ed(i) = sqrt(sum((X - u(:, :, i)) .^ 2)); % 计算欧氏距离
P(i) = p(i) * mvnpdf(X, u(:, :, i), sigma(:, :, i)); % 计算后验概率
end
%%%%%%%%%% End %%%%%%%%%%
% 判断样本属于哪个类的概率最高,并显示点到每个类的马氏距离和欧氏距离
maxP = max(P); % 找出最大概率
result = find(P == maxP); % 找出对应的类别
fprintf("点[%s]关于第1、2、3类的判别函数值分别为:%s %s %s\n", num2str(X), num2str(P(1)), num2str(P(2)), num2str(P(3)));
fprintf("点[%s]到第1、2、3类的马氏距离为:%s %s %s\n", num2str(X), num2str(md(1)), num2str(md(2)), num2str(md(3)));
fprintf("点[%s]到第1、2、3类的欧氏距离为:%s %s %s\n", num2str(X), num2str(ed(1)), num2str(ed(2)), num2str(ed(3)));
fprintf("点[%s]属于第%s类\n", num2str(X), num2str(result));
end
% 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 -0.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];
% 设置各类别先验概率
pw = [1/3 1/3 1/3];
% 样本矢量
X1 = [1 2 1];
X2 = [5 3 2];
X3 = [0 0 0];
% 调用高斯型Bayes判别函数, 输出判别函数值、马氏距离和判别结果
GuassianBayesModel(w, pw, X1);
GuassianBayesModel(w, pw, X2);
GuassianBayesModel(w, pw, X3);
文章若有不当和不正确之处,还望理解与指出。由于部分文字、图片等来源于互联网,无法核实真实出处,如涉及相关争议,请联系博主删除。如有错误、疑问和侵权,欢迎评论留言联系作者,或者私信联系作者。