首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LDA交叉验证评估器

LDA交叉验证评估器
EN

Stack Overflow用户
提问于 2017-05-23 17:16:20
回答 1查看 328关注 0票数 3

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

代码语言:javascript
复制
// 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)
EN

回答 1

Stack Overflow用户

发布于 2018-02-10 03:54:25

当你有效地进行无监督学习时,交叉验证并不是直接适用的。除非您标记了训练数据,否则CrossValidator提供的接口不太可能是合适的。事实上,您正在尝试不同的k值,即LDA产生的主题数量,这表明您可能没有这种标记的训练数据。

如果您尝试重新调整CrossValidator的用途,我认为没有任何合适的Evaluators可用(至少在Spark-2.2版本中)。如果你正在探索模型的不同维度(例如改变主题的数量,k),那么在具有不同维度的模型之间进行比较时,数据的对数似然并不是微不足道的。例如,当您增加类的数量时,您预计数据的可能性会增加,但存在过度拟合的风险。一种标准的方法是使用像Akaike Information criterion这样的东西来惩罚具有更多复杂性(例如更大的k)的模型。再说一次,我认为CrossValidator目前不支持这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44130622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档