machine-learning - 如何微调 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.每天添加交易数据时如何建立模型。可以建立每天构建模型的增量方式。
解决方案
随着问题的更新,我将总结我们的讨论作为进一步为社区做出贡献的答案。
- 关于您的第一个问题 “如何找到模型需要使用的簇数(例如:用于选择最小簇数选择的肘部方法)。” .
根据文档,如果您省略该num_clusters
选项,BigQuery ML 将根据训练数据中的总行数选择一个合理的默认值。但是,如果您想选择最佳数字,您可以执行超参数调整,这是为学习算法选择一个(或一组)最佳超参数的过程,在您的情况下是 BigQuery ML 中的 K-means。为了确定理想的集群数量,您可以CREATE MODEL
对不同的值运行查询num_clusters
。然后,找到误差度量并选择它处于最小值的点。您可以在训练选项卡评估中选择误差度量,它将显示Davies-Bouldin 指数和均方距离.
- 您的第二个问题是“如何在每天添加交易数据的情况下构建模型。可以构建每天构建模型的增量方式。”
K-means 是一种无监督学习算法。因此,您将使用当前数据训练您的模型。然后将其存储在数据集中。该模型已经过训练,当然可以使用ML.PREDICT与新数据一起使用。因此它将使用模型来预测新数据属于哪些集群。
作为奖励信息,我想分享此文档的链接,该链接解释了如何使用 BigQuery ML 中的 K-means 来检测数据异常。
更新:
关于您关于重新训练模型的问题:
问题:“我想重建模型,因为必须在我现有的模型中更新新的贸易信息。在这种情况下,是否可以仅在模型中附加两个月的数据,或者我们是否需要重建整个模型?”
答:如果有新的相关数据到来,您将不得不重新训练整个模型。不可能只用两个月的新数据附加模型。虽然,我必须提到你可以并且应该使用warm_start
重新训练你已经存在的模型,在这里。
推荐阅读
- c# - 关联失败
- c# - 使用asp.net mv在ado.net中选择带有where子句的查询
- facebook - 如何让 Unity FB.AppRequest 到达他们的接收者?
- java - 运行Kafka生产者时没有错误或输出记录
- r - 创建列表时对数据集进行排序并保持顺序
- javascript - Flask Stripe 集成 - JSON 对象必须是 str 而不是字节
- azure - Azure 的 QueueClient.ReceiveMessagesAsync 在没有消息时返回
- mvvm - SwiftUI 使用高频数据更新 UI
- ros - 点云不更新
- jenkins-pipeline - 如何使用 SSO 身份验证部署到 Anypoint Runtime Manager?