H2OGeneralizedLinearEstimator中的Beta约束

时间:2018-04-18 22:21:11

标签: pyspark glm h2o

我正在寻找一种在H2O GeneralizedLinearEstimator模型运行之前设置beta的方法吗? Beta可以作为模型的起点吗?根据以下文档,它被称为beta约束。有人可以帮我这个。

http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/beta_constraints.html

这是我正在尝试的例子

1)模型1:我运行了20次迭代的模型并使用了此模型运行的测试版并将其保存为数据框

2)模型2:我运行了一个模型,其中包含与第一个模型相同的所有内容(包括20个迭代),另外我将beta约束指定为来自先前模型的系数。尝试热启动此模型,以便从之前模型结束的地方开始。

3)模型3:我运行了一个模型,其中所有内容与第一个模型相同,但是迭代次数为40次

正如文档中所解释的那样,我想比较并看到模型2与模型3中的测试版相同

具有beta约束规范的代码

    model2 =  H2OGeneralizedLinearEstimator(family = "poisson",
                                            alpha=0,
                                            solver = "L-BFGS", 
                                            max_iterations=20, 
                                            gradient_epsilon=1e-8, 
                                            objective_epsilon=1e-8, 
                                            beta_epsilon=1e-8, 
                                            beta_constraints=bc)

1 个答案:

答案 0 :(得分:0)

根据H2O Glossarybeta_constraints的格式为:

  

带有[[names]列的data.frame或H2OParsedData对象,   “lower_bounds”,“upper_bounds”,“beta_given”],每一行   对应于GLM中的预测变量。 “名称”包含预测变量   名称,“lower_bounds”和“upper_bounds”是低位和高位   beta的范围,“beta_given”是一些提供的起始值   测试

首先,您需要从模型2中获取beta的向量。将它们称为m2_betas

接下来,因为您需要严格的等式约束,所以需要将它们设置为上限,下限,起始值。

我在R中完成了这项工作(请参阅related answer),其中beta_constraints作为data.frame传递,但我认为Python API类似并使用pandas.DataFrame 。尝试:

constraints = pd.DataFrame({'names':x.columns, 
                             'lower_bounds':m2_betas, 
                             'upper_bounds':m2_betas, 
                             'beta_given':m2_betas})