机器学习深度学习AutoML大数据后端【免费下载链接】h2o-3H2O is an Open Source, Distributed, Fast Scalable Machine Learning Platform: Deep Learning, Gradient Boosting (GBM) XGBoost, Random Forest, Generalized Linear Modeling (GLM with Elastic Net), K-Means, PCA, Generalized Additive Models (GAM), RuleFit, Support Vector Machine (SVM), Stacked Ensembles, Automatic Machine Learning (AutoML), etc.项目地址https://gitcode.com/gh_mirrors/h2/h2o-3点击查看免费下载导读nlambdas是 H2O 3 中 GLM广义线性模型与 GAM广义加性模型共用的正则化参数用于控制在lambda_searchTRUE时自动生成的 λ 序列中需要求解的模型数量。本文以官方参数文档为主体结合 GLM.java 等源码完整讲解 λ 序列的生成公式、warm-start 顺序求解原理、默认值规则以及它与lambda_min_ratio、strong rules 的配合关系并给出 R 与 Python 的可运行实战示例。读完本文你将能根据数据规模与求解精度需求合理设置nlambdas以控制 H2O GLM/GAM 的调参搜索粒度。一、参数概览可用模型GLM、GAM超参数属性否不属于可用于网格搜索的超参数前置条件该参数仅在lambda_searchTRUE时生效。若未开启 lambda search后端会自动隐藏该参数见 GLMModel.java 中glm.hide(_nlambdas, only applies if lambda search is on.)的逻辑。nlambdas指定了在 lambda search 过程中使用的 λ 值个数。其含义与lambda_min_ratio紧密耦合λ 序列由 H2O 自动生成呈指数递减分布取值范围从λ_max一直递减到λ_min lambda_min_ratio × λ_max。二、核心原理λ 序列如何自动生成1. λ_max 与 λ_min 的定义λ_max使得解为全 0 模型所有系数为 0的最小的 λ。从源码看H2O 通过计算初始梯度来得到_lmaxGLM.java。λ_min由lambda_min_ratio与λ_max相乘得到即λ_min lambda_min_ratio × λ_max。2. 指数递减序列的生成公式当用户未显式提供 λ 数组且开启了 lambda search 时H2O 会为nlambdas个 λ 值分配数组并按等比数列生成序列GLM.java_parms._lambda new double[_parms._nlambdas]; double dec Math.pow(_parms._lambda_min_ratio, 1.0 / (_parms._nlambdas - 1)); _parms._lambda[0] _lmax; double l _lmax; for (int i 1; i _parms._nlambdas; i) _parms._lambda[i] (l * dec);即相邻两个 λ 之间满足固定比例dec (lambda_min_ratio)^(1/(nlambdas - 1)) λ[i] λ[i-1] × dec可以看到nlambdas越大序列中的 λ 越密集相邻 λ 的比值dec越接近 1nlambdas越小λ 序列越稀疏相邻 λ 间隔越大。3. 一个可验证的数字示例按文档默认配置alpha 0时lambda_min_ratio 1e-4、nlambdas 100代入公式得相邻 λ 比值为dec (1e-4)^(1/99) ≈ 0.912这正是文档所说的“ratio of 0.912”。这也解释了为什么 H2O 文档建议使用 strong rules 时最好让相邻 λ 的比值保持在 0.912 左右详见第五节。三、顺序求解与 warm-start从易到难逐步调整λ 序列确定后H2O按递减顺序逐一求解各 λ 对应的模型并使用 warm-start 机制求解λ_k时以上一个解λ_{k-1}的系数作为初始预测值。由于相邻 λ 对应的模型通常非常接近每个 λ 只需很少的迭代次数即可收敛通常 23 次先求解惩罚更重λ 更大的模型是一个“简单问题”之后逐步做小幅调整从而获得更好的数值稳定性与整体性能。从源码可以看出nlambdas还直接参与迭代预算的计算开启 lambda search 时max_iterations会被放大为nlambdas * 100 * numclasses多分类场景或10 * nlambdas单响应场景见 GLM.java。因此nlambdas不仅决定 λ 路径的密度也隐式影响着整个搜索过程的迭代上限与总工作量_workPerIteration WORK_TOTAL / _parms._nlambdas见 GLM.java。四、默认值规则与推荐取值1. 后端默认值GLM.javaif (_parms._lambda_search _parms._nlambdas -1) _parms._nlambdas _parms._alpha[0] 0 ? 30 : 100; // fewer lambdas needed for ridgealpha 0弹性网/套索等默认nlambdas 100同时lambda_min_ratio默认1e-4相邻 λ 比值约为 0.912alpha 0纯岭回归默认nlambdas 30因为岭回归所需的 λ 数量更少同时lambda_min_ratio还会再缩小一个数量级见下文。2. lambda_min_ratio 的自动默认值GLM.java若用户未指定lambda_min_ratio值为 -1H2O 依据样本数与特征数自动选择if (_parms._lambda_min_ratio -1) { _parms._lambda_min_ratio (_nobs 4) _dinfo.fullN() ? 1e-4 : 1e-2; if (_parms._alpha[0] 0) _parms._lambda_min_ratio * 1e-2; // smaller lambda min for ridge as we are starting quite high }即当样本数除以 16 仍大于特征数观测充分多时取1e-4否则取1e-2若alpha0再乘以1e-2即变为1e-6或1e-4。这与 GLMV3.java 中 schema 的说明一致。3. Python/R 接口的默认值PythonH2OGeneralizedLinearEstimator(...)中nlambdas默认-1类型为intglm.pyRh2o.glm(...)中nlambdas -1glm.R。默认值-1表示交由后端按上述alpha取值自动判定30 或 100。这意味着如果你不显式设置nlambdasH2O 会自动为岭回归选 30、为其余正则化路径选 100 个 λ。4. 取值建议数据规模大、追求更快求解可适当减小nlambdas如 3050牺牲路径密度换取速度需要精细刻画系数路径如用于 λ 选择可视化、逼近最优 λ可增大nlambdas如 100200若配合 strong rules 使用建议保持相邻 λ 比值接近 0.912 的默认节奏即nlambdas100、lambda_min_ratio1e-4附近。五、相邻 λ 的距离与 strong ruleslambda_min_ratio与nlambdas共同决定了序列中任意两个相邻 λ 的相对距离。这一点在应用**递归强规则recursive strong rules**时尤为重要——强规则只在相邻 λ 足够“接近”时才能高效工作。从源码看strong rules 的实现位于 ComputationState.java每当 λ 切换到新值setLambda时会基于无 L2 惩罚的梯度应用强规则来筛除预期系数为 0 的预测变量从而显著缩小活跃特征集。其筛选阈值与alpha × (2 × lambdaNew − lambdaOld)相关见 ComputationState.java 的rhs计算。这意味着相邻 λ 越接近上一步的活跃特征集越能准确代表下一步强规则筛选越可靠若nlambdas过小导致相邻 λ 相距过远强规则可能过早剪枝掉本应活跃的特征虽然 H2O 仍会通过 KKT 条件校验兜底。六、相关参数nlambdas通常与以下参数配套使用alpha正则化分布的混合比例L1 与 L2 权重决定nlambdas默认值取 30 还是 100lambda正则化强度。开启 lambda search 后此参数含义变为“λ_min”从 λ_max 开始搜索nlambdas控制该路径上的求解点数lambda_min_ratioλ_min / λ_max比值与nlambdas共同决定 λ 序列的覆盖范围与密度lambda_search开启后从 λ_max 开始自动搜索nlambdas仅在它为 TRUE 时生效。在模型输出层面训练完成后 GLMModel.java 会在模型摘要中汇总nlambda、lambda.max、lambda.min与lambda.1se方便你核对实际求解的 λ 路径。此外当 lambda search 与交叉验证CV结合时H2O 还会用lambdaCVEstimate收缩 λ 搜索范围截断到 CV 估计值附近见 GLM.java此时实际求解的模型数可能小于nlambdas。七、实战示例波士顿房价预测下面以经典的波士顿房价Boston Housing数据集演示nlambdas的用法。数据集包含 13 个预测特征响应列为medv自有住房中位数价格单位千美元。示例将chas列转换为因子并按 8:2 划分训练/验证集开启lambda_search并将nlambdas设为 50。R 示例library(h2o) h2o.init() # 导入 boston 数据集预测波士顿郊区的住房中位价 boston - h2o.importFile(https://s3.amazonaws.com/h2o-public-test-data/smalldata/gbm_test/BostonHousing.csv) # 设置预测变量名与响应列名 predictors - colnames(boston)[1:13] response - medv # 自有住房中位数价格单位$1000 # 将 chas 列转为因子chas 查尔斯河哑变量 boston[chas] - as.factor(boston[chas]) # 划分训练集与验证集 boston_splits - h2o.splitFrame(data boston, ratios 0.8) train - boston_splits[[1]] valid - boston_splits[[2]] # 使用 nlambdas 参数训练模型 boston_glm - h2o.glm(x predictors, y response, training_frame train, validation_frame valid, lambda_search TRUE, nlambdas 50) # 打印验证集上的 MSE print(h2o.mse(boston_glm, valid TRUE))Python 示例import h2o from h2o.estimators.glm import H2OGeneralizedLinearEstimator h2o.init() # 导入 boston 数据集 boston h2o.import_file(https://s3.amazonaws.com/h2o-public-test-data/smalldata/gbm_test/BostonHousing.csv) # 设置预测变量名与响应列名 predictors boston.columns[:-1] response medv # 将 chas 列转为因子 boston[chas] boston[chas].asfactor() # 划分训练集与验证集 train, valid boston.split_frame(ratios[.8]) # 初始化估计器并训练模型 boston_glm H2OGeneralizedLinearEstimator(lambda_searchTrue, nlambdas50) boston_glm.train(xpredictors, yresponse, training_frametrain, validation_framevalid) # 打印验证集上的 MSE print(boston_glm.mse(validTrue))示例要点说明代码中lambda_search TRUE/True是必须的——不开启时nlambdas不生效后端会自动隐藏该参数设置nlambdas 50意味着 H2O 会在从λ_max到λ_min的指数递减路径上求解 50 个模型相邻 λ 比值为(lambda_min_ratio)^(1/49)训练完成后可用h2o.mse(model, valid TRUE)/model.mse(validTrue)观察验证集误差并可与不同nlambdas取值的结果对比判断当前数据规模下 λ 路径密度是否足够。八、调参小结与常见问题场景建议快速试验、大数据集nlambdas 3050缩短总求解时间精细的系数路径 / 精确选择最优 λnlambdas 100200路径更密、相邻 λ 更接近配合 strong rules保持相邻 λ 比值接近 0.912默认nlambdas100、lambda_min_ratio1e-4纯岭回归alpha0无需显式设置后端默认nlambdas30通常已足够常见问题设置了nlambdas但没开lambda_search参数会被忽略并在 API 中隐藏请先设置lambda_search TRUEnlambdas是超参数吗不是。它不参与网格搜索的hyper_params配置文档明确标注 Hyperparameter: no为什么实际模型数有时少于nlambdas与 CV 结合时H2O 会根据lambdaCVEstimate收缩 λ 搜索范围只保留 CV 估计值附近的 λGLM.java。该参数同样适用于 GAM广义加性模型GAMV3.java 与 GAMModel.java 中均存在对应的nlambdas定义其 λ 搜索行为与 GLM 一致。赞分享机器学习深度学习AutoML大数据后端【免费下载链接】h2o-3H2O is an Open Source, Distributed, Fast Scalable Machine Learning Platform: Deep Learning, Gradient Boosting (GBM) XGBoost, Random Forest, Generalized Linear Modeling (GLM with Elastic Net), K-Means, PCA, Generalized Additive Models (GAM), RuleFit, Support Vector Machine (SVM), Stacked Ensembles, Automatic Machine Learning (AutoML), etc.项目地址https://gitcode.com/gh_mirrors/h2/h2o-3点击查看免费下载相关推荐H2O 中 GLM 与 GAM 的 link 参数详解链接函数选择、Family 兼容矩阵与实战示例H2O 中 GLM 与 GAM 的 link 参数详解链接函数选择、Family 兼容矩阵与实战示例 导读 本文围绕 H2O 分布式机器学习平台中 GLM广机器学习深度学习AutoML大数据后端用 CVXPY 实现岭回归Ridge Regression损失函数、参数调优与正则化路径详解用 CVXPY 实现岭回归Ridge Regression损失函数、参数调优与正则化路径详解 本篇技术指南以 CVXPY 官方示例 ridge_regre科学计算H2O-3 中 score_tree_interval 参数详解让早停Early Stopping可控、可复现H2O 3 中 score_tree_interval 参数详解让早停Early Stopping可控、可复现 本文围绕 H2O 3 树模型的 score机器学习深度学习AutoML大数据后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考