模式识别之极大似然估计

引入

如果已知先验概率 p(wi) p ( w i ) 和类条件概率密度 p(x|wi) p ( x | w i ) ,则可以构造一个贝叶斯分类器
p(wi|x)=p(x|wi)p(wi)i=1Kp(x|wi)p(wi) p ( w i | x ) = p ( x | w i ) p ( w i ) ∑ i = 1 K p ( x | w i ) p ( w i )

但是,在大多数实际问题中,生成数据的类条件概率密度分布(一般会假设为高斯分布等)的参数通常是未知的,因此,就需要有一些手段从样本数据中推断出这些参数。

这就产生了参数估计这一任务,即使用样本数据(训练数据)来估计未知的概率分布的参数。

参数估计方法分类

有监督的参数估计

己知概率分布的具体形式以及样本数据所属的类别;

无监督的参数估计

己知概率分布的具体形式,但是不知道样本数据所属的类别;

非参数估计

不知道概率分布的具体形式,但是己知样本数据所属的类别。

在有监督参数估计方法中,常用的两种方法:

极大似然估计

假定待估计的参数为某个固定值,估计准则为估计的参数使得样本集合的似然函数取最大值;

贝叶斯估计

假定待估计的参数为随机变量,估计准则为估计的参数使得平均风险达到最小值。

本文主要针对极大似然估计进行讲解。

问题

原问题

对于模式识别(分类)而言,假设共有 C C 类且每一类的类条件概率密度分布都符合正态分布
p(x|wi)N(μi,i)
将带估计的参数矢量记为 θi θ i ,则
θi=(μii)T θ i = ( μ i , ∑ i ) T
为了强调类条件概率密度函数依赖于参数矢量,将其写为以下形式:
p(x|wi,θi) p ( x | w i , θ i )
假定属于某个类别的训练样本只对本类别的参数估计提供信息,这样就能分别独立地考虑每个类别的参数估计。

子问题

己知样本集合 D=x1,x2,...,xn D = x 1 , x 2 , . . . , x n ,其中每一个样本都是独立地根据已知形式的概率密度函数 p(x|θ) p ( x | θ ) 抽取得到的,要求使用这些样本,估计概率密度函数中的参数矢量 θ θ 的值。
由于假设样本间相互独立,故
p(D|θ)=k=1np(xk|θ) p ( D | θ ) = ∏ k = 1 n p ( x k | θ )
又由于样本集 D D 已知,故p(D|θ)是关于 θ θ 的函数,也称为样本集 D D 下的似然函数。

参数θ的极大似然估计是使 p(D|θ) p ( D | θ ) 达到最大的参数矢量 θ^ θ ^

极大似然

定义对数似然如下
L(θ)lnp(D|θ) L ( θ ) ≜ ln ⁡ p ( D | θ )
此时问题转变为求取使对数似然函数 L(θ) L ( θ ) 达到最大的参数矢量
θ^=argmaxθL(θ) θ ^ = arg ⁡ max θ L ( θ )

求解

θi=(θ1,θ2,...,θp)T θ i = ( θ 1 , θ 2 , . . . , θ p ) T 且梯度算子 θ ∇ θ
θ=[θ1,θ2,...,θp]T ∇ θ = [ ∂ ∂ θ 1 , ∂ ∂ θ 2 , . . . , ∂ ∂ θ p ] T
对于
L(θ)lnp(D|θ)=k=1nlnp(xk|θ) L ( θ ) ≜ ln ⁡ p ( D | θ ) = ∑ k = 1 n ln ⁡ p ( x k | θ )

θL=k=1nθlnp(xk|θ) ∇ θ L = ∑ k = 1 n ∇ θ ln ⁡ p ( x k | θ )
因此,求解极大似然估计值的必要条件为方程组:
θL=0 ∇ θ L = 0

示例

