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就是最优的主题数。

 

转载自https://www.cnblogs.com/bydream/p/6844499.html

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值