-1

行で構成される 2 つのクラス ("class1.dat" と "class2.dat") が与えられ、各行は 20 個の特性 (20 個の値) のベクトルです。

10 を取り、それらをフィッシャー比で並べ替え、最良の 5 つの結果を保持します。次に、各正規分布の値を推定し (それらが正規分布していると仮定します)、最大の可能性を持ち、単純ベイズ分類器を使用して誤差を計算します。

これは私のコードです:

% 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: j 番目の列が j 番目のクラスの平均である lxc 行列。
S: lxlxc 行列、ここで S(:,:,j) は j 番目のクラスの正規分布の共分散行列に対応します。
P: j 番目のコンポーネントが j 番目のクラスの事前確率である c 次元ベクトル。
X: lxN 行列で、その列は分類されるデータ ベクトルです。

出力引数:
z: N 次元ベクトル。i 番目の要素は、i 番目のデータ ベクトルが分類されるクラスのラベルです。

そしてこの機能:

[clas_error] = compute_error(y,t_est)

データセットに基づいて分類子のエラーを計算します。

入力引数:
y: データセットの N 個のベクトルのクラス ラベルを含む N 次元ベクトル。
t_est: 分類規則に従って X の各ベクトルが割り当てられたクラスのラベルを含む N 次元ベクトル。
OUTPUT
clas_error: 分類エラー。

私はそれが長い投稿だったことを知っているので、読んでくれた人たちを読んでくれてありがとう:)

4

1 に答える 1

0

私は素朴なベイズに精通しており、あなたが書いていることから、おそらくあなたの質問に答えることができると思います. 私はそれが何であるか完全にはわかりません。詳しく教えていただけますか?

私が注意することの1つは、あなたが共分散について話しているということです。単純なベイズの全体的な仮定は、クラスが与えられると特性が条件付きで独立しているということです。共分散を使用している場合、各状態には実際には n 次元のガウス (n の独立した 1 次元のガウスではなく) から抽出されたデータがあります。その時点で、それは実際にはナイーブ ベイズではなく、ガウス混合モデルです。また、非常に優れたモデルです。それははるかに表現力が高いため、はるかに大量のデータがある場合により適しています(小さなデータセットをオーバーフィットする傾向が非常に高くなります)。

また、フィッシャー情報量基準を使用して、関連性の低いデータを除外することも興味深いものです。後の計算負荷を軽減することは別として、私には利点があるかどうかわかりません。先に進んでナイーブベイズをあてはめると、ラベルを決定する上でどの要素がより重要であるかを後で抽出することができます。

于 2012-12-28T00:17:48.507 に答える