使用经过训练的 K-Means 模型为未见数据预测正确的集群

Posted

技术标签:

【中文标题】使用经过训练的 K-Means 模型为未见数据预测正确的集群【英文标题】:Predicting correct cluster for unseen data using a trained K-Means model 【发布时间】:2019-06-27 20:41:46 【问题描述】:

我知道 K-Means 是一个懒惰的学习者,必须用新的点从头开始重新训练,但仍然想知道是否有任何解决方法可以使用经过训练的模型来预测新的看不见的数据。

我正在使用 K-Means 算法对医学语料库进行聚类。我正在创建一个术语文档矩阵来表示这个语料库。在将数据提供给 kmeans 算法之前,我对数据执行截断奇异值分解以进行降维。我一直在考虑是否有一种方法可以在不重新训练整个模型的情况下对一个新的看不见的文档进行聚类。

要获得新文档的向量表示并使用训练模型预测其集群,我需要确保它具有与训练模型相同的词汇表,并且在术语-文档矩阵中保持相同的顺序。考虑到这些文档具有类似的词汇表,可以这样做。但是,如何获得此文档的 SVD 表示?现在这是我的理解有点不稳定的地方,如果我错了,请纠正我,但要对这个向量表示执行 SVD,我需要将它附加到原始术语文档矩阵。现在,如果我将这个新文档附加到原始术语文档矩阵并对其执行 SVD 以获得具有有限特征(在本例中为 100)的向量表示,那么我不确定事情会如何变化? SVD 选择的新特征在语义上是否与原始特征相对应?也就是说,如果相应的特征掌握不同的概念,那么测量新文档与集群质心(具有 100 个特征)的距离是没有意义的。

有没有办法将经过训练的 kmeans 模型用于新的文本数据?或者任何其他更适合此任务的聚类方法?

【问题讨论】:

【参考方案1】:

您的问题不是 k-means,一个简单的最近邻分类器使用该均值作为数据将起作用。

您的问题是 SVD,它不稳定。添加新数据会给您带来完全不同的结果。

【讨论】:

我正在尝试进行无监督学习,所以我猜最近邻方法行不通。如果我弄错了,请纠正我。另外,如果 SVD 不稳定,您能否提出一个在稳定的同时提供同样好的结果的替代方案? 最近的邻居用 means 工作得很好,仔细考虑一下!标签来自 k-means,它们是“无监督的”。至于 SVD,我相信有办法近似新数据点的位置。现有的分解。但是您可能必须自己实现这一点。但 LDA 可能更容易。 你能解释一下如何近似新数据点的位置吗?现有的分解。任何相关的论文/博客/帖子将不胜感激。 我相信我已经看到了,但我不知道在哪里,对不起。

以上是关于使用经过训练的 K-Means 模型为未见数据预测正确的集群的主要内容,如果未能解决你的问题,请参考以下文章

测试经过训练的 LSTM 模型后如何预测实际的未来值?

在 scikit-learn k-means 集群中预测文档时出现 ValueError

将经过训练的 HDF5 模型加载到 Rust 中以进行预测

使用经过训练的模型进行预测

Python训练Kmeans算法预测图像的主色

运行经过训练的机器学习模型时出错