一、贝叶斯理论概述
二、Brute-Force贝叶斯分类器
最大似然估计(MLE)计算流程:
例:
MAP与MLE的不同之处在于有先验概率,即每种假设的先验概率不同,结果受假设的先验概率影响较大。
贝叶斯推理的结果很大程度上依赖于先验概率,另外不是完全接受或拒绝假设,只是在观察到较多的数据后增大或减小了假设的可能性。
三、两种概率学习算法
1. 贝叶斯最优分类器
前面讨论的问题是:给定训练数据,最可能的假设是什么,更有意义的问题是:给定训练数据,对新实例的最可能的分类是什么。第二个问题的解决可以将第一个问题的结果(MAP)应用到新实例上得到,但结果并不一定最优。
例:
2. 朴素贝叶斯分类器
以上公式中xi表示第i个样本,实际中每个实例x可由特征联合描述,而目标函数f(x)从某有限集Y中取值,忽略假设。
四、EM算法与混合模型
GMMS的参数估计-EM算法
一维实例:
EM算法训练二维高斯混合模型demo
%产生2个二维正态数据
MU1 = [1 2];
SIGMA1 = [1 0; 0 0.5];
MU2 = [-1 -1];
SIGMA2 = [1 0; 0 1];
X = [mvnrnd(MU1, SIGMA1, 1000);mvnrnd(MU2, SIGMA2, 1000)];
%显示
scatter(X(:,1),X(:,2),10,'filled');
%GMMs 学习,请自己设计代码, 替代以下Matlab自带的学习函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cnt=2000;%点的个数和维数
d=2;
%初始化权值和均值方差
mu=[2*rand(1,2)',2*rand(1,2)'];
a=[0.5,0.5];
s=[cov(X),cov(X)];
old=[a(:);mu(:);s(:)];
%迭代步数和精度
eps=1e-3;
step=100;
%EM算法
while true
%计算后验概率,E步
r=zeros(cnt,d);
for j=1:d
r(:,j)=a(j)*mvnpdf(X,mu(:,j),s(:,(2*j-1):(2*j+d-2)));
end
r=r./repmat(sum(r,2),1,2);%r有2000行2列,每行为每个点分别属于两个高斯分布的概率,repmat复制生成2000行2列
%更新均值、方差、权值。M步
sr=sum(r,1);%列和,1行2列分别为所有点的两个高斯分布的后验概率,更新公式的分母
for j=1:d
mu(:,j)=(X'*r(:,j))/sr(1,j);
s(:,(2*j-1):(2*j+d-2))=(X-repmat(mu(:,j)',cnt,1))'*diag(r(:,j))*(X-repmat(mu(:,j)',cnt,1));
s(:,(2*j-1):(2*j+d-2))= s(:,(2*j-1):(2*j+d-2))./sr(1,j);
a(:,j)=sr(1,j)/cnt;
end
new=[a(:);mu(:);s(:)];
dis=sum(abs(new-old));
if (dis<eps) || (T<=0)
break;
end
old=new;
T=T-1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%显示学习到模型
[X,Y] = meshgrid(linspace(-10,10,100)', linspace(-10,10,100)');
for i=1:100
for j=1:100
XY=[X(i,j),Y(i,j)];
Z(i,j)=a(1)*mvnpdf(XY,mu(:,1),s(:,1:2))+a(2)*mvnpdf(XY,mu(:,2),s(:,3:4));
end
end
surf(X,Y,Z);
%显示学习参数
a
mu
s