例1:假设训练样本符合多元正态分布,且协方差矩阵已知,需估计均值矢量。
极大似然估计目标
L(μ)lnp(D|μ)=lnk=1np(xk|μ)=k=1np(xk|μ) L ( μ ) ≜ ln ⁡ p ( D | μ ) = ln ⁡ ∏ k = 1 n p ( x k | μ ) = ∑ k = 1 n p ( x k | μ )
展开得:
L(μ)=k=1n(12ln[(2π)d||]12(xkμ)T1(xkμ)) L ( μ ) = ∑ k = 1 n ( − 1 2 ln ⁡ [ ( 2 π ) d | ∑ | ] − 1 2 ( x k − μ ) T ∑ − 1 ( x k − μ ) )
对目标函数求导等于0可得:
μL=k=1n1(xkμ)=0 ∇ μ L = ∑ k = 1 n ∑ − 1 ( x k − μ ) = 0
计算可得:
μ^=1nk=1nxk μ ^ = 1 n ∑ k = 1 n x k
对正态分布均值的极大似然估计就是对全体样本取平均。

例2:对于均值和方差均未知的情况,考虑单变量情况,设 θ=(θ1,θ2)T=(μ,σ2)T θ = ( θ 1 , θ 2 ) T = ( μ , σ 2 ) T

极大似然估计目标
L(θ)=k=1n(12ln(2πθ2)12θ2(xkθ1)2) L ( θ ) = ∑ k = 1 n ( − 1 2 ln ⁡ ( 2 π θ 2 ) − 1 2 θ 2 ( x k − θ 1 ) 2 )
对目标函数求导等于0可得:
θ2L=k=1n1θ2^(xkθ1)=0 ∇ θ 2 L = ∑ k = 1 n 1 θ 2 ^ ( x k − θ 1 ) = 0
θ1L=k=1n1θ2^+k=1n(xkθ1^)2θ2^2=0 ∇ θ 1 L = − ∑ k = 1 n 1 θ 2 ^ + ∑ k = 1 n ( x k − θ 1 ^ ) 2 θ 2 ^ 2 = 0
计算可得:
μ^=1nk=1nxk μ ^ = 1 n ∑ k = 1 n x k
σ^2=1nk=1n(xkμ^)2 σ ^ 2 = 1 n ∑ k = 1 n ( x k − μ ^ ) 2

扩展可得,当正态分布为多元是,极大似然估计的结果为:
μ^=1nk=1nxk μ ^ = 1 n ∑ k = 1 n x k
^=1nk=1n(xkμ^)(xkμ^)T ∑ ^ = 1 n ∑ k = 1 n ( x k − μ ^ ) ( x k − μ ^ ) T

实现

% 本示例用于最大似然估计的教学示例
% 描述:1)生成过程:根据给定参数的正态分布生成二维数据点样本
% ······2)估计过程:根据最大似然估计算法估计参数值


% 设置随机数种子,使程序可重复
rng(10);

% 生成过程
NDATA = 1000; % 数据点数目
MU = [1,2]'; % 分布均值
COV = [0.5,0;0,0.8]'; % 协方差:假设各维度相互独立
SIGMA = diag(COV); % 方差:假设各维度相互独立
DATA = zeros(2,NDATA);
for k = 1 : NDATA
    % 依次生成数据
    DATA(:,k) = normrnd(MU,SIGMA);
end
disp('均值:');
disp(MU);
% disp('协方差:');
% disp(COV);
disp('方差:');
disp(SIGMA);

scatter(DATA(1,:),DATA(2,:)); % 绘制样本点
box on;

% 估计过程
MU_EST = mean(DATA,2); % 计算均值
DATA_DIF = bsxfun(@minus,DATA,MU_EST);
COV_SQUARE = zeros(2,2,NDATA);
for k = 1 : NDATA
    % 计算每个样本的协方差
    COV_SQUARE(:,:,k) = DATA_DIF(:,k)*DATA_DIF(:,k)';
end
COV_SQUARE_EST = mean(COV_SQUARE,3);
SIGMA_SQUARE_EST = diag(COV_SQUARE_EST);
disp('估计均值:');
disp(MU_EST);
% disp('估计协方差:');
% disp(sqrt(COV_SQUARE_EST));
disp('估计方差:');
disp(sqrt(SIGMA_SQUARE_EST));

% 注:系统自带的参数估计,假设数据各维度相互独立
[mu,s] = normfit(DATA');

运行上面的代码,可显示数据如下图:
这里写图片描述
计算输出如下:

均值:
     1
     2

方差:
    0.5000
    0.8000

估计均值:
    1.0115
    1.9805

估计方差:
    0.5072
    0.7990
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值