模式识别:最大似然估计与贝叶斯估计方法

之前学习了贝叶斯分类器的构造和使用,其中核心的部分是得到事件的先验概率并计算出后验概率 ,而事实上在实际使用中,很多时候无法得到这些完整的信息,因此我们需要使用另外一个重要的工具——参数估计。

参数估计是在已知系统模型结构时,用系统的输入和输出数据计算系统模型参数的过程。18世纪末德国数学家C.F.高斯首先提出参数估计的方法,他用最小二乘法计算天体运行的轨道。20世纪60年代,随着电子计算机的普及,参数估计有了飞速的发展。参数估计有多种方法,有最小二乘法、极大似然法、极大验后法、最小风险法和极小化极大熵法等。在一定条件下,后面三个方法都与极大似然法相同。最基本的方法是最小二乘法和极大似然法。这里使用MATLAB实现几种经典的方法并研究其估计特性。

目前理论部分尚在研究当中,无法解释得很清楚,这是一个长期的学习过程。

一、最大似然估计法

最大似然估计是一种统计方法,它用来求一个样本集的相关概率密度函数的参数。这个方法最早是遗传学家以及统计学家罗纳德?费雪爵士在 1912 年至1922 年间开始使用的。这种方法的基本思想是:当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得从模型中抽取该n组样本观测值的概率最大,而不是像最小二乘估计法旨在得到使得模型能最好地拟合样本数据的参数估计量。

最大似然估计的优点主要有:

1. 随着样本数量的增加,收敛性变好;

2. 比任何其他的迭代技术都简单,适合实用。

最大四然估计的一般原理:

假设有c个类,且:

在正态分布时有:

假设数据集合D划分成的类为

我们可以将数据集合D划分成互不相交的样本子集合,每一个子集合中的样本属于同一类。对每一个数据集合Di ,单独估计自己的 ,这样只需估计其参数即可得到分布函数。

这样,假设集合D包含同一类n个样本, x1, x2,…, xn,且这些样本是独立抽样得到的,则:

P(D | θ)称为样本集合D的似然函数。参数θ 的最大似然估计是通过使定义的P(D | θ) 最大化得到的θ的值,使得实际观测到的样本集合具有最大的概率。在实际中,可以对似然函数进行对数运算,为此定义对数似然函数如下:

这样有:

其导数定义为:

(注:由于自然对数函数是单调增函数,因此对数似然函数和似然函数的极值点的位置相同!)

这里我们要寻找最优解,这是最大似然估计的基本思想。最优解的必要条件是:

若θ由p个参数组成,则上式代表p个方程组成的方程组。下一步是求取似然函数的极值点:

此时问题可以重新表述为:求对数似然函数的极值点参数θ,使对数似然函数取得最大值:

根据以上公式,在样本点服从正态分布,且均值和协方差矩阵未知的情况下,我们可以得到以下两个公式,分别计算估计均值和协方差矩阵。

二、贝叶斯估计法

在最大似然估计中,假设参数θ未知,但事实上它是确定的量。在而在贝叶斯估计法中,参数θ视为一个随机变量。后验概率P(x| D) 的计算是贝叶斯学习的最终目的,其核心问题是给定样本集合D,计算P(θ| D)。方法二和方法三就属于贝叶斯估计法。(公式的推导有待进一步研究)

离散情况:

三、估计方法的公式总结

这里假设样本点服从正态分布,且均值和协方差矩阵未知的情况下,方法一计算估计均值和协方差矩阵:

方法二计算估计均值和协方差矩阵:

方法三计算估计均值和协方差矩阵:

其中,λ 是一个小于1的正数,一般可取λ=0.01。可以看到,方法二和方法三均使用迭代的方法求解每一步的均值矢量和协方差矩阵。

四、估计误差

在方法二、三中,在第k步的估计误差可以由下面的公式计算:

上面的是向量和矩阵范数,一般可以取欧氏范数的形式。

五、实验步骤与讨论

对不同维数下的高斯概率密度模型,用最大似然估计等方法对其参数进行估计。假设有概率密度为高斯分布p(x) ~N(μ,∑)的样本集合S={xk,k = 1,2,…,n},可以使用以上介绍的三种方法进行均值矢量和协方差矩阵的参数估计,实验步骤主要包括以下几个部分:

1)参考:http://blog.csdn.net/liyuefeilong/article/details/44247589 中的程序,调用模式类生成函数MixGaussian,要求给定一组均值(均值向量)和方差(协方差矩阵),生成一维、二维或三维的高斯分布的散点,每一组数据集合的样本个数为100。

