利用TPOT自动完成机器学习
1 概述
2 使用TPOT
2.1 TPOT代码
2.2 评估函数
2.3 内置TPOT配置
2.4 定制TPOT的操作符和参数
2.5 NOTE
3 TPOT API
4 参考文献
首先,什么是自动化机器学习?
正如Sebastian Raschka描述的那样,假如说计算机程序是关于自动化的,那么机器学习可以看做是“关于自动化的自动化”。那么自动化机器学习就是关于自动化的自动化的自动化。程序通过管理重复的任务来减轻我们的压力;机器学习帮助计算机如何最好的处理这些重复的任务;自动化机器学习帮助计算机学习如何优化上面的结果。
这种思想很有用处,尽管我们之前会担心调超参数。自动化机器学习通过尝试一些列不同的方法,最终会采用最好的方式来调参,从而得到最优的结果。
1 概述
TPOT是一种基于遗传算法优化机器学习管道(pipeline)的Python自动机器学习工具。简单来说,就是TPOT可以智能地探索数千个可能的pipeline,为数据集找到最好的pipeline,从而实现机器学习中最乏味的部分。
从下图中我们可以看到,TPOT可以自动地完成特征工作(特征选择,特征预处理,特征构建等),同时也可以进行模型的选择和参数的调优。
机器学习pipeline
更重要地是,一旦TPOT完成搜索,TPOT同时也提供了Python代码。通过这个代码,我们可以具体地知道TPOT获得最优性能时的具体pipeline的内容,这对于后续修改是十分方便的!
TPOT——pipeline
2 使用TPOT
2.1 TPOT代码
在官方文档的基础上,自己整理出了如下的内容。
TPOT的接口,与scikit-learn很类似。
TPOT可以像任何常规的Python模块一样导入:
from tpot import TPOTClassifier
然后创建一个TPOT实例如下:
pipeline_optimizer = TPOTClassifier()
当然,TPOTRegressor()也可以。
一些带有定制TPOT参数的示例代码可能如下:
pipeline_optimizer = TPOTClassifier(generations=5, population_size=20, cv=5, random_state=42, verbosity=2)
现在,可以利用fit函数来寻找最优的管道:
pipeline_optimizer.fit(X_train, y_train)
fit函数初始化了遗传算法,以找到基于平均k倍交叉验证的最高评分管道,然后对整个提供的样本进行训练,TPOT实例可以作为一个合适的模型使用。
然后,可以使用score函数来评估测试集中的最终管道:
print(pipeline_optimizer.score(X_test, y_test))
最后,可以把TPOT将相应的Python代码导出到文本文件中:
pipeline_optimizer.export(‘tpot_exported_pipeline.py’)
下面是一个完整的示例脚本,使用TPOT优化管道,对其进行评分,并将最好的管道导出到文件中。
from tpot import TPOTClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
digits = load_digits()
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target,
train_size=0.75, test_size=0.25)
pipeline_optimizer = TPOTClassifier(generations=5, population_size=20, cv=5,
random_state=42, verbosity=2)
pipeline_optimizer.fit(X_train, y_train)
print(pipeline_optimizer.score(X_test, y_test))
pipeline_optimizer.export(‘tpot_exported_pipeline.py’)
2.2 评估函数
TPOT允许自定义评分函数。具体例子可以参看Scoring Functions。
2.3 内置TPOT配置
TPOT提供了一些默认的操作符和参数配置,它可以很好地优化机器学习管道。下面是TPOT当前内置配置的列表。它有4种:
Default TPOT:默认的参数,在一些大数据集上可能需要较长时间。
TPOT light:与Default TPOT相比,使用了更简单、快速运行的操作符,因此TPOT light对于查找用于分类或回归问题的快速简单的管道非常有用。
TPOT MDR:专门用于全基因组关联研究(GWAS)
TPOT sparse:带有one-hot编码,且支持稀疏矩阵。
2.4 定制TPOT的操作符和参数
除了TPOT所带来的默认配置之外,在某些情况下,限制TPOT所考虑的算法和参数是很有用的(用于减少寻优的时间等)。出于这个原因,TPOT允许用户为TPOT提供其操作符和参数的自定义配置。
自定义TPOT配置必须采用嵌套字典格式,举一个例子
from tpot import TPOTClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
digits = load_digits()
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target,
train_size=0.75, test_size=0.25)
tpot_config = {
‘sklearn.naive_bayes.GaussianNB’: {
},
'sklearn.naive_bayes.BernoulliNB': {'alpha': [1e-3, 1e-2, 1e-1, 1., 10., 100.],'fit_prior': [True, False]
},'sklearn.naive_bayes.MultinomialNB': {'alpha': [1e-3, 1e-2, 1e-1, 1., 10., 100.],'fit_prior': [True, False]
}
}
tpot = TPOTClassifier(generations=5, population_size=20, verbosity=2,
config_dict=tpot_config)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export(‘tpot_mnist_pipeline.py’)
这样,TPOT寻找最优的pipeline,就只会在tpot_config中寻找了,无疑大大减少了时间复杂度,当然,准确性能会下降。
2.5 NOTE
搜索整个管道空间是特别耗时的。认识到原因是必要的,在默认的TPOT参数下(100 generations with 100 population size),TPOT将在完成前评估1万个管道配置。考虑一个网格搜索1万个超参数组合用于机器学习算法以及网格搜索需要多长时间。用10倍的交叉验证来评估这1万个模型,这意味着大约有10万个模型在一个网格搜索的训练数据中被匹配和评估。这是一个耗时的过程,即使对于像决策树这样的简单模型也是如此。
典型的TPOT运行将需要数小时到数天才能完成(除非是一个小数据集),但是可以中断运行,并看到目前为止最好的结果。TPOT还提供warm_start参数,可以从中断的地方重新启动之前运行的TPOT。
3 TPOT API
以TPOTRegressor为例,分类问题一样。
class tpot.TPOTRegressor(generations=100, population_size=100,
offspring_size=None, mutation_rate=0.9,
crossover_rate=0.1,
scoring=‘neg_mean_squared_error’, cv=5,
subsample=1.0, n_jobs=1,
max_time_mins=None, max_eval_time_mins=5,
random_state=None, config_dict=None,
warm_start=False,
memory=None,
periodic_checkpoint_folder=None,
early_stop=None,
verbosity=0,
disable_update_check=False)
在默认情况下,TPOTRegressor将搜索广泛的监督的回归模型,包括预处理,特征选择,学习器和它们的超参数。当然,TPOTRegressor可以完全自己定制。
参数,属性和方法的详情可以参考如下。
下面列出主要的参数和方法:
参数:
generations: int, optional (default=100),运行管道优化过程的迭代次数。一定是正数。
一般来说,值越大,性能越好。
TPOT将评估population_size+generations×offspring_size的规模。
population_size: int, optional (default=100),在每一代遗传中保留的个体数。一定是正数。
一般来说,值越大,性能越好。
offspring_size: int, optional (default=100),在每一次遗传过程中产生的后代数量。一定是正数。
mutation_rate: float, optional (default=0.9),变异率,采用默认值即可。
crossover_rate: float, optional (default=0.1),交叉率,采用默认值即可。
scoring: string or callable, optional (default=‘neg_mean_squared_error’),回归问题中用于评估给定管道的质量的函数。可以使用以下内置评分函数:
‘neg_median_absolute_error’, ‘neg_mean_absolute_error’, ‘neg_mean_squared_error’, ‘r2’
cv: int, cross-validation generator, or an iterable, optional (default=5)
subsample: float, optional (default=1.0),在TPOT优化过程中使用的训练样本的比例。必须在0到1之间。
n_jobs: integer, optional (default=1)
max_time_mins: integer or None, optional (default=None),TPOT需要多少分钟来优化管道。
max_eval_time_mins: integer, optional (default=5),TPOT需要多少分钟来评估一个管道。
random_state: integer or None, optional (default=None),使用这个参数来确保TPOT每次运行时都会有相同的结果。
config_dict: Python dictionary, string, or None, optional (default=None),用于定制TPOT在优化过程中搜索的操作符和参数的配置字典。
warm_start: boolean, optional (default=False),表明TPOT实例是否会重用以前调用fit()的入口。
early_stop: integer, optional (default: None)
verbosity: integer, optional (default=0),
0,TPOT将不会打印任何东西,
1,将打印很少的信息,
2,TPOT将会打印更多的信息并提供一个进度条
3,TPOT将打印所有内容,并提供一个进度条
方法:
fit(features, target, sample_weight=None, groups=None),在给定的训练数据上运行TPOT优化过程。
predict(features),使用优化的管道来预测测试集的目标值。
score(testing_features, testing_target),使用用户指定的评分函数在给定的测试数据上返回优化的管道的得分。
export(output_file_name),将优化的管道导出为Python代码。
4 参考文献
【1】TPOT官方文档
【2】TPOT github
————————————————
版权声明:本文为CSDN博主「anshuai_aw1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/anshuai_aw1/article/details/82498947
利用TPOT自动完成机器学习相关推荐
- TPOT自动选择机器学习模型和参数--回归示例
前两篇博客写了在anacoda下安装tpot库和使用tpot做分类的例子,这篇是写做回归的例子 anacoda下安装tpot库 使用TPOT自动选择scikit-learn机器学习模型和参数--分类示 ...
- tpot自动训练机器学习模型
tpot 自动训练模型包 Consider TPOT your Data Science Assistant. TPOT is a Python Automated Machine Learning ...
- 【机器学习PAI实战】—— 玩转人工智能之利用GAN自动生成二次元头像
前言 深度学习作为人工智能的重要手段,迎来了爆发,在NLP.CV.物联网.无人机等多个领域都发挥了非常重要的作用.最近几年,各种深度学习算法层出不穷, Generative Adverarial Ne ...
- 【机器学习PAI实战】—— 玩转人工智能之利用GAN自动生成二次元头像...
模型训练与在线预测服务.推荐算法四部曲.机器学习PAI实战.更多精彩,尽在 开发者分会场 [机器学习PAI实战]-- 玩转人工智能之综述 [机器学习PAI实战]-- 玩转人工智能之商品价格预测 [机器 ...
- 使用TPOT自动选择scikit-learn机器学习模型和参数
声明:原文地址:使用TPOT自动选择scikit-learn机器学习模型和参数,此文是本人学习原文的结果,略有改动.侵删. 在上一篇博客中我们在anacoda中安装了tpot: anacoda下安装T ...
- TPOT自动机器学习参数详解
TPOT自动机器学习参数详解 分类: 代码 class tpot.TPOTClassifier(generations=100, population_size=100,offspring_size= ...
- ML之回归预测:利用九大类机器学习算法对无人驾驶系统参数(2018年的data,18+2)进行回归预测+评估九种模型性能
ML之回归预测:利用九大类机器学习算法对无人驾驶系统参数(2018年的data,18+2)进行回归预测+评估九种模型性能 相关文章 ML之回归预测:利用九大类机器学习算法对自动驾驶系统参数(2018年 ...
- 自动化机器学习(二)自动构建机器学习流水线
文章目录 技术介绍 核心技术栈 实现 数据 实现 类库加载与数据读取 参数 方法: 总结 技术介绍 自动化机器学习(一)超参数自动优化 自动化机器学习就是能够自动建立机器学习模型的方法,其主要包含三个 ...
- 谷歌最新AI产品——AutoML Vision,可以自动设计机器学习模型
今天凌晨时分,李飞飞通过一篇博客文章发布了谷歌最新AI产品--AutoML Vision,可以自动设计机器学习模型. 我很荣幸地宣布AutoML Vision面世.无需精通机器学习,每个人都能用这款A ...
最新文章
- 区块链软件公司用区块链技能重塑科学出书社
- 浅析综合布线系统中检测双绞线的几种方式
- make 调试和传参
- 梯度下降和EM算法,kmeans的em推导
- 微软、谷歌、百度等公司经典面试100题[第1-60题]——自己的实现[转]
- max(X,Y),min(X,Y)的期望求解
- 理解PackageManager
- python使用大数据分析师工资待遇_2020年大数据分析师工资多少
- 如何营造游戏的打击感(一)
- 设计模式学习之假如你是一个建造者(建造者模式)
- python决策树算法代码_决策树算法的Python实例
- Python趣味算法入门 - 百钱百鸡
- MAC OS X 问题库
- linux学习系列-常用命令的使用
- [全程建模]关于UML与新概念名词的问题讨论
- android按钮背景颜色函数,Android按钮背景颜色(Android button background color)
- Parasoft参与起草《机器人安全系统编码规则(C++)》正式发布
- CDN(内容分发网络)技术原理
- difference()、differenceBy()、differenceWith()
- Vue(七)SPA 单页面及应用方式
热门文章
- R语言mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model)GAM(对非线性变量进行样条处理、计算RMSE、R方、调整R方、可视化模型预测值与真实值的曲线)
- (Mac版)WebStorm常用快捷键
- Google Cloud Platform 免费送300美刀,赶紧体验一波
- #奇数阶魔方阵c语言
- 3.19	外协加工(通过BOM体现加工物料总成本,非系统标准工序外协功能)
- 【移动端】如何在移动端调出纯数字键盘
- ES9218PC SABRE HiFi SoC具有2V 耳机放大器 32位立体声移动DAC
- android rtorrent 编译,rtorrent 文本方式的bt下载工具
- jenkins汉化一部分问题(一半中文一半英文)解决
- php eof 使用函数_PHP中EOF的用法介绍(附示例)