LDA主題模型困惑度計算


    對於LDA模型,最常用的兩個評價方法困惑度(Perplexity)、相似度(Corre)。

    其中困惑度可以理解為對於一篇文章d,所訓練出來的模型對文檔d屬於哪個主題有多不確定,這個不確定成都就是困惑度。困惑度越低,說明聚類的效果越好。

   計算公式     分母是測試集中所有單詞之和,即測試集的總長度,不用排重。其中p(w)指的是測試集中每個單詞出現的概率,計算公式如下。p(z|d)表示的是一個文檔中每個主題出現的概率,就是程序中的.theta文件,p(w|z)表示的是詞典中的每一個單詞在某個主題下出現的概率,就是程序中的.phi文件。

 1 public void getRe(double[][] phi, double[][] theta){
 2         double count = 0;
 3         int i = 0;
 4         Iterator iterator = userWords.entrySet().iterator();
 5         while(iterator.hasNext()){
 6             Map.Entry entry = (Map.Entry) iterator.next();
 7             ArrayList<String> list = (ArrayList<String>) entry.getValue();
 8             double mul = 0;
 9             for(int j = 0; j < list.size(); j++){
10                 double sum = 0;
11                 String word = list.get(j);
12                 int index = wordMap.get(word);
13                 for (int k = 0; k < K; k++){
14                     sum = sum + phi[k][index] * theta[i][k];
15                 }
16                 mul = mul + Math.log(sum);
17             }
18             count = count + mul;
19             i++;
20         }
21         count = 0 - count;
22         P = Math.exp(count / N);
23         System.out.println("Perplexity:" + P);

對於不同Topic所訓練出來的模型,計算它的困惑度。最小困惑度所對應的Topic就是最優的主題數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM