在Optuna中是否有类似于hyperopts lognormal的功能?

我正在尝试使用Optuna来调整我的模型的超参数。

我卡在一个地方,想定义一个具有对数正态/正态分布的搜索空间。在hyperopt中可以使用hp.lognormal实现这一点。是否有可能使用Optuna现有的suggest_ API组合来定义这样的空间?


回答:

你可以考虑使用suggest_float(..., 0, 1)(即U(0, 1))的逆变换,因为目前Optuna没有直接提供这两种分布的suggest_变体。这个示例可能是一个起点 https://gist.github.com/hvy/4ef02ee2945fe50718c71953e1d6381d请查看下面的代码

import matplotlib.pyplot as pltimport numpy as npfrom scipy.stats import normfrom scipy.special import erfcinvimport optunadef objective(trial):    # 使用Optuna从U(0, 1)中建议。    x = trial.suggest_float("x", 0, 1)    # 逆变换到正态分布。    y0 = norm.ppf(x, loc=0, scale=1)    # 逆变换到对数正态分布。    y1 = np.exp(-np.sqrt(2) * erfcinv(2 * x))    return y0, y1if __name__ == "__main__":    n_objectives = 2  # 正态和对数正态。    study = optuna.create_study(        sampler=optuna.samplers.RandomSampler(),        # 可以是"maximize"。对于此演示无关紧要。        directions=["minimize"] * n_objectives,    )    study.optimize(objective, n_trials=10000)    fig, axs = plt.subplots(n_objectives)    for i in range(n_objectives):        axs[i].hist(list(t.values[i] for t in study.trials), bins=100)    plt.show()

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注