郭震 AI公众号:郭震AI

18 超参数优化之超参数调优的方法

发布日期:

最近更新:

分类: AutoML

预计阅读: 3 分钟

阅读次数: 0

预计阅读3 分钟
结构重点7 个
图文要点6 张
正文规模1.3k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 7 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文索引

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

6 张图 · 可跳转
超参数调优的方法流程图查看大图
超参数调优的方法流程图

调参不是把范围无限放大。好的搜索空间比昂贵搜索更重要,预算也必须提前设定。

超参数调优的方法实操核对图查看大图
超参数调优的方法实操核对图

我会先用小预算找方向,再扩大关键参数范围。一次调太多参数,很难解释结果。

在我们深入探讨超参数优化之前,回顾一下上篇中提到的特征工程自动化过程。我们通过工具实现了特征的选择与构建,为模型的表现奠定了坚实的基础。现在,随着我们进入模型的训练阶段,超参数调优无疑是提升模型性能的关键环节。在这篇文章中,我们将探讨一些有效的超参数优化方法,以帮助大家在实践中取得更好的结果。

超参数的重要性

超参数是指在学习过程之前设置的参数,它与模型的结构和训练过程密切关联。与之相对的是“模型参数”,后者是从数据中学习得出的。选择合适的超参数能够显著影响模型的表现,例如决定学习速率、正则化强度或者树的深度等。

超参数调优的方法

1. 手动调优

这是最基本且广泛使用的方法,通常需要对超参数进行试验并观察模型性能。尽管手动调优灵活且简单,但在面对多个超参数及其值的情况下,效率较低,容易遗漏最佳组合。

网格搜索是一种穷举搜索的方法,它会为每个超参数设定可能的值组合,并训练模型以评估每一种组合的效果。这种方法的优点在于全面,缺点是计算资源消耗巨大,尤其是当超参数的数量增加时。

示例代码

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier

# 准备数据
X, y = load_data()  # 假设load_data函数加载数据

# 定义模型
model = RandomForestClassifier()

# 定义参数范围
param_grid = {
    'n_estimators': [50, 100, 200],
    'max_depth': [None, 10, 20, 30],
    'min_samples_split': [2, 5, 10]
}

# 网格搜索
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, scoring='accuracy', cv=5)
grid_search.fit(X, y)

# 输出最佳超参数
print("最佳超参数:", grid_search.best_params_)

与网格搜索不同,随机搜索在设定的参数空间中随机选择一部分超参数组合进行模型训练。相较于网格搜索,随机搜索在较大参数空间中更具有探索性和效率。

示例代码

from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestClassifier
from scipy.stats import randint

# 准备数据
X, y = load_data()

# 定义模型
model = RandomForestClassifier()

# 定义参数分布
param_dist = {
    'n_estimators': randint(50, 200),
    'max_depth': [None] + list(range(10, 31)),
    'min_samples_split': randint(2, 11)
}

# 随机搜索
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_dist, n_iter=100, scoring='accuracy', cv=5)
random_search.fit(X, y)

# 输出最佳超参数
print("最佳超参数:", random_search.best_params_)

4. 贝叶斯优化(Bayesian Optimization)

贝叶斯优化是一种基于概率模型的优化方法。通过建立一个关于目标函数的代理模型,贝叶斯优化能够在每次迭代中选择新的超参数以最大化获得的信息量。这种方法通常比随机搜索和网格搜索更高效。

超参数调优方法判断卡查看大图
超参数调优方法判断卡

选择超参数调优方法时,先看网格搜索、随机搜索、贝叶斯优化、早停策略、预算限制和验证集稳定性。

示例代码

使用 Hyperopt 进行贝叶斯优化的示例:

from hyperopt import fmin, tpe, hp, Trials

def objective(params):
    model = RandomForestClassifier(**params)
    score = cross_val_score(model, X, y, scoring='accuracy').mean()
    return -score  # 最小化目标函数,因此取负值

space = {
    'n_estimators': hp.randint('n_estimators', 100),
    'max_depth': hp.choice('max_depth', [None] + list(range(10, 31))),
    'min_samples_split': hp.randint('min_samples_split', 10)
}

trials = Trials()
best = fmin(fn=objective, space=space, algo=tpe.suggest, max_evals=100, trials=trials)
print("最佳超参数:", best)
超参数优化之超参数调优的方法应用复盘卡查看大图
超参数优化之超参数调优的方法应用复盘卡

学完《超参数优化之超参数调优的方法》后,不妨换一个自己的场景试一次,重点观察输入、处理和输出是否能对应起来。

超参数优化之超参数调优的方法应用检查卡查看大图
超参数优化之超参数调优的方法应用检查卡

如果想把《超参数优化之超参数调优的方法》用到自己的任务里,可以先缩小场景,只验证一个最关键的判断点。

总结

在这一篇中,我们探讨了不同的超参数调优方法,从基础的手动调优到现代化的贝叶斯优化。选择合适的方法,需要考虑任务的复杂性、可用的计算资源以及时间限制。后续的文章中,我们将进一步探讨网格搜索与随机搜索的具体实现与实践技巧。

AutoML阅读地图卡查看大图
AutoML阅读地图卡

看《超参数优化之超参数调优的方法》时,先把图中的问题、关键词、操作和验收标准对上,再读正文会更省力。读完后,最好能用自己的项目重新讲一遍。

通过合理运用这些超参数调优技巧,我们可以为前面提到的特征工程成果提供支持,从而进一步提升模型的整体性能。在下一篇中,将深入了解网格搜索与随机搜索的优缺点和更多实用技巧。希望大家持续关注这个系列教程,掌握自动机器学习的精髓。

继续阅读

顺着这个系列继续看

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...