我使用以下对数似然公式来比较文档与聚类之间的相似性:log p(d|c) = sum (c(w,d) * log p(w|c));其中c(w,d)是文档中某个词的频率,p(w|c)是词w由聚类c生成的似然概率。
问题在于,基于这种相似性,文档经常被分配到错误的聚类中。如果我将文档分配到log p(d|c)最高的聚类中(由于通常是负值,我取–log p(d|c)),那么它将是包含文档中许多词的聚类,但这些词在聚类中的概率很低。如果我将文档分配到log p(d|c)最低的聚类中,那么它将是与文档仅在一个词上有交集的聚类。能有人解释一下如何正确使用对数似然吗?我尝试在Java中实现这个函数。我已经在谷歌学术上查找过,但没有找到关于文本挖掘中对数似然的合适解释。提前感谢
回答:
您的对数似然公式对于用多项式模型描述文档是正确的(每个文档中的词是独立地从多项式分布中生成的)。
为了获得最大似然的聚类分配,您应该选择使log p(d|c)最大化的聚类分配c。log p(d|c)应该是一个负数——最大值是最接近零的数。
如果您得到的聚类分配不合理,很可能是由于多项式模型不能很好地描述您的数据。因此,您问题的答案很可能是您应该选择不同的统计模型或使用不同的聚类方法。