科学调参方法

调参方法
1.网格搜索 (暴力枚举)

测试每一种超参组合,如:

两个超参数 k_value =[2,3,4,5,6,7,8,9,10] & algorithm =[ auto , ball_tree , kd_tree ,brute ],在这个例子中,它总共构建了9*4 = 36不同的模型。

from sklearn.model_selection import GridSearchCV


grid_param = {
        '超参数': 调参范围,
        ...
}

grid = GridSearchCV(model,grid_param,cv = 5)
grid.fit(X_train,y_train)

# 查看结果

grid.cv_results_ # 以字典形式返回网格搜索中每个参数组合的性能指标和计算信息

grid.best_params_ # 以字典的形式返回最好的参数组合,eg: {'C': 1.0, 'kernel': 'linear'}

grid.best_score_ # 返回一个浮点数,表示在网格搜索中找到的最佳超参数组合对应的平均测试集得分(交叉验证)

2. 随机搜索

从超参数空间中随机选择参数组合,迭代次数由n_iter决定

from sklearn.model_selection import RandomizedSearchCV
  
grid_param = { 'n_neighbors' : list(range(2,11)) , 
              'algorithm' : ['auto','ball_tree','kd_tree','brute'] }
 
rand_ser = RandomizedSearchCV(knn,grid_param,n_iter=10)
rand_ser.fit(X_train,y_train)
 
# 查看结果

rand_ser.cv_results_ # 以字典形式返回网格搜索中每个参数组合的性能指标和计算信息

rand_ser.best_params_ # 以字典的形式返回最好的参数组合,eg: {'C': 1.0, 'kernel': 'linear'}

rand_ser.best_score_ # 返回一个浮点数,表示在网格搜索中找到的最佳超参数组合对应的平均测试集得分(交叉验证)
3. 贝叶斯搜索(Beysian Optimization)

贝叶斯优化的工作方式是通过对目标函数形状的学习,找到使结果向全局最大值提升的参数。它学习目标函数形状的方法是,根据先验分布,假设一个搜集函数。在每一次使用新的采样点来测试目标函数时,它使用这个信息来更新目标函数的先验分布。然后,算法测试由后验分布给出的,全局最值最可能出现的位置的点。

参考:贝叶斯优化基础方法_Simon Toxic的博客-CSDN博客

相关概念:

概率代理模型(Probability Surrogate model)如 高斯过程:根据有限的观测值对函数的分布进行估计 【目前最普及的优化库中使用的是高斯混合模型】

采集函数采集函数是用来确定下一个观测点的规则,关注采集函数的最大值点,【大部分优化库中默认使用期望增量】

BO过程: f(使得模型效果最好的超参组合)

1. 使用观测点更新先验模型,也就是概率代理模型,得到估计的f*

2. 基于先验模型计算采集函数(先验模型估计所有的点)

3. 选择最大化采集函数的样本点作为下一个样本

通过迭代使得f*逼近f

 

from skopt import BayesSearchCV
 
 
knn = KNeighborsClassifier()
#defining hyper-parameter grid
grid_param = { 'n_neighbors' : list(range(2,11)) , 
              'algorithm' : ['auto','ball_tree','kd_tree','brute'] }
 
#initializing Bayesian Search
Bayes = BayesSearchCV(model, grid_param , n_iter=30 , random_state=14)
Bayes.fit(X_train,y_train)
 
#best parameter combination
Bayes.best_params_
 
#score achieved with best parameter combination
Bayes.best_score_
 
#all combinations of hyperparameters
Bayes.cv_results_['params']
 
#average scores of cross-validation
Bayes.cv_results_['mean_test_score']

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值