超参数是不直接在估计器内学习的参数。在 scikit-learn 包中,它们作为估计器类中构造函数的参数进行传递。典型的例子有:用于支持向量分类器的 C 、kernel 和 gamma ,用于Lasso的 alpha 等。
搜索超参数空间以便获得最好 交叉验证 分数的方法是可能的而且是值得提倡的。
搜索超参数空间以优化超参数需要明确以下方面:
- 估计器
- 超参数空间
- 交叉验证方案
- 打分函数
- 搜寻或采样方法(网格搜索法或随机搜索法)
优化模型的常见方法包括 网格搜索法,随机搜索法,模型特定交叉验证,信息准则优化。
一,网格搜索法 GridSearchCV
网格搜索法在指定的超参数空间中对每一种可能的情况进行交叉验证评分并选出最好的超参数组合。
使用网格搜索法或随机搜索法可以对Pipeline进行参数优化,也可以指定多个评估指标。
二,随机搜索法
RandomizedSearchCV
随机搜索法和网格搜索法作用类似,但是只在超参数空间中进行指定次数的不同采样。采样次数通过n_iter参数指定,通过调整其大小可以在效率和性能方面取得平衡。其采样方法调用ParameterSampler函数,采样空间必须用字典进行指定。
网格搜索法只能在有限的超参数空间进行暴力搜索, 但随机搜索法可以在无限的超参数空间进行随机搜索。
三, 模型特定交叉验证
一些特定的模型,sklearn构建了一些内部含有交叉验证优化机制的估计器。
它们主要是在linear_model模块。
例如:
linear_model.ElasticNetCV
linear_model.LogisticRegressionCV
linear_model.RidgeCV
等等
四, 信息准则优化
模型选择主要由两个思路。
解释性框架:好的模型应该是最能解释现有数据的模型。可以用似然函数来度量模型对数据集描述能力。
预测性框架:好的模型应该是最能预测结果的模型。通常模型参数越多越复杂,越容易出现过拟合。
所以,模型选择问题在模型复杂度与模型对数据集描述能力(即似然函数)之间寻求最佳平衡。
AIC(赤池信息准则)和BIC(贝叶斯信息准则)对模型的选择提供了一种判据。
AIC信息准则选择AIC最大的模型。
BIC信息准则选择BIC最大的模型。当样本数量较大时,BIC对参数个数的惩罚大于AIC。
其中L为似然函数,k为模型参数个数,n为样本数量。
linear_model.LassoLarsIC 采用了信息准则进行优化。