问题标签 [optuna]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
316 浏览

python - ValueError: y 应该是一维数组,得到一个形状为 (191584, 2) 的数组

我正在尝试使用 optuna 来调整 LGBM 的超参数,但它会报告标题提到的错误。奇怪的是我y的是熊猫系列。

错误如下所示:

我的代码在下面列出。

0 投票
1 回答
62 浏览

python - 关于 optuna 中“n_trials”的问题

我正在尝试使用optuna调整超参数xgboost,但是由于内存限制,我不能将属性设置n_trials得太高否则会报告MemoryError,所以我想知道如果我设置n_trials=5并运行该程序 4 次,会结果与我设置n_trials=20并运行一次程序的结果相似吗?

0 投票
1 回答
121 浏览

optuna - Optuna 返回最后一个值,而不是一次试验的最佳值

我正在使用 Optuna。想象一下这些是“5 个时期或步骤”的“1 次试验”的值:

纪元 0:18 - 纪元 1:32 - 纪元 2:14 - 纪元 3:28 - 纪元 4:25

我希望 Optuna 返回 14 作为此试验的值,但它给了我 25(最后一个 epoch 的值)。我希望 optuna 返回最佳中间值作为最终值,而不是最后一个。任何解释,以及解决问题的解决方案,将不胜感激。

Ps:我说的只是一个试验,而不是一项研究。

0 投票
1 回答
264 浏览

python - Catboost 的 Optuna 以随机顺序输出“试验”?

