- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 LightGBM 用于回归问题(平均绝对误差/L1 - 或类似 Huber 或 pseud-Huber - 损失),我主要想调整我的超参数。 LightGBMTunerCV
在 optuna
提供了一个很好的起点,但在那之后我想更深入地搜索(不丢失自动调谐器学到的东西)。此外,我想使用平均交叉验证分数 + 交叉验证分数的标准差作为我对模型进行排名的指标(即我假设较低的 SD 是一个好兆头,对于来自相同的未见数据的性能更稳定分配)。
我做过这样的事情:
import optuna
import optuna.integration.lightgbm as lgb
params = {
"objective": "l1",
"metric": "l1",
"verbosity": -1,
"boosting_type": "gbdt",
}
dtrain = lgb.Dataset(X, label=y)
mystudy = optuna.create_study()
tuner = lgb.LightGBMTunerCV(
params, dtrain,
verbose_eval=False,
time_budget=6000,
study = mystudy)
tuner.run()
现在我想做一个考虑到这些结果的进一步搜索。如果我之前没有结果,我可能会这样做:
def objective(trial):
param = {
'objective': 'l1',
'metric': 'l1',
'verbosity': -1,
'boosting_type': 'gbdt',
'lambda_l1': trial.suggest_loguniform('lambda_l1', 1e-8, 10.0),
'lambda_l2': trial.suggest_loguniform('lambda_l2', 1e-8, 10.0),
'num_leaves': trial.suggest_int('num_leaves', 2, 512),
'feature_fraction': trial.suggest_uniform('feature_fraction', 0.1, 1.0),
'bagging_fraction': trial.suggest_uniform('bagging_fraction', 0.1, 1.0),
'bagging_freq': trial.suggest_int('bagging_freq', 1, 15),
'min_child_samples': trial.suggest_int('min_child_samples', 2, 256),
'seed': 1979
}
# insert code for getting X and y ready
dtrain = lgb.Dataset(X, label=y)
lcv = lgb.cv(
param,
dtrain,
verbose_eval=False)
return lcv['l1-mean'][-1]+lcv['l1-stdv'][-1]
optuna.logging.set_verbosity(optuna.logging.WARNING)
study = optuna.create_study(direction='minimize')
study.optimize(objective, n_trials=2500)
我有点不清楚如何将以前的结果添加到研究中。不定义一项新研究大概可以解决这个问题,但它看起来像
LightGBMTunerCV
使用平均分数(不是mean + stdv)并且没有办法轻松改变它?可以以某种方式对研究中的试验进行后处理以添加 stdv 吗?
FixedTrial
强制研究重新运行最佳调整参数(即使我理解这应该是可能的),这可能是另一种方法。
最佳答案
学习类有个方法叫enqueue_trial
,其中插入一个 trial
类进入评估队列。
所以你可以像这样使用调整参数作为起点:
optuna.logging.set_verbosity(optuna.logging.WARNING)
study = optuna.create_study(direction='minimize')
# insert this line:
study.enqueue_trial(tuner.best_params)
study.optimize(objective, n_trials=2500)
关于python - 使用 optuna LightGBMTunerCV 作为使用 optuna 进一步搜索的起点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63875879/
我正在尝试将 LightGBM 用于回归问题(平均绝对误差/L1 - 或类似 Huber 或 pseud-Huber - 损失),我主要想调整我的超参数。 LightGBMTunerCV在 optun
这个问题的背景是通过运行 study.optimize() 来优化神经网络训练的超参数,启用默认剪枝并将学习率作为优化参数(这个问题可以推广到其他超参数). 高学习率最初可以产生良好的结果,可以在开始
使用 Optuna 执行单目标优化时,研究的最佳参数可使用: import optuna def objective(trial): x = trial.suggest_uniform('x'
使用 Optuna 执行单目标优化时,研究的最佳参数可使用: import optuna def objective(trial): x = trial.suggest_uniform('x'
我在寻找最佳 auc 的 lightgbm 建模中遇到错误。任何帮助将不胜感激。 import optuna from sklearn.model_selection import Stratifi
如何在 Optuna 的 objective 函数中同时优化多个指标。例如,我正在训练一个 LGBM 分类器,并希望为所有常见分类指标(如 F1、精度、召回率、准确率、AUC 等)找到最佳超参数集。
我知道这个问题已经被问过多次,但是有了其他线程的答案,我无法解决我的问题。我正在使用 python3 CTGAN_noscale.py --database_name CTGAN_noshift 在命
由于某种原因,Optuna TPESampler 和 RandomSampler 对任何参数尝试相同的建议整数值(也可能是浮点数和对数)不止一次。我找不到一种方法来阻止它再次建议相同的值。在 100
我正在尝试使用 optuna 搜索超参数空间。 在一个特定场景中,我在一台带有几个 GPU 的机器上训练一个模型。模型和批量大小允许我每 1 个 GPU 运行 1 次训练。所以,理想情况下,我想让 o
我正在使用 optuna 来优化我的自定义模型的参数。 有没有办法对参数进行采样,直到之前未测试当前参数集?我的意思是,如果过去使用相同的参数集进行过一些尝试,请尝试对另一个参数进行采样。 在某些情况
我想在 Optuna 中建议比率。 比率为 X_1, X_2, ..., X_k , 以 ∑X_i = 1 为界和 0 <= X_i <= 1对于所有 i . Optuna 不提供 Dirichlet
我正在使用 Optuna 优化一些目标函数。我想创建“包装”标准 Optuna 代码的自定义类。 例如,这是我的类(class)(它仍在进行中!): class Optimizer(object):
我想获得稍后在笔记本中使用的最佳模型,以使用不同的测试批次进行预测。 可重现的示例(取自 Optuna Github): import lightgbm as lgb import numpy as
我将 sklearn 与 optuna 一起用于 HPO。我想创建一个自定义函数,它将 sklearn 管道作为输入并返回特定于 optuna 的网格。返回 sklearn 特定的参数网格(即字典)似
我在使用 Optuna 调整我的模型时遇到警告。请告诉我如何抑制这些警告? [LightGBM] [Warning] feature_fraction is set=0.2, colsample_by
我想对官方 Optuna 和基于 pytorch 的示例代码 ( https://github.com/optuna/optuna/blob/master/examples/pytorch_simpl
我尝试使用 optuna 来调整超参数。但我的目标函数是有条件的,这会在获得最佳参数方面产生问题。 只有满足条件时我才想获得 cwc,否则继续尝试下一个超参数。但我猜由于条件不满足并且目标函数返回 c
我正在尝试在 Python 中使用 optuna 库来优化推荐系统模型的参数。这些模型是自定义的,看起来像标准的拟合预测 sklearn 模型(使用方法获取/设置参数)。 我所做的:从均匀 int 分
我想将 [OPTUNA][1] 与 sklearn [MLPRegressor][1] 模型一起使用。 对于几乎所有超参数,如何为它们设置 OPTUNA 都非常简单。例如,要设置学习率:learnin
def autotune(trial): cfg= { 'device' : "cuda" if torch.cuda.is_available() else "cpu",
我是一名优秀的程序员,十分优秀!