machine-learning - 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_processed
了QueryJob
. 它签出(这意味着它实际上正在处理整个表。
更新
看起来 BQ 忽略了提供的大多数模型选项。这是我在 bigquery web api 上的模型状态的屏幕截图:
正如您在培训选项部分中看到的那样,它没有显示我提供的任何选项,并且实际上没有提供显示的选项。我更改了数据拆分方法选项,它确实影响了这里的更改。
更新 2
我提供了L1_REG
( 0.1
) 选项,它神奇地解决了这个问题。训练进行了 10 次迭代(max_iterations
提供)。
如果我在没有任何可选选项(或仅选项)的情况下运行模型,它将在迭代early_stop
时停止。1
解决方案
您的模型可能正在停止,因为正在直接计算最小二乘解。这是因为OPTIMIZE_STRATEGY='AUTO_STRATEGY'
您的查询的默认设置不满足在直接最小二乘解决方案上选择批量梯度下降的要求。 [1]
如果您不希望发生这种情况,请设置OPTIMIZE_STRATEGY='BATCH_GRADIENT_DESCENT'
推荐阅读
- go - 没有互斥锁的 Go 协程
- python - 将 pandas 数据帧写入 S3 存储桶(AWS)
- scala - 从 hadoop/hdfs 中检索 savedAt 时间戳
- reactjs - React, Enzyme:测试状态更新功能组件
- unity3d - 统一保存解锁角色
- html - 更改导航栏中部分元素的颜色
- css - 悬停时滚动图像 - 不同图像高度的相同速度
- laravel - Laravel 5.8 + 电子邮件中的深层链接
- sql-server - 在 Azure Data Studio 上创建 SQL Server 时出错
- python - SQLAlchemy ORM conversion to Pandas DataFrame with Bigquery