结构主题模型(STM)如何通过searchK结果确定最优主题数
STM主题数搜索指标含义与最优K判定方法
searchK输出指标详解
- exclus(排他性):衡量主题之间的区分度,数值越高说明每个主题的专属高频词和其他主题重叠越少,主题区分度越好。你给出的结果里K越大该值越高,说明主题数量越多区分度越好。
- semcoh(语义一致性):衡量同一个主题下高频词的语义关联程度,数值越高(越接近0,当前结果为负数)说明主题的可解释性越强,同一个主题内的词逻辑关联度更高。注意该指标不是越高越好,过高可能是模型过度拟合了高频共现词,主题反而失去实际意义。你给出的结果里K从7升到10时该值持续下降,说明主题数量增加后,单个主题内部的词关联性变弱。
- heldout(留存似然):将数据集拆分后,用训练集拟合的模型预测留存测试集的似然值,数值越高(越接近0)说明模型的泛化能力越好。你给出的结果里K从7到10该值持续升高,说明模型泛化能力随K增大而提升。
- residual(残差):衡量模型对原始文档词共现关系的解释程度,数值越低说明模型解释的方差越多,拟合效果越好。你给出的结果里K越大残差越低,拟合程度越高。
- bound / lbound:分别是模型对数似然的上下界,数值越高(越接近0)说明模型拟合效果越好,你给出的结果里K增大时两个值都持续上升,符合拟合程度提升的规律。
- em.its(EM迭代次数):模型拟合到收敛所需的EM算法迭代次数,只要模型最终收敛,该值不需要作为K的判定依据。你给出的结果里K=10时迭代次数突然升高,说明K=10的模型收敛难度更大,但只要结果收敛就不影响使用。
plot(kResult)输出图表说明
默认输出4个分图,分别对应核心指标随K变化的趋势:
- 左上角:留存似然(heldout)随K变化的折线图
- 右上角:语义一致性(semcoh)随K变化的折线图
- 左下角:排他性(exclus)随K变化的折线图
- 右下角:残差(residual)随K变化的折线图
最优主题数判定方法
没有绝对的最优解,需要在拟合效果、泛化能力、可解释性之间做平衡,推荐判断逻辑:
- 首先排除泛化能力拐点之前的K:你给出的结果里留存似然持续上升,没有出现拐点(如果K增大到某个值后留存似然下降,说明出现过拟合,超过该值的K都可以排除)
- 平衡语义一致性和排他性:不要追求单一指标最高,找两个指标都相对不错的平衡点。你给出的结果里K=9时,排他性已经接近K=10的水平,但语义一致性比K=10高很多,可解释性更好。
- 辅助参考残差:你给出的结果里K从9升到10时残差下降幅度已经很小,说明K=10相比K=9对模型拟合效果的提升非常有限。
- 最后人工校验:把候选K的模型输出的主题高频词拉出来核验,优先选择每个主题含义清晰、没有明显重复主题的K。
结合你给出的结果,优先推荐K=9作为最优主题数,如果业务场景需要更细的主题拆分,再考虑K=10。
内容的提问来源于stack exchange,提问作者tomat
相关产品推荐
相关产品推荐

