Skip to content

算法流程   Algorithm Process

模型训练主要包括下面的步骤,您可以选择启用或禁用某些步骤,下面是每个步骤的大致介绍

1. simple_algorithms

我们建议您在开始使用更复杂的机器学习方法前先使用下面的算法检查您的任务是否需要使用机器学习方法:

-Baseline -Decision Tree -Linear

您可以使用上面的算法逐一训练模型。通过分析每个模型的结果,您可以了解您的任务的复杂性:

-Baseline将提供基线结果,它不涉及复杂的机器学习。 -Baseline返回分类任务训练数据中最常见的标签。 -Baseline返回回归任务训练数据中目标的平均值。 - 如果另外的两个模型的结果比Baseline的结果好得多,则证明使用机器学习是合理的是合理的。

2. default_algorithms

在此步骤中,使用默认超参数训练模型。在此步骤中,您可以比较其他数据集的默认模型的结果,并直观地了解问题的复杂性。

此步骤支持以下算法:

  • Random Forest,
  • Extra Trees,
  • Xgboost,
  • LightGBM,
  • CatBoost,
  • Neural Network,
  • Nearest Neighbors

3. not_so_random

此步骤对定义的一组超参数执行随机搜索。

此步骤支持以下算法:

  • Random Forest,
  • Extra Trees,
  • Xgboost,
  • LightGBM,
  • CatBoost,
  • Neural Network,
  • Nearest Neighbors

对于每种算法,最多可以训练start_random_models-1个模型 (-1是因为default_algorithms步骤中已经有了一个模型)。

例如,如果您设置:

automl = AutoML(algorithms=["Xgboost", "CatBoost"], start_random_models=3)

则将训练:

  • 使用默认超参数的Xgboost1模型和CatBoost1模型(default_algorithms步骤)
  • Xgboost2模型和CatBoost2模型,具有随机选择的超参数(not_so_random步骤)

跳过not_so_random步骤

  • 请在AutoML构造函数中设置start_random_models=1以跳过not_so_random步骤。

4. feature_engineering

构造优质特征

优质特征是根据原始特征构造的新特征,具有很强的预测能力。

优质特征在训练时仅构造一次。

优质特征创建后会被添加到原始数据中,并训练以下算法:

  • Xgboost
  • CatBoost
  • LightGBM

每个算法都有经过训练的1模型。模型中使用的超参数是从之前步骤中性能最佳的模型中选择的(default_algorithmsnot_so_random)。

insert_random_feature

此步骤是特征选择过程的第一部分。

在此步骤中:

  • 将随机特征添加到原始数据中。(新列random_feature将出现在数据中)
  • 从之前的步骤中选择最佳模型,并使用其超参数来训练插入了新特征的模型。
  • 训练后,计算特征重要性。
  • 重要性低于random_feature的特征将保存到drop_features.json文件(可在results_path中找到)。

跳过insert_random_feature步骤

  • 请在AutoML构造函数中设置feature_selection=False以跳过insert_random_feature步骤。
  • 如果禁用此步骤,features_selection步骤也将被跳过。

features_selection

此步骤是特征选择过程的第二部分。

在这一步中:

  • 选择前面的步骤中的每个算法的最佳模型。
  • 重用其超参数,并且仅使用选定的特征进行训练。

这一步支持以下算法:

  • Random Forest,
  • Extra Trees,
  • Xgboost,
  • LightGBM,
  • CatBoost,
  • Neural Network

跳过features_selection步骤

  • 请在AutoML构造函数中设置feature_selection=False以跳过features_selection步骤。
  • 如果禁用此步骤,insert_random_feature步骤也将被跳过

5. hill_climbing

此步骤对模型进行微调。

可以有多个hill_climbing步骤,它们在步骤名称末尾用计数器进行描述。 例如,hill_climbing_1hill_climbing_2、...。
hill_climbing的步数由 AutoML 构造函数中的 hill_climbing_steps 参数控制。

在每个hill_climbing步骤中,每个算法中表现最好的模型都会得到进一步调整。 所选顶级模型的数量由top_models_to_improve参数控制。

如何微调超参数?

  • 例子:
  • 对于Xgboostmax_depth=5
  • 选择max_depth=5以进行进一步调整。 max_depth 可以从数组 [1, 2, 3, 4, 5, 6, 7, 8, 9] 中获取值。
  • 而后创建两个新的Xgboost模型,它们的max_depth=4max_depth=6

跳过hill_climbing步骤

  • 请在AutoML构造函数中设置hill_climbing_steps=0以跳过hill_climbing步骤。

6. 模型集成

ensemble

ensemble步骤中,之前步骤中的所有模型都会被集成。

跳过ensemble步骤

  • 请在AutoML构造函数中设置train_ensemble=False以跳过ensemble步骤。

stack

在此步骤中,模型被堆叠(级别1)。

跳过stack步骤

  • 请在AutoML构造函数中设置stack_models=False以跳过stack步骤。

ensemble_stacked

ensemble_stacked期间,之前步骤中的所有模型都会被集成(堆叠和非堆叠模型)。要启用此步骤,AutoML中的stack_models参数应为True

跳过‘ensemble_stacked’步骤

  • 请在AutoML构造函数中设置train_ensemble=False以跳过ensemble步骤。