2)利用上面介绍的方法一、方法二和方法三,分别估计这三组数据的均值(均值向量)和方差(协方差矩阵)。

3)利用上面介绍的误差计算公式,计算方法一、方法二和方法三的估计误差。对于方法二和方法三,计算每一次迭代估计的误差值,并绘制出误差曲线图。

这里生成三维散点图,以下是三种方法的估计结果与误差曲线图:

方法一:

方法二:

方法三:

结论一: 观察误差曲线图,方法三在估计样本点个数少的时候比方法二的均值误差更小,但方法二的均值误差曲线总体呈单调递减的走势,而方法三正好相反。在观察误差曲线时,无法找出更多可靠的规律。考虑到这里样本点只有100个,因此增加样本点个数进行实验。

4)在(1)中,将每一个数据集合的样本个数变为10000,重新生成数据集合,重复(2) (3)中的实验。

方法一:

方法二:

方法三:

结论二:可以看到,使用方法二进行迭代求取均值和协方差矩阵的方法的误差曲线随着样本点数的增多而区域平缓;相比之下,方法三的误差曲线变化幅度较大,而且在样本个数较多的情况下误差要大于方法二。

5)该部分是论证方法三中λ的取值对估计误差的影响。这里选取不同的λ值,重复(2) (3) (4)中的实验,观察结果的异同,并加以解释分析。

100数据lamda比较:

10000数据lamda比较:

结论三:结合输出结果可以发现,方法三中λ的取值对均值矢量估计和协方差矩阵估计的误差有很大影响,过大的λ取值会导致更大的估计误差,因此通常λ取0.01。

总结:由于实验采用了有限样本估计带来了一定的估计误差,这一误差的影响可以通过增加样本个数的方法来减小。在理论上,贝叶斯估计方法有很强的理论和算法基础,但实际中,最大似然估计算法更加简便,而且设计出的分类器性能几乎与贝叶斯方法得到的结果相差无几。若碰到样本点个数很少时,可以尝试使用方法三进行估计。

最后给出几个主要函数的定义,只需简单设置参数就可以调用这些函数:

% 方法一进行参数估计,输出估计均值和协方差矩阵
function [mu,sigma] = ParameterEstimation1(r)

[x,y] = size(r);
% 散点的均值计算
mu = sum(r)/x;
% 散点的协方差矩阵计算
a = 0;
for i = 1:x
    a = a + (r(i,:,:) - mu)‘ * (r(i,:,:) - mu);
end
sigma = a/x;

disp([‘使用第一种方法估计的‘,num2str(y),‘维均值矢量为:‘]);
disp(mu);
disp([‘使用第一种方法估计的‘,num2str(y),‘维协方差矩阵为:‘]);
disp(sigma);

if y == 1
    k=-3:0.1:x;
    x=mu + 0.*k; % 产生一个和y长度相同的x数组
    plot(x,k,‘g-‘);
else if y == 2
    figure;
    plot(r(:,1),r(:,2),‘r.‘);
    hold on;
    plot(mu(1,1),mu(1,2),‘bo‘);
else if y == 3
    figure;
    plot3(r(:,1),r(:,2),r(:,3),‘r.‘);
    hold on;
    plot3(mu(1,1),mu(1,2),mu(1,3),‘bo‘);
    end
end
end
title(‘使用方法一得出散点图与估算均值(蓝色圈圈)‘);
% 方法二进行参数估计,输出估计均值和协方差矩阵
function [mu,sigma] = ParameterEstimation2(r)

[x,y] = size(r);

% 套用公式前均值和协方差矩阵的初值
mu = zeros(1,y);
sigma = zeros(y,y);

for i = 1:x
mu(:,:,i+1) = mu(:,:,i)*(i-1)/i + r(i,:)/i;
sigma(:,:,i+1) = sigma(:,:,i)*(i-1)/i + (r(i,:) - mu(:,:,i+1))‘ * (r(i,:) - mu(:,:,i+1)) ./i;
end
disp([‘使用第二种方法估计的‘,num2str(y),‘维均值矢量为:‘]);
disp(mu(1,:,x+1));
disp([‘使用第二种方法估计的‘,num2str(y),‘维协方差矩阵为:‘]);
disp(sigma(:,:,x+1));

if y == 1
    k=-3:0.1:x;
    x=mu(1,1,x+1) + 0.*k; % 产生一个和y长度相同的x数组
    plot(x,k,‘g-‘);
