模式识别,最大似然,朴素贝叶斯分类器

时间:2012-12-26 15:21:57

标签: matlab pattern-recognition

我有两个由行组成的类(“class1.dat”和“class2.dat”),每行是一个包含20个特征(20个值)的向量。

我取10,用渔夫比率排列并保持最佳5个结果,然后用最大似然估计每个正态分布的值(假设它们是正态分布的)并用朴素贝叶斯分类器计算误差。 / p>

这是我的代码:

% i take 10 random characteristics

    C1= class_1(:,1:10)
    C2= class_2(:,1:10)                  
% FDR matrix initialize

    FDR=zeros(1,10);                   
%Calculate fisher ratio
%[t]=Fisher(x,y) where t:fisher ratio,x:data vector of first class,y: ...of second class

    for i=1:10
    FDR(i)=Fisher(C1(i,:),C2(i,:));                
    end 
%i find that the highest fisher ratio are 1,3,4,5,7 so i save them in a new matrix X

    X1=[C1(:,1),C1(:,3),C1(:,4),C1(:,5),C1(:,7)];
    X2=[C2(:,1),C2(:,3),C2(:,4),C2(:,5),C2(:,7)];
    X=[X1;X2];
%Calculate the Gaussian ml estimate
%[m,S]=Gaussian_ML_estimate(X) where X:LxN matrix m:L dimensional estimate of mean and %S:LxL dimensional estimate of convariance

    [C1mean_mle, C1cov_mle]=Gaussian_ML_estimate(C1');                   
    [C2mean_mle, C2cov_mle]=Gaussian_ML_estimate(C2');             
%I put together the estimates to use them in the last function, the naive bayes

    Cmean_mle(:,1)=C1mean_mle;
    Cmean_mle(:,2)=C2mean_mle;
    Ccov_mle(:,:,1)=C1cov_mle;
    Ccov_mle(:,:,2)=C2cov_mle;

我对接下来要做的事感到不安。我有一个功能:

[z] = bayes_classifier(m,S,P,X)

输入参数:    m:lxc矩阵,其第j列是第j类的平均值    S:lxlxc矩阵,其中S(:,:,j)对应于            第j个正态分布的协方差矩阵           类。
   P:c维向量,其第j个分量是先验的            第j节的概率。
   X:lxN矩阵,其列是要成为的数据向量            分类。

输出参数:
z:N维向量,其第i个元素是标签            第i个数据向量被分类的类。

和这个功能:

[clas_error] = compute_error(y,t_est)

根据数据集计算分类器的错误。

输入论据:
 y:包含N的类标签的N维向量            数据集的向量。
t_est:包含类标签的N维向量            其中X的每个向量都被分配了            分类规则 输出
clas_error:分类错误。

我知道这是一篇很长的帖子,所以感谢阅读那些阅读的人:)

1 个答案:

答案 0 :(得分:0)

我对天真的贝叶斯很熟悉,从你写的东西我得到的感觉我可以回答你的问题。我只是不完全确定它是什么。你能详细说明一下吗?

我要注意的一件事是,我认为有点不寻常的是你在谈论协方差。幼稚贝叶斯的整个假设是,鉴于阶级,这些特征是条件独立的。如果你使用协方差,那么每个州确实都有从n维高斯(而不是n,独立的,1维高斯)中提取的数据。那时,它不是真正天真的贝叶斯,而是高斯混合模型。也是一个非常好的模型。这种方式更具表现力,因此当您拥有更大量的数据时它更适合(它很容易过度拟合较小的数据集)。

此外,使用Fischer信息标准来消除不太相关的数据是有趣的。除了减轻以后的计算负担,我不确定我是否看到了优势。当你继续使用朴素的贝叶斯时,可以在以后提取哪些元素在决定标签时更为重要。