gpt4 book ai didi

scala - LDA 交叉验证评估器

转载 作者:行者123 更新时间:2023-12-01 09:39:00 27 4
gpt4 key购买 nike

我希望将交叉验证应用于 LDA 算法以确定主题的数量(K)。
我的疑问是关于评估者,因为我希望使用对数似然。创建交叉验证时,我在 .setEvaluator(????) 上设置了什么?

// Define a simple LDA
val lda = new LDA()
.setMaxIter(10)
.setFeaturesCol("features")

// We use a ParamGridBuilder to construct a grid of parameters to search over.
val range = 1 to 20
val paramGrid = new ParamGridBuilder()
.addGrid(lda.k, range.toArray )
.build()

// Create a CrossValidator
val cv = new CrossValidator()
.setEstimator(lda)
.setEvaluator(????)
.setEstimatorParamMaps(paramGrid)
.setNumFolds(5)

最佳答案

当您有效地进行无监督学习时,交叉验证并不容易应用。除非您已标记训练数据,否则 CrossValidator 提供的接口(interface)不太可能是合适的。您正在尝试不同的 k 值(LDA 生成的主题数量)这一事实表明您可能没有这种带标签的训练数据。

如果您要尝试重新利用 CrossValidator ,我觉得没有合适的Evaluators可用(至少从 Spark-2.2 开始)。如果您正在探索模型的不同维度(例如改变主题的数量,k),那么数据的对数似然在具有不同维度的模型之间进行比较并非易事。例如,随着您增加类的数量,您预计数据的可能性会增加,但存在过度拟合的风险。一种标准方法是使用类似 Akaike Information criterion 的方法。惩罚更复杂的模型(例如更大的 k)。同样,我认为 CrossValidator 目前不支持这一点。

关于scala - LDA 交叉验证评估器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44130622/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com