大家好,我是小寒。
我们都知道在训练机器学习模型时,都需要人工指定一组超参数。
例如,逻辑回归模型具有不同的求解器,用于查找可以为我们提供最佳输出的系数。
每个求解器都使用不同的算法来找到最佳结果,并且这些算法都没有一个比另一个更好。除非你尝试所有这些求解器,否则很难判断哪个求解器在你的数据集上表现最好。
最好的超参数是「主观的」,并且对于每个数据集都不同。
Python 中的 Scikit-learn 库有一组默认的超参数,它们在所有模型上都表现得相当好,「但这些不一定对每个问题都是最好的。」
为你的数据集找到「最佳超参数」的唯一方法是反复试验,这是「超参数优化」背后的主要概念。
「简而言之,超参数优化是一种技术,它涉及搜索一系列值以找到在给定数据集上实现最佳性能的结果子集。」
有两种流行的技术用于执行超参数优化——「网格搜索和随机搜索。」
网格搜索
在执行超参数优化时,我们首先需要定义一个「参数空间」或「参数网格」,其中我们包含一组可用于构建模型的「可能的超参数值。」
然后使用「网格搜索技术」将这些超参数放置在类似矩阵的结构中,并根据超参数值的「每个组合对模型进行训练。」
然后选择具有「最佳性能的模型。」
随机搜索
「网格搜索查看超参数的每个可能组合以找到最佳模型,而随机搜索仅选择和测试超参数的随机组合。」
该技术从超参数网格中「随机采样」,而不是进行详尽的搜索。
我们可以指定随机搜索在返回最佳模型之前应该「尝试的总运行次数。」
现在你对随机搜索和网格搜索的工作原理有了基本的了解,我将向你展示如何使用 Scikit-learn 库来实现这些技术。