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 这样的东西,其中 atrip_countb 是根据 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