这是我的第352篇原创文章。
一、引言
在机器学习和人工智能领域,优化超参数以提升模型性能是一项至关重要的任务。SMAC3,全称Sequential Model-based Algorithm Configuration,是一个强大且灵活的贝叶斯优化包,专注于高效地寻找算法的最佳超参数配置。该项目由自动机器学习(AutoML)领域的专家团队开发,旨在简化并加速这一过程。SMAC3的核心是结合了贝叶斯优化与激进的赛车机制。这种组合策略能够智能地预测超参数配置的效果,并通过比较选择更优的配置,从而减少不必要的试验。其Python3实现保证了代码的易用性和可扩展性,而C++编写的随机森林提升了运行效率。
Install SMAC via PyPI:
pip install smac
这个库目前只适用于Linux操作系统环境,对于Windows环境使用需要借助WSL。
二、实现过程
2.1 准备数据
data = pd.read_csv(r'Dataset.csv')
df = pd.DataFrame(data)
## 数据基本信息
print(df.head())
df:
2.2 数据集划分
target = 'target'
features = df.columns.drop(target)
print(data["target"].value_counts()) # 顺便查看一下样本是否平衡
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2, random_state=0)
2.3 定义训练函数
def train(config: Configuration, seed: int = 0) -> float:
classifier = SVC(C=config["C"], random_state=seed)
scores = cross_val_score(classifier, X_train, y_train, cv=5)
return 1 - np.mean(scores)
2.4 定义配置空间
configspace = ConfigurationSpace({"C": (0.100, 1000.0)})
2.5 定义优化环境的方案
scenario = Scenario(configspace, deterministic=True, n_trials=200)
2.6 使用SMAC寻找最优的配置或参数
smac = HyperparameterOptimizationFacade(scenario, train)
incumbent = smac.optimize()
print("Best found configuration: ", incumbent)
结果:
最优的C是707.7831968884921。
作者简介:
读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。