首页 > 解决方案 > BigQuery ML - 一次迭代后线性回归器训练停止

问题描述

我正在 BigQuery 中训练线性回归器。我正在用大约 20000 行数据和一个目标输出列训练它,其中的值在{0, 1}. 我将EARLY_STOP选项设置为False. 我已将MAX_ITERATIONS选项设置为10. 我的训练总是在 1 次迭代时停止,MAE 约为 0.2。这是创建模型查询:

CREATE OR REPLACE MODEL `sketching.linear_regressor_08-13--11-59-03.811249`
OPTIONS (model_type=@model_type, 
input_label_cols=@input_label_cols, 
max_iterations=@max_iterations, 
data_split_method=@data_split_method, 
early_stop=@early_stop) AS
SELECT * FROM `ds.training_table`

这些是查询中的参数(python 对象打印):

[ScalarQueryParameter('model_type', 'STRING', 'linear_reg'),
ArrayQueryParameter('input_label_cols', 'STRING', ['target_output']),
ScalarQueryParameter('max_iterations', 'INT64', 10),
ScalarQueryParameter('data_split_method', 'STRING', 'RANDOM'),
ScalarQueryParameter('early_stop', 'BOOL', False)]

PS:我已经检查bytes_processedQueryJob. 它签出(这意味着它实际上正在处理整个表。

更新

看起来 BQ 忽略了提供的大多数模型选项。这是我在 bigquery web api 上的模型状态的屏幕截图: 在此处输入图像描述

正如您在培训选项部分中看到的那样,它没有显示我提供的任何选项,并且实际上没有提供显示的选项。我更改了数据拆分方法选项,它确实影响了这里的更改。

更新 2

我提供了L1_REG( 0.1) 选项,它神奇地解决了这个问题。训练进行了 10 次迭代(max_iterations提供)。
如果我在没有任何可选选项(或仅选项)的情况下运行模型,它将在迭代early_stop时停止。1

标签: machine-learninggoogle-bigquery

解决方案


您的模型可能正在停止,因为正在直接计算最小二乘解。这是因为OPTIMIZE_STRATEGY='AUTO_STRATEGY'您的查询的默认设置不满足在直接最小二乘解决方案上选择批量梯度下降的要求。 [1]

如果您不希望发生这种情况,请设置OPTIMIZE_STRATEGY='BATCH_GRADIENT_DESCENT'

[1] https://cloud.google.com/bigquery-ml/docs/reference/standard-sql/bigqueryml-syntax-create-glm#optimize_strategy


推荐阅读