α和β两个参数对LDA计算结果影响挺大的,尤其在分析样本数量少且每条文档字数少的时候,实验发现这两个参数会严重影响结果的解读。当然,这种样本数量少且每条文档字数少的情形本来就应该避免,因为这样训练出来的LDA模型是不稳定的,很容易被个别词带偏。 下面我们将解释一下GooSeeker分词扩展模块是怎样设置这两个参数的。为了书写方便,我们用alpha和beta分别代替α和β。 1. alpha和beta的作用 alpha叫文档的主题分布参数。这是一个预先设定的参数,是天生的,所以叫先验参数,因为LDA是一个概率模型。这个参数影响到文档更分散地跨多个主题呢还是更集中地分布在少量几个主题上。 beta叫主题的关键词分布参数。也是一个预先设定的参数。这个参数影响到主题更分散地用更多关键词来表达呢还是更集中地用少量几个关键词来表达。 如下图,从GooSeeker的LDA分析界面上可以直观看到关键词的权重是否快速地下降。 2. Gensim智能设置超参数 Gensim的LDA模型API(gensim.models.ldamodel.LdaModel)页面清楚地说明了alpha和eta都可以设置成'auto',表示从语料智能学习得到合适的非对称的超参数。GooSeeker的LDA分析模块就采用了'auto'值,估计大家自己用python编程的时候也会用这个值。相比之下,sklearn的sklearn.decomposition.LatentDirichletAllocation 模型的两个参数的缺省值都是1/K(目标主题数),而且也只能设置成对称值。估计大家自己用python编程多数会采用这个值。结果就产生一个后果:大家觉得sklearn的LDA模型计算出来的结果不如gensim计算出来的好解读。同时,大家多数的使用场景是:小样本且短文本。这个场景逼近了LDA模型的能力边界,alpha和beta对结果影响很大。 GooSeeker的LDA分析模块为sklearn的LDA模型增加了自适应设置能力,根据样本量大小自动调整alpha和beta,以及其他几个参数。总的原则是:
3. 在GooSeeker界面上设置alpha和beta 【注意】如果在界面上选择 LDA-gs,这是gensim的LDA模型,尽量不要设置alpha和beta,实验证明,gensim的智能设置很有效。 alpha和beta两个名字是来自于LDA理论(其实在不同的论文中,叫法也不一样),无论sklearn还是gensim,可能都不是直接设置alpha和beta,而是通过内部的某种计算,将设置的参数对应到alpha和beta。所以,他们的名字也不一样。 gensim.models.ldamodel.LdaModel的两个参数叫做:
sklearn.decomposition.LatentDirichletAllocation的两个参数叫做:
除了名字不一样以外,取值范围也不一样。在GooSeeker的界面上,针对这两个参数显示的提示会随选择的模型不同而变化。 gensim.models.ldamodel.LdaModel的两个参数的取值:
sklearn.decomposition.LatentDirichletAllocation的两个参数取值:
|