自动化机器学习(AutoML)在实时应用和模拟人类任务中扮演着至关重要的角色。AutoML通过自动化机器学习项目生命周期的主要组成部分,减少了人为干预,自动为给定数据集找到一个合理的机器学习模型管道。通常,一个优秀的机器学习模型需要良好的机器学习知识、编程技能、数学(线性代数)专长和领域知识。AutoML使得以下机器学习管道组成部分可以针对预测建模任务进行优化:数据预处理、特征工程/提取和特征选择、通过选择适当的模型族/算法进行模型训练、超参数调整、模型评估。
AutoML的优势在于它可以帮助快速找到一个好的机器学习模型管道,减少用户干预。它减少了需要编写的代码量,使建模变得简单快捷。AutoML还提供了一个排行榜,用于比较给定数据集的各种模型族/算法。这对于机器学习初学者、从业者和非专家特别有益,使他们能够更多地关注问题而不是模型。有许多开源的AutoML库/框架,如Auto-Sklearn、TPOT、PyCaret、H2O AutoML、Hyperopt、Auto-Keras等。此外,许多组织如Google、Amazon、Microsoft、IBM等现在提供AutoML作为服务,只需上传数据集,就可以在几次点击中下载一个好的机器学习模型管道。
本文将探讨一个AutoML库EvalML,并学习如何将其用于二元分类任务。EvalML是一个开源的Python库,用于自动构建、优化和评估给定数据集的机器学习管道。像其他AutoML库一样,它也自动执行数据预处理、特征工程、选择、模型构建、超参数调整、交叉验证等。
要安装EvalML,可以在终端使用以下命令:pip install evalml
。EvalML支持多种监督学习任务/问题,如回归、分类(包括二元和多类)、时间序列分析(包括时间序列回归和分类)。可以使用以下命令获取可用问题类型的完整列表:import evalml; evalml.problem_types.problem_types.ProblemTypes.all_problem_types
。机器学习模型通常使用一些评估矩阵/度量来评估。评估矩阵的选择取决于手头的问题类型、数据集、业务约束和要求。EvalML还包括一个目标函数库(评估度量,如R平方、精确度、召回率、F1分数等)。在EvalML实现中,默认的目标函数是分类问题的对数损失和回归问题的R平方,但它可以很容易地定制。使用以下命令获取EvalML中可用目标函数的完整列表:evalml.objectives.get_all_objective_names()
。
以Kaggle上的“收入分类”数据集为例,演示EvalML的使用。这里的预测任务是基于人口普查数据判断收入是否超过每年5万美元。数据集包含大约32.5K人的15个个体参数(如年龄、工作类别、职业、婚姻状况、关系、资本收益、资本损失、母国等)。根据人口普查数据,大多数人(约76%)每年收入少于5万美元,而一小部分人(约24%)收入超过5万美元。
为了访问完整的Python代码,请访问。首先,将数据分为训练和测试集,用于训练和测试模型管道。EvalML提供了一个实用程序方法split_data()
来执行训练-测试分割。由于收入分类是二元分类任务,因此将problem_type
参数设置为“binary”,并将test_size
参数值设置为0.2,以实现80:20的分割。
EvalML使用不同的数据结构,称为DataTable
,以根据其数据类型处理每个特征,用于预处理和特征提取。EvalML还使用开源库Woodwork
来检测和正确处理每个特征。EvalML还允许手动自定义文本列的逻辑类型。
EvalML有一个内置的接口/工具AutoMLSearch
,用于自动从一系列管道中选择最佳管道,以确定收入是否超过5万美元。而不是显式执行各种操作,如数据预处理(缺失值插补、标准化、独热编码等)、模型训练、评估、超参数调整等,AutoMLSearch
自动化这些步骤,并返回最佳模型管道。AutoMLSearch
还提供许多定制选项(如problem_type
、objective
、allowed_pipelines
、allowed_model_families
、集成等),以改善预测结果。