automl_algorithm#

支持 EvalML 的 AutoML 算法。

包内容#

类摘要#

AutoMLAlgorithm

支持 EvalML 的 AutoML 算法的基类。

DefaultAlgorithm

一种包含两种模式的自动化机器学习 (AutoML) 算法:快速模式和长期模式,其中快速模式是长期模式的子集。

IterativeAlgorithm

一种自动化机器学习 (AutoML) 算法,它首先使用默认参数拟合一轮基础流水线,然后按照性能顺序对每个流水线进行一轮参数调优。

异常摘要#

内容#

class evalml.automl.automl_algorithm.AutoMLAlgorithm(allowed_pipelines=None, allowed_model_families=None, excluded_model_families=None, allowed_component_graphs=None, search_parameters=None, tuner_class=None, text_in_ensembling=False, random_seed=0, n_jobs=-1)[source]#

支持 EvalML 的 AutoML 算法的基类。

此类代表自动化机器学习 (AutoML) 算法。它封装了 AutoML 搜索背后的决策逻辑,决定接下来评估哪些流水线以及如何配置流水线的参数集。

要使用此接口,必须定义一个 next_batch 方法,该方法返回下一组要在训练数据上评估的流水线。该方法可以访问记录自先前批次的状态和结果,尽管这些信息在此基类中没有被普遍跟踪。重写 add_result 是在必要时记录流水线评估信息的便捷方法。

参数
  • allowed_pipelines (list(class)) – 一个 PipelineBase 子类列表,指示搜索中允许的流水线。默认为 None,表示允许此问题类型的所有流水线。

  • search_parameters (dict) – 为流水线迭代指定的搜索参数范围。

  • tuner_class (class) – Tuner 的一个子类,用于为每个流水线查找参数。默认为 None,表示将使用 SKOptTuner。

  • text_in_ensembling (boolean) – 如果为 True 且集成为 True,则 n_jobs 将设置为 1,以避免下游 sklearn 堆叠与 nltk 相关的问题。默认为 None。

  • random_seed (int) – 随机数生成器的种子。默认为 0。

方法

add_result

注册评估流水线的结果。

batch_number

返回迄今为止已推荐的批次数量。

default_max_batches

返回 AutoMLSearch 默认应运行的最大批次数量。

next_batch

获取下一批要评估的流水线。

num_pipelines_per_batch

返回第 n 个批次中的流水线数量。

pipeline_number

返回迄今为止已推荐的流水线数量。

add_result(self, score_to_minimize, pipeline, trained_pipeline_results)[source]#

注册评估流水线的结果。

参数
  • score_to_minimize (float) – 此流水线在主要目标上获得的分数,已转换,以便较低的值表示更好的流水线。

  • pipeline (PipelineBase) – 用于计算分数的训练过的流水线对象。

  • trained_pipeline_results (dict) – 训练流水线的结果。

引发

PipelineNotFoundError – 如果流水线不允许在搜索中使用。

property batch_number(self)#

返回迄今为止已推荐的批次数量。

property default_max_batches(self)#

返回 AutoMLSearch 默认应运行的最大批次数量。

abstract next_batch(self)[source]#

获取下一批要评估的流水线。

返回

一个 PipelineBase 子类实例列表,可用于训练和评估。

返回类型

list[PipelineBase]

abstract num_pipelines_per_batch(self, batch_number)[source]#

返回第 n 个批次中的流水线数量。

参数

batch_number (int) – 要计算流水线数量的批次。

返回

给定批次中的流水线数量。

返回类型

int

property pipeline_number(self)#

返回迄今为止已推荐的流水线数量。

exception evalml.automl.automl_algorithm.AutoMLAlgorithmException[source]#

在计算 AutoML 算法期间遇到错误时引发的异常。

class evalml.automl.automl_algorithm.DefaultAlgorithm(X, y, problem_type, sampler_name, allowed_model_families=None, excluded_model_families=None, tuner_class=None, random_seed=0, search_parameters=None, n_jobs=1, text_in_ensembling=False, top_n=3, ensembling=False, num_long_explore_pipelines=50, num_long_pipelines_per_batch=10, allow_long_running_models=False, features=None, run_feature_selection=True, verbose=False, exclude_featurizers=None)[source]#

