BQ ML 线性回归模型中的交互回归变量
Interacting regressors in a BQ ML Linear Regression Model
我正在尝试弄清楚在使用 BigQuery ML 时如何让两个回归量进行交互。
在下面的示例中(为粗略的虚假数据道歉!),我尝试使用 trip_count
以及一年中的月份来预测 total_hire_duration
。 BQ 倾向于将 month
部分作为常量添加到线性回归方程中,但实际上我希望它随 trip_count
增长。对于我的真实数据集,我不能只提供时间戳,因为 BQML 似乎过度参数化了。
我应该补充一点,如果我提供 month
作为数值,我只会得到一个对我的数据集不起作用的系数(模式围绕学年的部分而不是日历形成)。
如果月份部分是常数,那么随着 trip_count
变得非常非常大,等式 y = ax+b
中的常数变得无关紧要。就好像我想要 y = ax + bx + c
这样的东西,其中 a
是 trip_count
而 b
是根据 month
的值加权的系数。
这在 R 中很容易做到,我只是 运行
glm(bike$totalHireDuration ~ bike$tripCount:bike$month)
这里有一些要重现的假数据:
CREATE OR REPLACE MODEL
my_model_name OPTIONS (model_type='linear_reg',
input_label_cols =['total_hire_duration']) AS (
SELECT
CAST(EXTRACT(MONTH FROM DATE(start_date)) AS STRING) month,
COUNT(*) trip_count,
SUM(duration_sec) total_hire_duration
FROM
bigquery-public-data.san_francisco_bikeshare.bikeshare_trips
GROUP BY
date)
如有任何帮助,我们将不胜感激!
首先,请注意,拟合以下模型几乎总是一个坏主意:
glm(bike$totalHireDuration ~ bike$tripCount:bike$month)
仅适合没有主效应的交互作用。
但是谈到问题的重点,我无法帮助特别是大型查询,但在任何软件中,您都可以通过创建一个新变量来适应两个变量之间的交互,该变量是两个变量的乘积然后将其用作回归变量。
看起来您模型中的 month
是字符串。所以 BQML 线性回归模型会将其视为分类特征。如果你想要月份作为整数,你可以尝试 CAST(EXTRACT(MONTH FROM DATE(start_date)) AS INT64) month
我正在尝试弄清楚在使用 BigQuery ML 时如何让两个回归量进行交互。
在下面的示例中(为粗略的虚假数据道歉!),我尝试使用 trip_count
以及一年中的月份来预测 total_hire_duration
。 BQ 倾向于将 month
部分作为常量添加到线性回归方程中,但实际上我希望它随 trip_count
增长。对于我的真实数据集,我不能只提供时间戳,因为 BQML 似乎过度参数化了。
我应该补充一点,如果我提供 month
作为数值,我只会得到一个对我的数据集不起作用的系数(模式围绕学年的部分而不是日历形成)。
如果月份部分是常数,那么随着 trip_count
变得非常非常大,等式 y = ax+b
中的常数变得无关紧要。就好像我想要 y = ax + bx + c
这样的东西,其中 a
是 trip_count
而 b
是根据 month
的值加权的系数。
这在 R 中很容易做到,我只是 运行
glm(bike$totalHireDuration ~ bike$tripCount:bike$month)
这里有一些要重现的假数据:
CREATE OR REPLACE MODEL
my_model_name OPTIONS (model_type='linear_reg',
input_label_cols =['total_hire_duration']) AS (
SELECT
CAST(EXTRACT(MONTH FROM DATE(start_date)) AS STRING) month,
COUNT(*) trip_count,
SUM(duration_sec) total_hire_duration
FROM
bigquery-public-data.san_francisco_bikeshare.bikeshare_trips
GROUP BY
date)
如有任何帮助,我们将不胜感激!
首先,请注意,拟合以下模型几乎总是一个坏主意:
glm(bike$totalHireDuration ~ bike$tripCount:bike$month)
仅适合没有主效应的交互作用。
但是谈到问题的重点,我无法帮助特别是大型查询,但在任何软件中,您都可以通过创建一个新变量来适应两个变量之间的交互,该变量是两个变量的乘积然后将其用作回归变量。
看起来您模型中的 month
是字符串。所以 BQML 线性回归模型会将其视为分类特征。如果你想要月份作为整数,你可以尝试 CAST(EXTRACT(MONTH FROM DATE(start_date)) AS INT64) month