如何重新训练现有的 K-Means 聚类模型
How do I re-train an existing K-Means clustering model
我使用 Sci-Kit Learn 构建了一个 k-means 聚类模型。我需要每天使用新数据重新训练现有模型。
我寻找任何可用于重新训练现有模型的技术,但找不到任何直接的方法。
因为我每天都在获取大量数据集,所以我无法从头开始重新训练模型,因为长时间 运行 不切实际。因此,我需要一种可用于使用新数据重新训练现有模型的方法。
并不是每个 scikit 算法都提供部分训练,这个不允许你重新训练它。
也许有一种解决方法适合您:
您可以使用fit
方法,只将新点应用于现有集群。由于您的数据集很大,一开始这可能是有意义的,因为每次添加新数据时,集群质量都会下降的风险肯定存在。
另一种选择是为 k-means 编写一个手动函数,它检查新点并仅过滤附近的点以进行调整或使用小批量算法:https://scikit-learn.org/stable/modules/generated/sklearn.cluster.MiniBatchKMeans.html.
你想看看 在线学习 技术。许多 scikit-learn
算法可以选择对数据进行 partial_fit
,这意味着您可以对小批量数据进行增量训练。
在您的情况下,您可以使用 sklearn.cluster.MiniBatchKMeans
,它是通过抽取一小部分样本(批次)来训练的,以在每次迭代中更新模型的参数,从而使其成为在线的自然候选者学习问题。但是模型还是要通过partial_fit
的方式训练的,否则会重新训练整个模型。
我使用 Sci-Kit Learn 构建了一个 k-means 聚类模型。我需要每天使用新数据重新训练现有模型。
我寻找任何可用于重新训练现有模型的技术,但找不到任何直接的方法。
因为我每天都在获取大量数据集,所以我无法从头开始重新训练模型,因为长时间 运行 不切实际。因此,我需要一种可用于使用新数据重新训练现有模型的方法。
并不是每个 scikit 算法都提供部分训练,这个不允许你重新训练它。
也许有一种解决方法适合您:
您可以使用fit
方法,只将新点应用于现有集群。由于您的数据集很大,一开始这可能是有意义的,因为每次添加新数据时,集群质量都会下降的风险肯定存在。
另一种选择是为 k-means 编写一个手动函数,它检查新点并仅过滤附近的点以进行调整或使用小批量算法:https://scikit-learn.org/stable/modules/generated/sklearn.cluster.MiniBatchKMeans.html.
你想看看 在线学习 技术。许多 scikit-learn
算法可以选择对数据进行 partial_fit
,这意味着您可以对小批量数据进行增量训练。
在您的情况下,您可以使用 sklearn.cluster.MiniBatchKMeans
,它是通过抽取一小部分样本(批次)来训练的,以在每次迭代中更新模型的参数,从而使其成为在线的自然候选者学习问题。但是模型还是要通过partial_fit
的方式训练的,否则会重新训练整个模型。