您的位置:首页 > 其它

生成模型之高斯鉴别分析

2014-04-06 12:17 162 查看
线性回归中,我们假设Y满足以sita*X为均值的高斯分布。也就是假设P(Y|X)~N(sita*X,yita)。这种假设拟合P(Y|X)的方法我们称为判别法。

有这么一种方法,尝试去假设X的分布情况,也就是假设拟合P(X|Y)。这就是生成模型。

使用生成模型,得到拟合分布P(X|Y)之后,我们再使用bays规则,求得某个新样本属于某个标签的概率:



然后,取其中概率最大的类作为分类结果:




高斯鉴别分析

高斯分布是熟知的自然分布。我们用多变量的高斯分布,来假设样本特征满足这样的分布,生成高斯鉴别分析模型。

所谓的多变量高斯分布如下:



其中,sigma表示方差矩阵,u表示均值向量。也就是假设X满足分布:



简单的二维高斯标准模型如下,其中u=0,sigma=I;



现在考虑一个分类问题,x为输入特征,y为标签。我们假设x属于多变量高斯分布,y属于伯努利分布,那么有:



进而可以写成:



然后我们要写出其最大释然函数。值得注意的是,现在的释然函数是P(X,Y),而不是之前线性回归的P(Y|X)。



最大化释然函数,得到参数如下:



我们可以把分布图画出,如下:



上如中,两个高斯分布拟合x,从而得出一条直线来划分两类样本。


高斯鉴别模型与logistic回归的关系

高斯鉴别模型与logistic回归有着有趣的联系。如果我们用概率的知识,写出P(Y=1|X)的概率模型,会得到:



与logistic回归有着相同的形式。也就是说,高斯鉴别模型与logistic回归是对同一个模型的不同角度描述。

区别:

有这样的结论:如果P(X|Y)属于高斯分布,那么P(Y|X)会属于logistic分布;但反之不成立。

也就是说,高斯分布比logistic有更强的约束,是一种被包含的关系。

如果原分布就是高斯分布,那么高斯鉴别模型能更好地拟合数据;

而有许多其他的分布,最终也能得到logistic相同的形式,如泊松分布等等。也就是logistic回归对不正确的分布假设有更好的鲁棒性。如果原分布不是高斯,那么我们用logistic分布照样能很好地拟合数据。

结论:logistic回归有更广泛的适用性。


Matlab实现

上述许多图来自斯坦福的讲义,接下来用matlab实现:

以(8,4),(4,8)为中心,方差为1,构建两类正态分布的样本,如下:



Matlab得到样本分布的拟合参数:

clear;
clc;
X1(1,:)=random('norm',8,1,[1,100]);
X1(2,:)=random('norm',4,1,[1,100]);
Y1=zeros(1,100);
plot(X1(1,:),X1(2,:),'+');
hold on;
X2(1,:)=random('norm',4,1,[1,100]);
X2(2,:)=random('norm',8,1,[1,100]);
Y2=ones(1,100);
plot(X2(1,:),X2(2,:),'*');

u0=mean(X1,2);
u1=mean(X2,2);
for i=1:100
X1(:,i)=X1(:,i)-u0;
X2(:,i)=X2(:,i)-u1;
end
X=[X1,X2];
sigma=1/(200)*X*X';

a=sigma'*u1-sigma'*u0;
b=u1'*sigma'-u0'*sigma';
c=u1'*sigma'*u1-u0'*sigma'*u0;
A=a(1)+b(1);
B=a(2)+b(2);
C=c;
A
B
C
x=0:12;
y=-(A.*x-C)/B;
hold on;
plot(x,y);


结果:

拟合得到中心:(3.985,7.985),(4.006,8.081)

协方差矩阵为:

0.99 -0.04

-0.04 1.13

取P(X|Y=1)=P(X|Y=0)得到分界面:

Ax+By=C;

其中:

A = -5.7206

B = 7.4201

C = 9.9559

画出图,如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