一种包含两种模式的自动化机器学习 (AutoML) 算法:快速模式和长期模式,其中快速模式是长期模式的子集。

  1. 朴素流水线
    1. 使用默认预处理流水线运行基线

    2. 使用默认预处理流水线运行朴素线性模型

    3. 使用默认预处理流水线运行基本 RF 流水线

  2. 带特征选择的朴素流水线
    1. 后续流水线将使用 SelectedColumns 转换器和选定的特征

此时,我们有一个用于预处理和特征选择的单一流水线候选

  1. 带预处理组件的流水线
    1. 扫描其余的估计器(我们当前的批次 1)。

  2. 第一次集成运行

快速模式到此结束。开始长期模式。

  1. 运行排名前 3 的估计器
    1. 生成 50 个随机参数集。在一个批次中运行全部 150 个

  2. 第二次集成运行

  3. 无限期重复这些,直到满足停止准则
    1. 对于之前排名前 3 的每个估计器,从调优器中采样 10 个参数。在一个批次中运行全部 30 个

    2. 运行集成

参数
  • X (pd.DataFrame) – 训练数据。

  • y (pd.Series) – 目标数据。

  • problem_type (ProblemType) – 与训练数据相关的问题类型。

  • sampler_name (BaseSampler) – 用于预处理的采样器。

  • tuner_class (class) – Tuner 的一个子类,用于为每个流水线查找参数。默认为 None,表示将使用 SKOptTuner。

  • random_seed (int) – 随机数生成器的种子。默认为 0。

  • search_parameters (dict or None) – 为流水线迭代指定的流水线级别参数和自定义超参数范围。超参数范围必须作为 skopt.space 对象传入。默认为 None。

  • n_jobs (int or None) – 描述用于流水线的并行级别的非负整数。默认为 -1。

  • text_in_ensembling (boolean) – 如果为 True 且集成为 True,则 n_jobs 将设置为 1,以避免下游 sklearn 堆叠与 nltk 相关的问题。默认为 False。

  • top_n (int) – 在长期模式中使用的前 n 个流水线数量。

  • num_long_explore_pipelines (int) – 在长期模式开始时,对每个前 n 个流水线探索的流水线数量。

  • num_long_pipelines_per_batch (int) – 在长期模式中,每个前 n 个流水线每批次的流水线数量。

  • allow_long_running_models (bool) – 是否允许对大型多类问题使用运行时间较长的模型。如果为 False 且未提供流水线、组件图或模型族,则当多类目标超过 75 个时,AutoMLSearch 将不使用 Elastic Net 或 XGBoost;当多类目标超过 150 个时,将不使用 CatBoost。默认为 False。

  • features (list) – 在 AutoML 流水线中运行 DFS 的特征列表。默认为 None。只有当特征使用的列存在于输入中且特征尚未计算时,才会计算特征。

  • run_feature_selection (bool) – 如果为 True,将运行一个单独的特征选择流水线,并且仅在后续批次中使用选定的特征。如果为 False,将对每个流水线使用所有特征。仅用于默认算法。

  • verbose (boolean) – 是否显示有关流水线构建的日志信息。默认为 False。

  • exclude_featurizers (list[str]) – 从 DefaultAlgorithm 构建的流水线中排除的特征化器组件列表。有效选项包括“DatetimeFeaturizer”、“EmailFeaturizer”、“URLFeaturizer”、“NaturalLanguageFeaturizer”、“TimeSeriesFeaturizer”。

  • allowed_model_families (list(str, ModelFamily)) – 要搜索的模型族。默认为 None,搜索所有模型族。运行 evalml.pipelines.components.utils.allowed_model_families(“binary”) 查看选项。根据问题类型将 binary 更改为 multiclassregression。对于默认算法,这仅适用于非朴素批次中的估计器。

  • excluded_model_families (list(str, ModelFamily)) – 从构建流水线时使用的估计器中排除的模型族列表。对于默认算法,这仅排除非朴素批次中的估计器。

