【问题标题】:Excluding columns from training data in BigQuery ML从 BigQuery ML 中的训练数据中排除列
【发布时间】:2019-01-22 04:23:58
【问题描述】:

我正在使用 BigQuery ML 训练一个模型,我的输入有几个字段,其中一个是客户编号,这个数字不能用作预测功能,但我确实需要在最终输出中使用它,以便我可以参考哪些用户得分高与低。如何在不完全删除的情况下从模型训练中排除此列?

阅读文档我可以看到排除列的唯一方法是将其添加到 input_label_cols 显然不是,或者 data_split_col 这是不可取的。

【问题讨论】:

    标签: machine-learning google-bigquery


    【解决方案1】:

    您不需要包含到不需要成为模型一部分的模型字段中 - 根本不需要。
    相反,您需要在预测过程中包含它们

    例如,在下面的模型中,您只有 6 个字段作为输入(运营商、原点、目的地、dep_delay、taxi_out、距离)

    #standardsql
    CREATE OR REPLACE MODEL flights.ontime
    OPTIONS
      (model_type='logistic_reg', input_label_cols=['on_time']) AS
    SELECT
      IF(arr_delay < 15, 1, 0) AS on_time,
      carrier,
      origin,
      dest,
      dep_delay,
      taxi_out,
      distance
    FROM `cloud-training-demos.flights.tzcorr`
    WHERE arr_delay IS NOT NULL   
    

    在预测时,您可以使用所有额外的字段,如下所示(您可以将它们放在 SELECT 的任何位置 - 但请注意 - 预测的列将首先出现:

    #standardsql
    SELECT * FROM ml.PREDICT(MODEL `cloud-training-demos.flights.ontime`, (
      SELECT
        UNIQUE_CARRIER,         -- extra column
        ORIGIN_AIRPORT_ID,      -- extra column
        IF(arr_delay < 15, 1, 0) AS on_time,
        carrier,
        origin,
        dest,
        dep_delay,
        taxi_out,
        distance
      FROM `cloud-training-demos.flights.tzcorr`
      WHERE arr_delay IS NOT NULL
      LIMIT 5
    ))   
    

    显然input_label_cols and data_split_col 有不同的用途

    input_label_cols STRING 训练数据中的标签列名称。

    data_split_col STRING 此选项标识用于拆分数据的列[分为训练集和评估集]。此列不能用作特征或标签,将自动从特征中排除。

    【讨论】:

    • 谢谢米哈伊尔,现在解释得很有道理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多