UltraOpt 开源项目教程

UltraOpt 开源项目教程

ultraopt 项目地址: https://gitcode.com/gh_mirrors/ul/ultraopt

1. 项目介绍

UltraOpt 是一个简单且高效的库,用于最小化昂贵且嘈杂的黑盒函数。它可以应用于许多领域,如超参数优化(HPO)和自动机器学习(AutoML)。UltraOpt 吸收了现有优化库(如 HyperOpt、SMAC3、scikit-optimize 和 HpBandSter)的优点,并实现了一种新的贝叶斯优化算法:嵌入树-Parzen 估计器(ETPE),该算法在实验中优于 HyperOpt 的 TPE 算法。此外,UltraOpt 的优化器被重新设计以适应 HyperBand 和 SuccessiveHalving 评估策略以及 MapReduce 和异步通信条件。

2. 项目快速启动

安装

UltraOpt 需要 Python 3.6 或更高版本。您可以通过 pip 安装最新版本:

pip install ultraopt

或者,您可以下载仓库并手动安装:

git clone https://github.com/auto-flow/ultraopt.git
cd ultraopt
python setup.py install

快速启动示例

以下是一个使用 UltraOpt 进行超参数优化的快速启动示例。

定义配置空间

首先,定义一个随机森林的超参数配置空间:

HDL = {
    "n_estimators": {"_type": "int_quniform", "_value": [10, 200, 10], "_default": 100},
    "criterion": {"_type": "choice", "_value": ["gini", "entropy"], "_default": "gini"},
    "max_features": {"_type": "choice", "_value": ["sqrt", "log2"], "_default": "sqrt"},
    "min_samples_split": {"_type": "int_uniform", "_value": [2, 20], "_default": 2},
    "min_samples_leaf": {"_type": "int_uniform", "_value": [1, 20], "_default": 1},
    "bootstrap": {"_type": "choice", "_value": [True, False], "_default": True},
    "random_state": 42
}
定义目标函数

接下来,定义一个目标函数:

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import cross_val_score, StratifiedKFold
from ultraopt.hdl import layering_config

X, y = load_digits(return_X_y=True)
cv = StratifiedKFold(5, True, 0)

def evaluate(config: dict) -> float:
    model = RandomForestClassifier(**layering_config(config))
    return 1 - float(cross_val_score(model, X, y, cv=cv).mean())
启动优化过程

现在,可以启动优化过程:

from ultraopt import fmin

result = fmin(eval_func=evaluate, config_space=HDL, optimizer="ETPE", n_iterations=30)
print(result)

3. 应用案例和最佳实践

超参数优化(HPO)

UltraOpt 在超参数优化中的应用非常广泛。通过定义配置空间和目标函数,UltraOpt 可以自动搜索最佳的超参数组合,从而提高模型的性能。

自动机器学习(AutoML)

UltraOpt 还可以用于解决 AutoML 中的 CASH 问题(算法选择和超参数优化的组合问题)。通过结合 HyperBand 评估策略和 UltraOpt 的 ETPE 优化器,可以有效地解决复杂的 AutoML 问题。

4. 典型生态项目

HyperOpt

HyperOpt 是一个广泛使用的超参数优化库,UltraOpt 在设计时吸收了 HyperOpt 的优点,并在此基础上进行了改进。

SMAC3

SMAC3 是另一个用于超参数优化的库,UltraOpt 也借鉴了 SMAC3 的一些设计思想。

scikit-optimize

scikit-optimize 是一个基于贝叶斯优化的库,UltraOpt 在实现 ETPE 算法时参考了 scikit-optimize 的一些实现细节。

HpBandSter

HpBandSter 是一个用于超参数优化的库,UltraOpt 在设计时考虑了 HpBandSter 的分布式计算能力。

通过结合这些生态项目的优点,UltraOpt 提供了一个更强大、更灵活的超参数优化解决方案。

ultraopt 项目地址: https://gitcode.com/gh_mirrors/ul/ultraopt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孔旭澜Renata

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值