You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GCP BigQueryML中执行逐步回归以筛选显著变量?

在GCP BigQueryML中实现逐步回归的方法

BigQueryML目前没有原生支持自动逐步回归的功能,但可以通过手动结合模型评估指标(如AIC、调整R²、变量显著性p值)来实现向前选择、向后剔除或双向淘汰式的逐步回归,以此筛选显著变量。

一、向前选择法(从单变量开始逐步添加)

1. 评估所有单变量模型,筛选初始最优变量

针对每个特征单独构建线性回归模型,通过评估指标选择表现最优的单变量作为初始模型基础:

-- 为每个特征创建单变量模型
CREATE OR REPLACE MODEL my_dataset.model_feat1
OPTIONS(model_type='linear_reg', split_eval_fraction=0.2) AS
SELECT target_column, feature_1 FROM my_dataset.source_table;

CREATE OR REPLACE MODEL my_dataset.model_feat2
OPTIONS(model_type='linear_reg', split_eval_fraction=0.2) AS
SELECT target_column, feature_2 FROM my_dataset.source_table;

-- 评估所有单变量模型,对比AIC、调整R²等指标
SELECT 'feature_1' AS feature, aic, adjusted_r2 FROM ML.EVALUATE(MODEL my_dataset.model_feat1);
SELECT 'feature_2' AS feature, aic, adjusted_r2 FROM ML.EVALUATE(MODEL my_dataset.model_feat2);

选择AIC最低或调整R²最高的模型对应的特征作为初始变量。

2. 逐步添加剩余变量,验证模型提升

基于初始变量,依次加入剩余特征构建多变量模型,对比添加前后的模型指标,同时检查新加入变量的显著性:

-- 加入feature_2到初始模型(假设初始变量是feature_1)
CREATE OR REPLACE MODEL my_dataset.model_feat1_feat2
OPTIONS(model_type='linear_reg', split_eval_fraction=0.2) AS
SELECT target_column, feature_1, feature_2 FROM my_dataset.source_table;

-- 评估新模型的指标
SELECT aic, adjusted_r2 FROM ML.EVALUATE(MODEL my_dataset.model_feat1_feat2);

-- 查看变量的显著性p值
SELECT feature, p_value FROM ML.WEIGHTS(MODEL my_dataset.model_feat1_feat2)
WHERE feature != '__INTERCEPT__';

如果添加后AIC降低、调整R²升高,且新变量的p值小于预设阈值(如0.05),则保留该变量;否则丢弃,继续测试下一个特征。重复此过程直到没有能提升模型的变量。

二、向后剔除法(从全变量模型开始逐步移除)

1. 构建全变量模型

先包含所有候选特征构建完整模型:

CREATE OR REPLACE MODEL my_dataset.model_full
OPTIONS(model_type='linear_reg', split_eval_fraction=0.2) AS
SELECT target_column, feature_1, feature_2, feature_3, feature_4 FROM my_dataset.source_table;

2. 识别不显著变量并逐步剔除

通过ML.WEIGHTS获取变量的p值,优先移除p值最高的不显著变量,然后重新建模并评估指标变化:

-- 查看所有变量的显著性
SELECT feature, p_value FROM ML.WEIGHTS(MODEL my_dataset.model_full)
WHERE feature != '__INTERCEPT__';

-- 移除p值最高的变量(假设是feature_4),构建精简模型
CREATE OR REPLACE MODEL my_dataset.model_remove_feat4
OPTIONS(model_type='linear_reg', split_eval_fraction=0.2) AS
SELECT target_column, feature_1, feature_2, feature_3 FROM my_dataset.source_table;

-- 对比精简模型与原模型的指标
SELECT 'full_model' AS model, aic, adjusted_r2 FROM ML.EVALUATE(MODEL my_dataset.model_full);
SELECT 'removed_feat4' AS model, aic, adjusted_r2 FROM ML.EVALUATE(MODEL my_dataset.model_remove_feat4);

如果精简模型的AIC更低、调整R²更高,则保留该模型,继续剔除下一个不显著变量;否则停止剔除。

三、关键注意事项

  • 始终使用验证集指标(通过split_eval_fraction拆分数据集)评估模型,避免过拟合。
  • 变量显著性的p值阈值可根据业务需求调整(常用0.05或0.1)。
  • 对于分类任务(如逻辑回归),可将评估指标替换为对数损失、AUC等,变量显著性仍通过ML.WEIGHTS的p值判断。

内容的提问来源于stack exchange,提问作者rushabh shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:30:58