如何微调k-means聚类中的聚类数量,并使用BigQuery ML以增量方式构建模型

使用BigQuery ML的K-means聚类模型来检测异常情况。

数据集信息

date Datetrade_id INTtrade_name STRINGagent_id INTagent_name Stringtotal_item INT

映射 – 一个交易根据日期对应多个代理。
模型通过sum(total_iteam)使用以下信息进行训练

trade_id trade_nameagent_idagent_name 
聚类数量: 4

需要根据日期为每个交易和代理查找异常。模型使用给定的数据集进行训练,并计算distance_from_closest_centroid。对于每个交易和代理,根据日期计算距离,最远的距离被视为异常。使用这些信息

问题1. 如何确定模型需要使用的聚类数量(例如:使用肘部方法选择最小的聚类数量)。

问题2. 当交易数据每天增加时,如何构建模型?是否可以每天以增量方式构建模型?


回答:

由于问题已更新,我将总结我们的讨论作为答案,以进一步为社区做出贡献。

  1. 关于你的第一个问题 “如何确定模型需要使用的聚类数量(例如:使用肘部方法选择最小的聚类数量)。”

根据文档,如果你省略num_clusters选项,BigQuery ML将根据训练数据的总行数选择一个合理的默认值。然而,如果你想选择最优的数量,你可以进行超参数调优,这是为学习算法选择一个(或一组)最优超参数的过程,在你的案例中是BigQuery ML中的K-means。为了确定理想的聚类数量,你需要为不同的num_clusters值运行CREATE MODEL查询。然后,找到错误测量值并选择其最小值的点。你可以在训练标签的评估中选择错误测量值,它将显示戴维斯-波尔丁指数均方距离

  1. 你的第二个问题是 “当交易数据每天增加时,如何构建模型?是否可以每天以增量方式构建模型?”

K-means是一种无监督学习算法。因此,你将使用当前数据训练模型。然后将其存储在一个数据集中。这个模型已经训练好,并且可以使用新数据,使用ML.PREDICT。因此,它将使用模型预测新数据属于哪个聚类。

作为额外信息,我想分享这个链接,它解释了如何使用BigQuery ML中的K-means来检测数据异常。

更新:

关于你关于重新训练模型的问题:

问题: “我想重建模型,因为需要在现有模型中更新新的交易信息。在这种情况下,是否可以仅用两个月的数据追加到模型中,还是需要重建整个模型?”

回答: 如果有新的相关数据到达,你必须重新训练整个模型。没有可能仅用两个月的新数据追加到模型中的选项。不过,我必须提到,你可以并且应该使用warm_start来重新训练你已有的模型,在这里

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注