方法

add_result

注册评估流水线的结果。在批次 2 中,从特征选择器中选定的列名将被用于列选择器。此处也更新了关于最佳流水线的信息。

batch_number

返回迄今为止已推荐的批次数量。

default_max_batches

返回 AutoMLSearch 默认应运行的最大批次数量。

next_batch

获取下一批要评估的流水线。

num_pipelines_per_batch

返回第 n 个批次中的流水线数量。

pipeline_number

返回迄今为止已推荐的流水线数量。

add_result(self, score_to_minimize, pipeline, trained_pipeline_results, cached_data=None)[source]#

注册评估流水线的结果。在批次 2 中,从特征选择器中选定的列名将被用于列选择器。此处也更新了关于最佳流水线的信息。

参数
  • score_to_minimize (float) – 此流水线在主要目标上获得的分数,已转换,以便较低的值表示更好的流水线。

  • pipeline (PipelineBase) – 用于计算分数的训练过的流水线对象。

  • trained_pipeline_results (dict) – 训练流水线的结果。

  • cached_data (dict) – 缓存数据的字典,键是模型族。期望格式为 {model_family: {hash1: trained_component_graph, hash2: trained_component_graph…}…}。默认为 None。

property batch_number(self)#

返回迄今为止已推荐的批次数量。

property default_max_batches(self)#

返回 AutoMLSearch 默认应运行的最大批次数量。

next_batch(self)[source]#

获取下一批要评估的流水线。

返回

一个 PipelineBase 子类实例列表,可用于训练和评估。

返回类型

list(PipelineBase)

num_pipelines_per_batch(self, batch_number)[source]#

返回第 n 个批次中的流水线数量。

参数

batch_number (int) – 要计算流水线数量的批次。

返回

给定批次中的流水线数量。

返回类型

int

property pipeline_number(self)#

返回迄今为止已推荐的流水线数量。

class evalml.automl.automl_algorithm.IterativeAlgorithm(X, y, problem_type, sampler_name=None, allowed_model_families=None, excluded_model_families=None, allowed_component_graphs=None, max_batches=None, max_iterations=None, tuner_class=None, random_seed=0, pipelines_per_batch=5, n_jobs=-1, number_features=None, ensembling=False, text_in_ensembling=False, search_parameters=None, _estimator_family_order=None, allow_long_running_models=False, features=None, verbose=False, exclude_featurizers=None)[source]#

一种自动化机器学习 (AutoML) 算法,它首先使用默认参数拟合一轮基础流水线,然后按照性能顺序对每个流水线进行一轮参数调优。

