算法流程 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)
则将训练:
- 使用默认超参数的
Xgboost
的1
模型和CatBoost
的1
模型(default_algorithms
步骤) Xgboost
的2
模型和CatBoost
的2
模型,具有随机选择的超参数(not_so_random
步骤)
跳过not_so_random
步骤
- 请在
AutoML
构造函数中设置start_random_models=1
以跳过not_so_random
步骤。
4. feature_engineering
构造优质特征
优质特征是根据原始特征构造的新特征,具有很强的预测能力。
优质特征在训练时仅构造一次。
优质特征创建后会被添加到原始数据中,并训练以下算法:
Xgboost
CatBoost
LightGBM
每个算法都有经过训练的1
模型。模型中使用的超参数是从之前步骤中性能最佳的模型中选择的(default_algorithms
和not_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_1
、hill_climbing_2
、...。
hill_climbing
的步数由 AutoML
构造函数中的 hill_climbing_steps
参数控制。
在每个hill_climbing
步骤中,每个算法中表现最好的模型都会得到进一步调整。
所选顶级模型的数量由top_models_to_improve
参数控制。
如何微调超参数?
- 例子:
- 对于
Xgboost
,max_depth=5
。 - 选择
max_depth=5
以进行进一步调整。max_depth
可以从数组[1, 2, 3, 4, 5, 6, 7, 8, 9]
中获取值。 - 而后创建两个新的
Xgboost
模型,它们的max_depth=4
和max_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
步骤。