自动化机器学习与参数优化

在机器学习模型构建过程中,寻找最优算法并调整其超参数是一项必不可少的任务。许多人可能会说:“付出总有回报”,但这个过程既艰巨又复杂。最常用的超参数优化方法是网格搜索,它通过暴力搜索来识别最佳参数组合。然而,最新的研究表明,在网格搜索中随机评估这些参数也能发现最佳选项。这强调了在超参数领域智能搜索的必要性。

AutoML与TPOT简介

接下来,来谈谈自动化机器学习(AutoML)工具。许多AutoML工具通过识别最佳模型来加速机器学习过程。这里特别提到的是最早的AutoML包之一——基于树的管道优化工具(TPOT)。这个开源的Python包能够自动完成机器学习中最繁琐的部分——识别最佳模型。

TPOT是一个无与伦比的资产,如果希望获得非常有竞争力的分类准确性,它是一个真正的划算选择。此外,这个工具还能识别出可以增强分类准确性的人为特征构造器,通过识别新的管道操作符以非常苛刻的方式提升准确性。TPOT的操作符被链接在一起,形成一系列作用于给定数据集的操作,如下所示。

案例研究:Pima印第安人糖尿病数据集

这里有一个案例研究,使用Pima印第安人糖尿病数据集预测5年内糖尿病的发病率。根据这项研究,该问题达到的最大准确率为77.47%。让在相同的场景下使用TPOT AutoML来看看它是如何工作的。

为了演示目的,使用了相同的糖尿病数据集。如果想尝试这个开源Python包解决的其他问题,可以在TPOT开发者的官方GitHub仓库中找到。

import tpot from pandas import read_csv from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import StratifiedKFold from tpot import TPOTClassifier import os file_path = './pima-indians-diabetes.data.csv' df = pd.read_csv(file_path, header=None) data = df.values X, y = data[:, :-1], data[:, -1] X = X.astype('float32') y = LabelEncoder().fit_transform(y.astype('str')) cv = StratifiedKFold(n_splits=10) model = TPOTClassifier(generations=5, population_size=50, cv=cv, scoring='accuracy', verbosity=2, random_state=1, n_jobs=-1) model.fit(X, y) model.export('tpot_data.py')

还重复了上述实验,使用了5折交叉验证。

cv = StratifiedKFold(n_splits=5) model = TPOTClassifier(generations=5, population_size=50, cv=cv, scoring='accuracy', verbosity=2, random_state=1, n_jobs=-1) model.fit(X, y) model.export('tpot_data.py')

结果

使用10折交叉验证选择的最佳管道是:LinearSVC,准确率为77.47%。使用5折交叉验证选择的最佳管道是:XGBClassifier,准确率为78.39%。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485