2013-05-21 22 views
0

謝謝你檢查這個問題了。 我想了解如何使用多元高斯分類器。多元高斯分類器實現。麻煩理解,從天真高斯

爲了更好地向您介紹我的問題,我將介紹當前如何對數據進行分類。

我有這些對象的庫:

public class AccFeat { 
    int id; 

    Double[] mean = new Double[3]; 
    Double[] sd = new Double[3]; 
    Double[] avPeakDistance = new Double[3]; 
    int[][] histogram = new int[3][10]; 
    int[][] fftHistogram = new int[3][10]; 
    int[] crossingCount = new int[3]; 
    double resultantAcc; 
    int type; 

然後我得到一個對象,具有類型領域表明它不被識別。

步驟:

  1. 負載的每類30個的訓練樣本的庫。

  2. 計算每個樣本類的每個特徵的均值和方差,將這些值存儲在數組中,每個類有73個平均值/方差對。 (因爲總共有73個特徵,包括6個直方圖每個10個分檔(60個數字))

  3. 創建一個73值的數組,對應於要識別的AccFeat對象的特徵。

  4. 使用我所瞭解的計算概率是樸素貝葉斯分類器

我們檢查我是從0到8,因爲有9個樣本類。

for (int i = 0; i < 9; i++) { 
      result = 1; 
      for (int j = 0; j < SAMPLEFEATURES.get(i).size(); j++) { 
       result = result * p(QUERYFEATURES.get(j), SAMPLEFEATURES.get(i).get(j)); 
//this is the p function, first argument is value of feature, 
//second argument is mean-variance pair for this feature in this particular i class. 

      } 
      results[i] = result; 
     } 
    } 

P(x)的功能很簡單:

  1. http://i.stack.imgur.com/1iws5.jpg

然後,我有9個概率值,爲每個類,我的分類會說,這是類對應於最高的概率值。


現在我想創建一個多元高斯分類器。

這是用於在這種情況下,計算概率公式:

  1. http://i.stack.imgur.com/JNiwT.jpg

  2. 所以我創建的每個9類的方差 - 協方差矩陣。在這裏我不知道如果我這樣做是正確的,我採取所有73種功能,這又包括每10個箱6個直方圖,所以這些功能60加速頻率的直方圖和加速度值

這個我覺得有點狡猾,我應該把所有這些值放在一個矩陣中嗎?計算x軸範圍10-20的加速度頻率與y加速度的峯值距離之間的協方差似乎有點奇怪。

但是我做,爲每個類創建使用此公式對於每個小區一個73x73矩陣:((featureA [I]

冠狀病毒(設有一個,特徵B)=總和 - mean_featureA)*(featureB [Ⅰ] - mean_featureB))/ N-1

  1. 我需要接下來的事情是一個平均矢量,所以我創建的每個特徵的裝置,用於與每個類相關聯的每個組smaples的73元素矢量,共有9個向量。

  2. 從我明白,在我的程序的情況下,式中的x是未識別AccFeat對象的特徵值的73元素向量。

  3. 所以我實現了這個公式,心想:我一直在使用的協方差矩陣來運行它,意味着每個類,並具有最高的結果是最有可能的候選者鑑定中

問題:

  • 協方差矩陣是滿負值,只有約5%的人是積極的,當他們他們通常是非常大的。

  • 行列式該矩陣的是在一些情況下非常接近0,或負的,這打破了式。

我使用分類器的方式有什麼問題?不幸的是,我沒有人幫助我, 與此,我的基礎上,我所有的在線講座幻燈片的弱點理解....

任何人都可以幫助我如何使用它?

回答

0

我還沒有徹底檢查你在做什麼是有效的,但我可以幫你用你得到的錯誤。您沒有足夠的數據點來估計協方差矩陣,所以最大似然估計是單數的。

一種選擇是移動到Linear Discriminant Analysis一個變種,在您使用一個共用的協方差矩陣在所有類。如果你有足夠的數據彙集到所有類中,這可能會得到一個非奇異的協方差矩陣。另一種選擇是樸素貝葉斯,這是你有什麼,你有一個對角線協方差矩陣。

否則,你是否有任何理由使用MVN分類器?你可以使用其他的東西,例如一個SVM,內核用來比較直方圖。

+0

我已經和我的主管討論過這個問題了,是的,他提出了和你一樣的問題。我試圖實現MVN,因爲這是他的建議,我也會看看SVN。我絕對沒有ML的背景,只有高中的統計數據,所以這對我來說非常具有挑戰性。 – LucasSeveryn