我正在使用 Optuna for CatboostRegressor 进行超参数调整,但是我意识到我得到的试验是随机顺序的(我从试验 7 开始,然后是试验 5,然后是试验 8。我在网上看到的所有例子都是按顺序排列的,例如 Trial 0 以值完成:xxxxx、Trial 1、Trial 2...(示例:https ://www.kaggle.com/saurabhshahane/catboost-hyperparameter-tuning-with-optuna )

这是一个问题还是不需要担心?不知道为什么我的顺序是随机的。

还想知道我是否应该做cb.cv(Catboost 的交叉验证)而不是cb.CatBoostRegressor然后.fit.predict进行超参数调整?或者我使用哪种方式来获得最佳超参数并不重要?

在此处输入图像描述

这是我的代码:

0 投票
1 回答
75 浏览

python - Optuna - 如果我中断内核运行,是否会存储以前的调整结果?

我一直在使用 Optuna 来调整 Catboostregressor 的超参数。但是,我将其设置为 100 次迭代,因为数据集很大,调整需要很长时间。

我的代码可以在我之前的帖子中找到:Optuna for Catboost 以随机顺序输出“试验”?

现在它已经达到了 50 次迭代,我希望停止它。我想知道我现在是否要点击 jupyter notebook 上的“停止”按钮,我仍然可以在下一个单元格中使用study.best_paramsand调用我的调整参数/输出study.best_trials吗?或者它会因为我在 100% 完成之前中断调音(键盘中断)而引发错误?

如果它不起作用,我不想冒险重新运行所有东西,因为我花了将近一天的时间来调整 50 次试验,所以如果我无法生成调用参数,我不能冒险停止它并study在我的下一个牢房中进行试验。我想自己测试一下,但我的调整仍在所有 CPU 上运行,所以我担心打开一个新脚本会导致我的整个系统崩溃。感谢是否有人知道答案。

0 投票
1 回答
68 浏览

python-3.x - HyperOpt multi metric evalution

Does anyone know if it is possible to somehow calculate metrics other than accuracy in HyperOpt? I would also like it to display me F1, precision, recall. Is there any option to do it? If so could someone please explain it to me.

Here is my link to Github If anyone wants to see the whole code: https://github.com/mikolaj-halemba/Water-Quality-/blob/main/water_quality.ipynb

0 投票
0 回答
38 浏览

xgboost - Optuna pdf 使用 dtrain = lgb.Dataset(train_x, label=train_y) - 但是 xgb 的等价物是什么

我真的从 Optuna 文档 pdf https://buildmedia.readthedocs.org/media/pdf/optuna/stable/optuna.pdf中得到了很多,并密切关注它进行了关于乳腺癌数据集的 lightgbm 培训。我尝试在另一个数据集上使用 xgboost 遵循相同的过程,但 xgboost 似乎没有与 lightgbm.Dataset(X,y) 命令类似的命令。有谁知道 xgboost 的并行命令是什么?谢谢。

0 投票
1 回答
252 浏览

python - 如何使用 optuna 试用在 sklearn MLPRegressor 中设置 hidden_​​layer_sizes

我想[OPTUNA][1]sklearn [MLPRegressor][1]模型一起使用。

对于几乎所有的超参数,如何为它们设置 OPTUNA 非常简单。例如,要设置学习率: learning_rate_init = trial.suggest_float('learning_rate_init ',0.0001, 0.1001, step=0.005)

我的问题是如何设置它,hidden_layer_sizes因为它是一个元组。假设我想要两个隐藏层,其中第一个将有 100 个神经元,第二个将有 50 个神经元。如果没有 OPTUNA,我会:

MLPRegressor( hidden_layer_sizes =(100,50))

但是如果我想让 OPTUNA 在每一层中尝试不同的神经元呢?例如,从 100 到 500,我该如何设置?MLPRegressor期望一个元组

0 投票
1 回答
81 浏览

python - 如何使用 optuna 搜索一组正态分布的参数?

我正在尝试优化具有 13 个参数的自定义模型(没有任何花哨的 ML),其中 12 个我知道是正态分布的。我使用该hyperopt库获得了不错的结果:

我可以指定每个参数的搜索空间形状为正态分布。

我有 32 个内核,默认Trials()对象只使用其中一个。 Hyperopt建议了两种并行化搜索过程的方法,这两种方法我都无法在我的 Windows 机器上工作,所以我已经放弃并想尝试不同的框架。

尽管据我所知贝叶斯超参数优化是基于值根据分布分布的想法,并且正态分布非常普遍,以至于它实际上被称为正态分布。我找不到一种方法来指定Optuna我的参数有 amean和 a standard deviation

我如何告诉我Optuna的参数meanstandard deviation

我可以在文档中找到的唯一发行版是suggest_uniform()suggest_loguniform()suggest_discrete_uniform().

请告诉我我是否误解了对数均匀分布(看起来有点相似,但我不能指定标准偏差?)或修剪过程。

正如您可能从我的文字中看出的那样,我花了很多时间试图弄清楚这一点,但一无所获,任何帮助都将不胜感激!

特别感谢 dankal444 提供了这个优雅的解决方案(我将用我自己的值替换平均值和标准):

0 投票
1 回答
148 浏览

machine-learning - 为什么 optuna 在计算完所有超参数后会停留在试验 2(trial_id=3)?

我正在使用 optuna 来调整 xgboost 模型的超参数。我发现它在试验 2 (trial_id=3) 上停留了很长时间(244 分钟)。但是当我查看记录试验数据的 SQLite 数据库时,我发现除了试验 2 的均方误差值之外,所有试验 2 (trial_id=3) 超参数都已计算出来。而 optuna 试验 2 (trial_id=3) 似乎卡在了那一步。我想知道为什么会这样?以及如何解决这个问题?

这是代码

这是输出

这是sqlite数据库trial_values表的数据

trial_value_id trial_id 客观的 价值
1 1 0 0.0359931476385909
2 2 0 0.0285146521995924

这是sqlite数据库trial_params表的数据,你可以看到所有的试验2(trial_id=3)超参数已经计算出来

param_id trial_id 参数名称 参数值 分布_json
1 1 n_estimators 5800.0 {“名称”:“IntUniformDistribution”,“属性”:{“低”:1000,“高”:10000,“步”:100}}
2 1 助推器 1.0 {“名称”:“CategoricalDistribution”,“属性”:{“选择”:[“gbtree”,“gblinear”,“dart”]}}
3 1 最大深度 4.0 {“名称”:“IntUniformDistribution”,“属性”:{“低”:1,“高”:20,“步骤”:1}}
4 1 学习率 0.1641 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.0001,“高”:0.1991,“q”:0.001}}
5 1 min_child_weight 17.0 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:1.0,“高”:20.0,“q”:1.0}}
6 1 colsample_bytree 0.4 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.1,“高”:1.0,“q”:0.1}}
7 1 子样本 0.3 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.1,“高”:1.0,“q”:0.1}}
8 1 reg_alpha 10.8 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.0,“高”:11.0,“q”:0.1}}
9 1 reg_lambda 7.6 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.0,“高”:11.0,“q”:0.1}}
10 2 n_estimators 6600.0 {“名称”:“IntUniformDistribution”,“属性”:{“低”:1000,“高”:10000,“步”:100}}
11 2 助推器 1.0 {“名称”:“CategoricalDistribution”,“属性”:{“选择”:[“gbtree”,“gblinear”,“dart”]}}
12 2 最大深度 17.0 {“名称”:“IntUniformDistribution”,“属性”:{“低”:1,“高”:20,“步骤”:1}}
13 2 学习率 0.0821 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.0001,“高”:0.1991,“q”:0.001}}
14 2 min_child_weight 20.0 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:1.0,“高”:20.0,“q”:1.0}}
15 2 colsample_bytree 0.7 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.1,“高”:1.0,“q”:0.1}}
16 2 子样本 0.2 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.1,“高”:1.0,“q”:0.1}}
17 2 reg_alpha 1.2 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.0,“高”:11.0,“q”:0.1}}
18 2 reg_lambda 7.2 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.0,“高”:11.0,“q”:0.1}}
19 3 n_estimators 7700.0 {“名称”:“IntUniformDistribution”,“属性”:{“低”:1000,“高”:10000,“步”:100}}
20 3 助推器 2.0 {“名称”:“CategoricalDistribution”,“属性”:{“选择”:[“gbtree”,“gblinear”,“dart”]}}
21 3 最大深度 4.0 {“名称”:“IntUniformDistribution”,“属性”:{“低”:1,“高”:20,“步骤”:1}}
22 3 学习率 0.1221 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.0001,“高”:0.1991,“q”:0.001}}
23 3 min_child_weight 3.0 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:1.0,“高”:20.0,“q”:1.0}}
24 3 colsample_bytree 0.5 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.1,“高”:1.0,“q”:0.1}}
25 3 子样本 0.1 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.1,“高”:1.0,“q”:0.1}}
26 3 reg_alpha 10.8 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.0,“高”:11.0,“q”:0.1}}
27 3 reg_lambda 1.1 {“名称”:“DiscreteUniformDistribution”,“属性”:{“低”:0.0,“高”:11.0,“q”:0.1}}