TPOT¶

TPOT 是 Tree-based Pipeline Optimization Tool(基于树的流水线优化工具)的缩写。TPOT 是一款 Python 自动化机器学习工具,它使用遗传编程来优化机器学习流水线。将 TPOT 视为您的数据科学助手。
贡献者¶
TPOT 最近进行了重大重构。该软件包从头开始重写,以提高效率和性能,支持新功能,并修复了大量错误。新功能包括遗传特征选择,显著扩展且更灵活的搜索空间定义方法,多目标优化,以及更模块化的框架,允许更容易地定制演化算法等。在开发过程中,这个新版本被称为“TPOT2”,但现在我们已将之前的 TPOT2 合并到主 TPOT 软件包中。您可以在我们题为“TPOT2: A New Graph-Based Implementation of the Tree-Based Pipeline Optimization Tool for Automated Machine Learning”的 GPTP 论文中了解更多关于这个新版本 TPOT 的信息。
Ribeiro, P. et al. (2024). TPOT2: A New Graph-Based Implementation of the Tree-Based Pipeline Optimization Tool for Automated Machine Learning. In: Winkler, S., Trujillo, L., Ofria, C., Hu, T. (eds) Genetic Programming Theory and Practice XX. Genetic and Evolutionary Computation. Springer, Singapore. https://doi.org/10.1007/978-981-99-8413-8_1
当前版本的 TPOT 由 Cedars-Sinai 开发,开发人员包括
- Pedro Henrique Ribeiro(首席开发人员 - https://github.com/perib, https://www.linkedin.com/in/pedro-ribeiro/)
- Anil Saini (anil.saini@cshs.org)
- Jose Hernandez (jgh9094@gmail.com)
- Jay Moran (jay.moran@cshs.org)
- Nicholas Matsumoto (nicholas.matsumoto@cshs.org)
- Hyunjun Choi (hyunjun.choi@cshs.org)
- Gabriel Ketron (gabriel.ketron@cshs.org) - Miguel E. Hernandez (miguel.e.hernandez@cshs.org)
- Jason Moore (moorejh28@gmail.com)
TPOT 的原始版本主要由宾夕法尼亚大学开发,开发人员包括
- Randal S. Olson (rso@randalolson.com)
- Weixuan Fu (weixuanf@upenn.edu)
- Daniel Angell (dpa34@drexel.edu)
- Jason Moore (moorejh28@gmail.com)
- 以及许多其他慷慨的开源贡献者
许可¶
有关 TPOT 的许可和使用信息,请参阅仓库许可。通常,我们许可 TPOT 的目的是使其尽可能广泛地使用。
TPOT 是自由软件:您可以根据自由软件基金会发布的 GNU 宽通用公共许可证(Lesser General Public License)条款重新分发和/或修改它,该许可证的第 3 版本,或者(由您选择)任何后续版本。
分发 TPOT 是希望它会有用,但没有任何担保;甚至不包括对适销性或特定用途适用性的默示担保。详情请参阅 GNU 宽通用公共许可证。
您应该已经随 TPOT 收到了 GNU 宽通用公共许可证的副本。如果没有,请参阅 https://gnu.ac.cn/licenses/。
文档¶
我们还建议查看 Tutorials 文件夹,其中包含带有示例和指南的 jupyter notebook。
安装¶
TPOT 需要一个正常工作的 Python 安装。
创建 conda 环境(可选)¶
我们建议使用 conda 环境来安装 TPOT,尽管手动安装没有它也能正常工作。
使用的包¶
python version >=3.10, <3.14 numpy scipy scikit-learn update_checker tqdm stopit pandas joblib xgboost matplotlib traitlets lightgbm optuna jupyter networkx dask distributed dask-ml dask-jobqueue func_timeout configspace
我们的 configspaces 中使用的许多超参数范围改编自原始 TPOT 软件包或 AutoSklearn 软件包。
致 M1 Mac 或其他基于 Arm CPU 用户的一点说明¶
在安装 TPOT 之前,您需要使用以下命令直接从 conda 安装 lightgbm 包。
这是为了确保您获得与您的系统兼容的版本。
使用 pip 安装额外功能¶
如果您想利用 TPOT 提供的额外功能以及 scikit-learn
扩展,您可以使用 pip
安装它们。使用这些额外功能安装 TPOT 的命令如下
请注意,虽然这些扩展可以加速 scikit-learn 包,但仍有一些重要的注意事项
这些扩展可能尚未在基于 Arm 的 CPU(例如 M1 Mac)上完全开发和测试。您在此类系统上可能会遇到兼容性问题或性能下降。
我们建议在安装这些额外功能时使用 Python 3.9,因为它提供了更好的兼容性和稳定性。
开发者/最新分支安装¶
如果您使用 git pull 下载,则仓库文件夹将被命名为 TPOT。(注意:此文件夹是包含 setup.py 的那个,而不是其中同名的子文件夹)。如果您下载的是 zip 文件,文件夹可能称为 tpot-main。
使用方法¶
请参阅 Tutorials 文件夹以获取更多说明和示例。
最佳实践¶
1¶
TPOT 使用 dask 进行并行处理。当 Python 进行并行化时,每个模块都会在每个进程中导入。因此,从脚本运行 TPOT 时,将所有代码放在 if __name__ == "__main__"
块内进行保护非常重要。从 notebook 运行 TPOT 时则不需要这样做。
例如
#my_analysis.py
import tpot
if __name__ == "__main__":
X, y = load_my_data()
est = tpot.TPOTClassifier()
est.fit(X,y)
#rest of analysis
2¶
设计自定义目标函数时,避免使用全局变量。
不要这样做
global_X = [[1,2],[4,5]]
global_y = [0,1]
def foo(est):
return my_scorer(est, X=global_X, y=global_y)
而是使用 partial
from functools import partial
def foo_scorer(est, X, y):
return my_scorer(est, X, y)
if __name__=='__main__':
X = [[1,2],[4,5]]
y = [0,1]
final_scorer = partial(foo_scorer, X=X, y=y)
类似地,使用 lambda 函数时也是如此。
不要这样做
def new_objective(est, a, b)
#definition
a = 100
b = 20
bad_function = lambda est : new_objective(est=est, a=a, b=b)
要这样做
def new_objective(est, a, b)
#definition
a = 100
b = 20
good_function = lambda est, a=a, b=b : new_objective(est=est, a=a, b=b)
提示¶
TPOT 不会检查您的数据格式是否正确。它会假定您传入了可以处理传入数据类型的操作符。例如,如果您传入一个带有类别特征和缺失数据的 pandas DataFrame,那么您也应该在您的配置中包含可以处理这些数据特征的操作符。或者,如果您传入 preprocessing = True
,TPOT 将填充缺失值,对类别特征进行独热编码,然后对数据进行标准化。(请注意,这当前是在整个训练集上进行拟合和转换,然后再进行 CV 分割。稍后将有一个选项可以按折叠应用,并使参数可学习。)
将 verbose
设置为 5 在调试时会很有帮助,因为它会打印出失败的流水线生成的错误。
贡献 TPOT¶
欢迎您查看现有议题(issues)以查找可解决的错误或增强功能。如果您对 TPOT 的扩展有任何想法,请提交新的议题,以便我们可以进行讨论。
引用 TPOT¶
如果您在科学出版物中使用 TPOT,请考虑引用以下至少一篇论文
Trang T. Le, Weixuan Fu and Jason H. Moore (2020). Scaling tree-based automated machine learning to biomedical big data with a feature set selector. Bioinformatics.36(1): 250-256.
BibTeX 条目
@article{le2020scaling,
title={Scaling tree-based automated machine learning to biomedical big data with a feature set selector},
author={Le, Trang T and Fu, Weixuan and Moore, Jason H},
journal={Bioinformatics},
volume={36},
number={1},
pages={250--256},
year={2020},
publisher={Oxford University Press}
}
Randal S. Olson, Ryan J. Urbanowicz, Peter C. Andrews, Nicole A. Lavender, La Creis Kidd, and Jason H. Moore (2016). Automating biomedical data science through tree-based pipeline optimization. Applications of Evolutionary Computation, pages 123-137.
BibTeX 条目
@inbook{Olson2016EvoBio,
author={Olson, Randal S. and Urbanowicz, Ryan J. and Andrews, Peter C. and Lavender, Nicole A. and Kidd, La Creis and Moore, Jason H.},
editor={Squillero, Giovanni and Burelli, Paolo},
chapter={Automating Biomedical Data Science Through Tree-Based Pipeline Optimization},
title={Applications of Evolutionary Computation: 19th European Conference, EvoApplications 2016, Porto, Portugal, March 30 -- April 1, 2016, Proceedings, Part I},
year={2016},
publisher={Springer International Publishing},
pages={123--137},
isbn={978-3-319-31204-0},
doi={10.1007/978-3-319-31204-0_9},
url={http://dx.doi.org/10.1007/978-3-319-31204-0_9}
}
Randal S. Olson, Nathan Bartley, Ryan J. Urbanowicz, and Jason H. Moore (2016). Evaluation of a Tree-based Pipeline Optimization Tool for Automating Data Science. Proceedings of GECCO 2016, pages 485-492.
BibTeX 条目
@inproceedings{OlsonGECCO2016,
author = {Olson, Randal S. and Bartley, Nathan and Urbanowicz, Ryan J. and Moore, Jason H.},
title = {Evaluation of a Tree-based Pipeline Optimization Tool for Automating Data Science},
booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference 2016},
series = {GECCO '16},
year = {2016},
isbn = {978-1-4503-4206-3},
location = {Denver, Colorado, USA},
pages = {485--492},
numpages = {8},
url = {http://doi.acm.org/10.1145/2908812.2908918},
doi = {10.1145/2908812.2908918},
acmid = {2908918},
publisher = {ACM},
address = {New York, NY, USA},
}
对 TPOT 的支持¶
TPOT 由 Cedars-Sinai 的 人工智能创新 (A2I) 实验室 开发,获得了 NIH 的资助,资助号为 U01 AG066833 和 R01 LM010098。我们非常感谢 NIH 和 Cedars-Sinai 在本项目开发期间给予的支持。
TPOT 标志由 Todd Newmuis 设计,他慷慨地为本项目贡献了自己的时间。