else if y == 2
    figure;
    plot(r(:,1),r(:,2),‘r.‘);
    hold on;
    plot(mu(1,1,x+1),mu(1,2,x+1),‘bo‘);
else if y == 3
    figure;
    plot3(r(:,1),r(:,2),r(:,3),‘r.‘);
    hold on;
    plot3(mu(1,1,x+1),mu(1,2,x+1),mu(1,3,x+1),‘bo‘);
    end
end
end
title(‘使用方法二得出散点图与估算均值(蓝色圈圈)‘);
% 方法三进行参数估计,输出估计均值和协方差矩阵
% 输入不同维度的高斯概率密度模型,估计均值和协方差矩阵
% lamda为方法三中的调节参数,默认为0.01
function [mu,sigma] = ParameterEstimation3(r, lamda)

% lamda的缺省值为0.01
default_lamda = 0.01;
% 如果只输入r而没有设定lamda,则lamda选用默认值
if nargin == 1
    lamda = default_lamda;
end
[x,y] = size(r);

% 套用公式前均值和协方差矩阵的初值
mu = zeros(1,y);
sigma = zeros(y,y);

for i = 1:x
mu(:,:,i+1) = mu(:,:,i)*(1 - lamda) + r(i,:) * lamda;
sigma(:,:,i+1) = sigma(:,:,i)*(1 - lamda) + (r(i,:) - mu(:,:,i+1))‘ * (r(i,:) - mu(:,:,i+1)) .*lamda;
end
disp([‘使用第三种方法估计的‘,num2str(y),‘维均值矢量为:‘]);
disp(mu(1,:,x+1));
disp([‘使用第三种方法估计的‘,num2str(y),‘维协方差矩阵为:‘]);
disp(sigma(:,:,x+1));

if y == 1
    k=-3:0.1:x;
    x=mu(1,1,x+1) + 0.*k; % 产生一个和y长度相同的x数组
    plot(x,k,‘g-‘);
else if y == 2
    figure;
    plot(r(:,1),r(:,2),‘r.‘);
    hold on;
    plot(mu(1,1,x+1),mu(1,2,x+1),‘bo‘);
else if y == 3
    figure;
    plot3(r(:,1),r(:,2),r(:,3),‘r.‘);
    hold on;
    plot3(mu(1,1,x+1),mu(1,2,x+1),mu(1,3,x+1),‘bo‘);
    end
    end
end
title(‘使用方法三得出散点图与估算均值(蓝色圈圈)‘);
% 误差估计函数
function ErrorEstimate(mu, sigma, Est_mu, Est_sigma)

[x,y,z] = size(Est_mu);
if z == 1
    Emu = norm((Est_mu - mu),2);
    Esigma = norm((Est_sigma - sigma),2);
    fprintf([‘使用方法一估计的‘,num2str(y),‘维高斯分布的均值误差为:‘,num2str(Emu),‘\n‘]);
    fprintf([‘\n使用方法一估计的‘,num2str(y),‘维高斯分布的协方差误差为:‘,num2str(Esigma),‘\n\n‘]);
else
for i = 1:z-1
    Emu(i) = norm((Est_mu(:,:,i+1) - mu),2);
    Esigma(i) = norm((Est_sigma(:,:,i+1) - sigma),2);
end
x = 1:1:z-1;
figure;
subplot(1,2,1);
plot(x,Emu,‘r.-‘);
title(‘均值矢量估计误差曲线图‘);
grid on;
subplot(1,2,2),plot(x,Esigma,‘r.-‘);
title(‘协方差矩阵估计误差曲线图‘);
grid on;
end
时间: 2024-11-05 20:37:25

模式识别:最大似然估计与贝叶斯估计方法的相关文章

参数估计:最大似然估计、贝叶斯估计与最大后验估计

简介: 在概率统计中有两种主要的方法:参数统计和非参数统计(或者说参数估计和非参数估计). 其中,参数估计是概率统计的一种方法.主要在样本知道情况下,一般知道或假设样本服从某种概率分布,但不知到具体参数(或者知道具体模型,但不知道模型的参数). 参数估计就是通过多次试验,观察其结果,利用结果推出参数的大概值. (当你推出参数的极大可能值时,就相当于知道了分布及其参数情况,就可以利用它来推测其他样例出现的概率了. 这属于应用了) 参数估计的方法有多种,这里我们分析三种基于概率的方法,分别是最大似然

先验概率、最大似然估计、贝叶斯估计、最大后验概率

