一、貝葉斯理論概述
二、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