🎯 学习目标

  • 理解贝叶斯优化的基本原理
  • 掌握Optuna库的使用方法
  • 了解采集函数的作用
  • 学会在实际项目中应用贝叶斯优化
优化概念图

什么是贝叶斯优化

贝叶斯优化(Bayesian Optimization)是一种基于概率模型的全局优化方法。 它通过构建目标函数的代理模型(如高斯过程),利用已有评估结果指导后续搜索, 以最少的评估次数找到最优参数。

🔬 核心思想

📊

代理模型

用高斯过程等拟合目标函数

🎯

采集函数

平衡探索与利用

🔄

迭代更新

新结果更新代理模型

优势对比

特性 网格搜索 随机搜索 贝叶斯优化
搜索效率
评估次数
利用历史
连续参数 不支持 支持 支持
实现复杂度 简单 简单 中等

💻 Optuna实现

import optuna from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import cross_val_score def objective(trial): # 定义搜索空间 n_estimators = trial.suggest_int('n_estimators', 50, 500) max_depth = trial.suggest_int('max_depth', 3, 20) min_samples_split = trial.suggest_int('min_samples_split', 2, 20) max_features = trial.suggest_float('max_features', 0.5, 1.0) # 创建模型 model = RandomForestClassifier( n_estimators=n_estimators, max_depth=max_depth, min_samples_split=min_samples_split, max_features=max_features, random_state=42 ) # 返回验证分数 score = cross_val_score(model, X, y, cv=5).mean() return score # 创建study并优化 study = optuna.create_study(direction='maximize') study.optimize(objective, n_trials=100) print(f'最佳参数: {study.best_params}') print(f'最佳得分: {study.best_value:.4f}')

📊 常用采集函数

期望改进 (EI)

计算当前最优改进的期望值,平衡探索与利用

EI(x) = E[max(f(x) - f*, 0)]

上置信界 (UCB)

结合均值和不确定性,控制探索程度

UCB(x) = μ(x) + β * σ(x)
💡
Optuna优势

Optuna支持剪枝(Pruning):提前终止表现不佳的试验,节省计算资源。还支持分布式优化和多种采样算法。

贝叶斯优化
图:贝叶斯优化通过代理模型高效探索参数空间

📝 本节小结

  • • 贝叶斯优化利用历史评估结果指导搜索
  • • 通过代理模型和采集函数高效探索参数空间
  • • 相比网格/随机搜索,评估次数更少
  • • Optuna是流行的贝叶斯优化库,易用且功能强大
  • • 支持剪枝、分布式优化等高级功能