互联网资讯 / 人工智能 · 2023年12月8日 0

手动优化机器学习模型超参数的方法

手动优化机器学习模型超参数的方法

机器学习算法通常具有超参数,这些超参数使得算法能够针对特定数据集进行定制。

虽然我们可以理解超参数的影响,但对它们在特定数据集上的具体作用以及在学习过程中交互的能力,可能并不总是清楚。因此,调整算法超参数的值是一个重要的部分。

常见的超参数优化方法包括简单的网格搜索和随机搜索。另一种方法是使用随机爬山算法来优化算法的超参数。

在本教程中,您将学习如何手动优化机器学习算法的超参数。完成教程后,您将了解:

您可以使用随机搜索来替代网格搜索和随机搜索。

如何利用随机爬山算法优化算法的超参数。

本教程分为几个部分:

手动超参数优化

感知器超参数优化

XGBoost 超参数优化

机器学习模型需要设置超参数,以便为特定数据集自定义模型。一般来说,超参数对模型的影响是已知的,但如何为给定的数据集选择最佳超参数及它们的相互作用的组合则具有挑战性。更好的方法是系统地搜索模型超参数的不同值,然后选择一个子集,使模型在给定数据集上获得最佳性能。这称为超参数优化或超参数调节。

常见的超参数调节方法包括网格搜索和随机搜索,但也可以使用一系列不同的优化算法。

网格搜索法定义为超参数值的网格并在该网格中评估每个位置。

网格搜索适合用于组合检查,这些组合通常表现良好。随机搜索非常适合发现和获取您可能不会直观猜测的超参数组合,尽管它通常需要更多时间来执行。

有关网格搜索和随机搜索以进行超参数调节的更多信息,请参见以下链接:

随机搜索和网格搜索的超参数优化

本教程分为几个部分,分别介绍手动超参数优化、感知器超参数优化和XGBoost超参数优化。

机器学习模型具有必须设置的超参数,以便针对特定数据集自定义模型。通常,超参数对模型的一般影响是已知的,但如何为给定数据集选择最佳超参数及其相互作用的组合则非常具有挑战性。

在进行模型的超参数调节之前,您可以使用默认的超参数来建立性能基准。

我们将通过 Repeated Stratified K-Fold 类使用重复分层 K 折交叉验证来验证模型。下表列出了在我们合成二进制分类数据集中的使用默认超参数评估感知器模型的完整示例。

# define a binary classification dataset

# define the total iterations

# step size in the search space

# perform the Hill climbing algorithm on the XGBoost model’s hyperparameters

# define the objective function

在定义XGBoost的超参数之前,您可以使用默认的超参数来建立性能基准。我们将使用与上一次相同的合成二进制分类数据集,并使用重复分层K折交叉验证的相同测试工具。

下表列出了使用默认超参数评估XGBoost模型的完整示例。

# xgboost with default hyperparameters for binary classification

尽管XGBoost库具有自己的Python API,但我们可以通过XGBClassifier包装器类将XGBoost模型与scikit-learn结合使用。可以使用实例化模型的实例,就像将其用于模型评估的任何其他scikit-learn类一样。

# define the model

# define the evaluation procedure

运行示例将在每次迭代中评估模型,并返回最佳配置和结果。

注意:由于算法或评估程序的随机性,或者数值精度的差异,您的结果可能会有所不同。考虑运行该示例几次并比较平均结果。

在这种情况下,我们可以看到,具有默认超参数的模型实现了约84.9%的分类精度。我们希望通过优化的超参数能够实现更好的性能。

>0, cfg=[[0.099469,20,…

接下来,我们可以使用随即爬山算法来优化XGBoost模型的超参数。我们可能要针对XGBoost模型优化多个超参数。

有关如何调优XGBoost模型的概述,请参见以下链接:

如何配置梯度提升算法的超参数

运行示例将显示出如何使用随机爬山来优化XGBoost模型的超参数。

最终,您应该能够自信地应用这些知识来手动优化机器学习模型的超参数。

[[[IMG_1]]]
[[[IMG_2]]]
[[[IMG_3]]]