多次训练同一BigQuery线性回归模型却得到不同p值和标准误差的原因咨询
问题:重复训练线性回归模型却得到不同结果
我在训练一个线性回归模型时,多次使用相同数据训练同一模型,却得到不同的系数、p值和标准误差。以下是我使用的代码:
CREATE OR REPLACE MODEL `music_min_model` OPTIONS( MODEL_TYPE = 'LINEAR_REG', INPUT_LABEL_COLS = ['music_mins_7d_post'], OPTIMIZE_STRATEGY = 'NORMAL_EQUATION', ENABLE_GLOBAL_EXPLAIN = TRUE, CALCULATE_P_VALUES = TRUE, CATEGORY_ENCODING_METHOD='DUMMY_ENCODING', DATA_SPLIT_METHOD = 'NO_SPLIT' ) AS SELECT experiment_group_name, experiment_id, IF (wau_pre = 1, music_mins_7d, 0) AS music_mins_7d_pre, IF (wau_post= 1, music_mins_7d,0) AS music_mins_7d_post FROM `wau_podcast_music_metrics`; CREATE OR REPLACE TABLE `music_min_estimates` AS SELECT * FROM `music_min_estimates` -- TABLE WITH ESTIMATES FROM SINGLE CH EXPERIMENTS UNION ALL SELECT * FROM ( WITH estimates_raw AS ( SELECT 000 AS experiment_id, category, weight, standard_error, p_value FROM ML.ADVANCED_WEIGHTS(MODEL `music_min_model`) WHERE category IS NOT NULL and NOT (IS_NAN (p_value)) ) SELECT 0 as model_nmr, experiment_id, IF (category = 'groupA', weight * -1, weight) AS estimate, standard_error, p_value FROM estimates_raw ) -- TABLE WITH POOLED VERSION
原因分析与解决方案
- 核心原因:虚拟编码的随机参考组
你使用了CATEGORY_ENCODING_METHOD='DUMMY_ENCODING',但BigQuery默认会随机选择一个类别作为虚拟编码的参考组。每次训练时,参考组可能不同,导致系数的符号、p值和标准误差出现变化——比如某次以groupA为基准,另一次以其他组为基准,系数会反向,对应的统计指标也会随之改变。 - 遗漏的关键参数
是的,你需要添加DUMMY_ENCODING_REFERENCE_CATEGORY参数来固定参考类别,消除随机性。例如:
固定参考组后,每次训练的编码逻辑一致,结果就会稳定。OPTIONS( -- 其他参数保持不变 CATEGORY_ENCODING_METHOD='DUMMY_ENCODING', DUMMY_ENCODING_REFERENCE_CATEGORY = '你的基准类别名称', -- 替换为实际组名,比如'control' DATA_SPLIT_METHOD = 'NO_SPLIT' ) - 额外验证点
确认数据源wau_podcast_music_metrics在重复训练期间没有数据更新,如果数据本身发生变化,也会导致模型结果不同。但根据你描述的“相同数据”,这一点大概率不是问题。
内容的提问来源于stack exchange,提问作者Javiss
相关产品推荐
相关产品推荐

