首页 > 解决方案 > 如何微调 k-means 聚类中的聚类数量以及使用 BigQuery ML 构建模型的增量方式

问题描述

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

数据集信息

date Date
trade_id INT
trade_name STRING
agent_id INT
agent_name String
total_item INT

映射 -一笔交易根据日期有多个代理。
使用以下信息训练的模型sum(total_iteam)

trade_id 
trade_name
agent_id
agent_name 
Number of cluster: 4

需要根据日期查找每个交易和代理的异常情况。使用给定的数据集训练模型并distance_from_closest_centroid进行计算。每个交易和代理都基于日期距离被调用。最右距离被视为异常。使用此信息

问题 1.如何找到模型需要使用的簇数(例如:用于选择最小簇数选择的肘部方法)。

问题 2.每天添加交易数据时如何建立模型。可以建立每天构建模型的增量方式。

标签: machine-learninggoogle-bigquery

解决方案


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

  1. 关于您的第一个问题 “如何找到模型需要使用的簇数(例如:用于选择最小簇数选择的肘部方法)。” .

根据文档,如果您省略该num_clusters选项,BigQuery ML 将根据训练数据中的总行数选择一个合理的默认值。但是,如果您想选择最佳数字,您可以执行超参数调整,这是为学习算法选择一个(或一组)最佳超参数的过程,在您的情况下是 BigQuery ML 中的 K-means。为了确定理想的集群数量,您可以CREATE MODEL对不同的值运行查询num_clusters。然后,找到误差度量并选择它处于最小值的点。您可以在训练选项卡评估中选择误差度量,它将显示Davies-Bouldin 指数均方距离.

  1. 您的第二个问题是“如何在每天添加交易数据的情况下构建模型。可以构建每天构建模型的增量方式。”

K-means 是一种无监督学习算法。因此,您将使用当前数据训练您的模型。然后将其存储在数据集中。该模型已经过训练,当然可以使用ML.PREDICT与新数据一起使用。因此它将使用模型来预测新数据属于哪些集群。

作为奖励信息,我想分享此文档的链接,该链接解释了如何使用 BigQuery ML 中的 K-means 来检测数据异常。

更新:

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

问题:“我想重建模型,因为必须在我现有的模型中更新新的贸易信息。在这种情况下,是否可以仅在模型中附加两个月的数据,或者我们是否需要重建整个模型?”

答:如果有新的相关数据到来,您将不得不重新训练整个模型。不可能只用两个月的新数据附加模型。虽然,我必须提到你可以并且应该使用warm_start重新训练你已经存在的模型,在这里


推荐阅读