我正在使用BigQuery ML训练模型,我的输入有多个字段,其中一个是客户编号,此编号不能用作预测功能,但在最终输出中确实需要它,以便我可以参考哪些用户得分高或低。如何在不将其完全删除的情况下将其从模型训练中排除?
要阅读文档,我唯一能排除列的方法是将其添加到显然不是的input_label_cols
或不希望使用的data_split_col
中。
答案 0 :(得分:2)
您不需要将不需要包含在模型中的模型字段包含在内-完全不需要。
相反,您需要在预测期间包括它们
例如在下面的模型中,您只有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 此选项标识用于将数据拆分为训练和评估集的列。该列不能用作功能部件或标签,并且会自动从功能部件中排除。