参数
  • X (pd.DataFrame) – 训练数据。

  • y (pd.Series) – 目标数据。

  • problem_type (ProblemType) – 与训练数据相关的问题类型。

  • sampler_name (BaseSampler) – 用于预处理的采样器。默认为 None。

  • allowed_model_families (list(str, ModelFamily)) – 要搜索的模型族。默认为 None,搜索所有模型族。运行 evalml.pipelines.components.utils.allowed_model_families(“binary”) 查看选项。根据问题类型将 binary 更改为 multiclassregression。请注意,如果提供了 allowed_pipelines,此参数将被忽略。

  • excluded_model_families (list(str, ModelFamily)) – 从构建流水线时使用的估计器中排除的模型族列表。

  • allowed_component_graphs (dict) –

    一个列表或 ComponentGraphs 的字典,指示搜索中允许的组件图。格式应遵循 { “Name_0”: [list_of_components], “Name_1”: [ComponentGraph(…)] }

    默认为 None 表示允许此问题类型的所有流水线组件图。设置此字段将导致 allowed_model_families 被忽略。

    例如 allowed_component_graphs = { “My_Graph”: [“Imputer”, “One Hot Encoder”, “Random Forest Classifier”] }

  • max_batches (int) – 要评估的最大批次数量。用于确定集成。默认为 None。

  • max_iterations (int) – 要评估的最大迭代次数。用于确定集成。默认为 None。

  • tuner_class (class) – Tuner 的一个子类,用于为每个流水线查找参数。默认为 None,表示将使用 SKOptTuner。

  • random_seed (int) – 随机数生成器的种子。默认为 0。

  • pipelines_per_batch (int) – 在第一个批次之后,每个批次要评估的流水线数量。默认为 5。

  • n_jobs (int or None) – 描述用于流水线的并行级别的非负整数。默认为 None。

  • number_features (int) – 输入特征中的列数量。默认为 None。

  • ensembling (boolean) – 如果为 True,在遍历完每个允许的流水线类后,在一个单独的批次中运行集成。默认为 False。

  • text_in_ensembling (boolean) – 如果为 True 且集成为 True,则 n_jobs 将设置为 1,以避免下游 sklearn 堆叠与 nltk 相关的问题。默认为 False。

  • search_parameters (dict or None) – 为流水线迭代指定的流水线级别参数和自定义超参数范围。超参数范围必须作为 skopt.space 对象传入。默认为 None。

  • _estimator_family_order (list(ModelFamily) or None) – 指定第一个批次的排序顺序。默认为 None,使用 _ESTIMATOR_FAMILY_ORDER。

  • allow_long_running_models (bool) – 是否允许对大型多类问题使用运行时间较长的模型。如果为 False 且未提供流水线、组件图或模型族,则当多类目标超过 75 个时,AutoMLSearch 将不使用 Elastic Net 或 XGBoost;当多类目标超过 150 个时,将不使用 CatBoost。默认为 False。

  • features (list) – 在 AutoML 流水线中运行 DFS 的特征列表。默认为 None。只有当特征使用的列存在于输入中且特征本身不在输入中时,才会计算特征。

  • verbose (boolean) – 是否显示有关流水线构建的日志信息。默认为 False。

  • exclude_featurizers (list[str]) – 从 IterativeAlgorithm 构建的流水线中排除的特征化器组件列表。有效选项包括“DatetimeFeaturizer”、“EmailFeaturizer”、“URLFeaturizer”、“NaturalLanguageFeaturizer”、“TimeSeriesFeaturizer”。

方法

add_result

注册评估流水线的结果。

batch_number

返回迄今为止已推荐的批次数量。

default_max_batches

返回 AutoMLSearch 默认应运行的最大批次数量。

next_batch

获取下一批要评估的流水线。

num_pipelines_per_batch

返回第 n 个批次中的流水线数量。

pipeline_number

返回迄今为止已推荐的流水线数量。

add_result(self, score_to_minimize, pipeline, trained_pipeline_results, cached_data=None)[source]#

注册评估流水线的结果。

参数
  • score_to_minimize (float) – 此流水线在主要目标上获得的分数,已转换,以便较低的值表示更好的流水线。

  • pipeline (PipelineBase) – 用于计算分数的训练过的流水线对象。

  • trained_pipeline_results (dict) – 训练流水线的结果。

  • cached_data (dict) – 缓存数据的字典,键是模型族。期望格式为 {model_family: {hash1: trained_component_graph, hash2: trained_component_graph…}…}。默认为 None。

引发

ValueError – 如果默认参数不在可接受的超参数范围内。

property batch_number(self)#

返回迄今为止已推荐的批次数量。

property default_max_batches(self)#

返回 AutoMLSearch 默认应运行的最大批次数量。

next_batch(self)[source]#

获取下一批要评估的流水线。

返回

一个 PipelineBase 子类实例列表,可用于训练和评估。

返回类型

list[PipelineBase]

引发

AutoMLAlgorithmException – 如果第一个批次没有报告结果。

num_pipelines_per_batch(self, batch_number)[source]#

返回第 n 个批次中的流水线数量。

参数

batch_number (int) – 要计算流水线数量的批次。

返回

给定批次中的流水线数量。

返回类型

int

property pipeline_number(self)#

返回迄今为止已推荐的流水线数量。