参数搜索(使用Hyperopt库)

Hyperopt库为python中的模型选择和参数优化提供了算法和并行方案。机器学习中常见的模型有KNN、SVM、PCA、决策树、GBDT等一系列的算法,但是在实际应用中,我们需要选取合适的模型,并对模型调参,得到一组合适的参数。尤其是在模型的调参阶段,需要花费大量的时间和精力,却又效率低下。但是我们可以换一个角度来看待这个问题,模型的选取,以及模型中需要调节的参数,可以看做是一组变量,模型的质量标准(比如正确率、AUC)等等可以看做是目标函数,这个问题就是超参数的优化问题。我们可以使用搜索算法来解决。
Hyperopt提供了一个优化接口,这个接口接受一个评估函数和参数空间,能计算出参数空间内的一个点的损失函数值。用户还要指定空间内参数的分布情况。
Hyperopt四个重要的因素:指定需要最小化的函数,搜索的空间,采样的数据集(trails database)(可选),搜索的算法(可选)。
Hyperopt使用步骤分为以下几部分:
(1)定义一个目标函数,接受一个变量,计算后返回一个函数的损失值,比如要最小化函数q(x,y) = x**2 + y**2。
(2)定义一个参数空间,比如x,y在0-1区间内取值,x,y都是实数。
(3)指定搜索的算法,算法也就是hyperopt的fmin函数的algo参数的取值。当前支持的算法由随机搜索(对应是hyperopt.rand.suggest),模拟退火(对应是hyperopt.anneal.suggest),TPE算法。搜索算法本身也有内置的参数决定如何去优化目标函数,我们可以指定搜索算法的参数,比如针对TPE,指定jobs。

你可能感兴趣的:(参数搜索(使用Hyperopt库))