先验概率 先验概率(prior probability)是指根据以往经验和分析得到的概率,如全概率公式,它往往作为"由因求果"问题中的"因"出现的概率. 先验概率的分类 利用过去历史资料计算得到的先验概率,称为客观先验概率: 当历史资料无从取得或资料不完全时,凭人们的主观经验来判断而得到的先验概率,称为主观先验概率. 先验概率的条件 先验概率是通过古典概率模型加以定义的,故又称为古典概率.古典概率模型要求满足两个条件:(1)试验的所有可能结果是有限的;(2)每一种可

最大似然估计为什么要相乘和最小二乘法

回答1: 最大似然估计:现在已经拿到了很多个样本(你的数据集中所有因变量),这些样本值已经实现,最大似然估计就是去找到那个(组)参数估计值,使得前面已经实现的样本值发生概率最大.因为你手头上的样本已经实现了,其发生概率最大才符合逻辑.这时是求样本所有观测的联合概率最大化,是个连乘积,只要取对数,就变成了线性加总.此时通过对参数求导数,并令一阶导数为零,就可以通过解方程(组),得到最大似然估计值.最小二乘:找到一个(组)估计值,使得实际值与估计值的距离最小.本来用两者差的绝对值汇总并使之最小是最理

最大似然估计和最大后验概率MAP

最大似然估计是一种奇妙的东西,我觉得发明这种估计的人特别才华.如果是我,觉得很难凭空想到这样做. 极大似然估计和贝叶斯估计分别代表了频率派和贝叶斯派的观点.频率派认为,参数是客观存在的,只是未知而矣.因此,频率派最关心极大似然函数,只要参数求出来了,给定自变量X,Y也就固定了,极大似然估计如下所示: 相反的,贝叶斯派认为参数也是随机的,和一般随机变量没有本质区别,正是因为参数不能固定,当给定一个输入x后,我们不能用一个确定的y表示输出结果,必须用一个概率的方式表达出来,所以贝叶斯学派的预测值是一

最大似然估计总结

from http://blog.csdn.net/yanqingan/article/details/6125812 最大似然估计学习总结------MadTurtle   1. 作用 在已知试验结果(即是样本)的情况下,用来估计满足这些样本分布的参数,把可能性最大的那个参数作为真实的参数估计. 2. 离散型 设为离散型随机变量,为多维参数向量,如果随机变量相互独立且概率计算式为P{,则可得概率函数为P{}=,在固定时,上式表示的概率:当已知的时候,它又变成的函数,可以把它记为,称此函数为似然

最大似然估计的复习(转)

转自:http://blog.csdn.net/yanqingan/article/details/6125812 最大似然估计学习总结------MadTurtle   1. 作用 在已知试验结果(即是样本)的情况下,用来估计满足这些样本分布的参数,把可能性最大的那个参数作为真实的参数估计. 2. 离散型 设为离散型随机变量,为多维参数向量,如果随机变量相互独立且概率计算式为P{,则可得概率函数为P{}=,在固定时,上式表示的概率:当已知的时候,它又变成的函数,可以把它记为,称此函数为似然函数

最大似然估计(MLE)和最大后验概率(MAP)

最大似然估计: 最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”.简单而言,假设我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该分布的均值与方差未知.我们没有人力与物力去统计全国每个人的身高,但是可以通过采样,获取部分人的身高,然后通过最大似然估计来获取上述假设中的正态分布的均值与方差. 最大似然估计中采样需满足一个很重要的假设,就是所有的采样都是独立同分布的.下面我们具体描述一下最大似然估计: 首先,假设为独立同分布的采样,θ为模型参数,f为

最大似然估计与最大后验概率估计

本文转自http://blog.csdn.net/sunmenggmail/article/details/13004675 1. 最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”.简单而言,假设我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该分布的均值与方差未知.我们没有人力与物力去统计全国每个人的身高,但是可以通过采样,获取部分人的身高,然后通过最大似然估计来获取上述假设中的正态分布的均值与方差.最大似然就是寻找最可能的参数,使得这些采样样

转载-最大似然估计学习总结

下面是转载http://blog.csdn.net/yanqingan/article/details/6125812博客的内容 最大似然估计学习总结   1. 作用 在已知试验结果(即是样本)的情况下,用来估计满足这些样本分布的参数,把可能性最大的那个参数作为真实的参数估计. 2. 离散型 设为离散型随机变量,为多维参数向量,如果随机变量相互独立且概率计算式为P{,则可得概率函数为P{}=,在固定时,上式表示的概率:当已知的时候,它又变成的函数,可以把它记为,称此函数为似然函数.似然函数值的大