干货 | 大规模数据调参就用这个包
目标检测与深度学习
共 3869字,需浏览 8分钟
· 2021-05-31
文章介绍了一种快速的参数选择方案 -- Successive Halving,在我们之前的实验中,该方法速度又快而且效果也可以接受。
Successive Halving
Successive Halving(SH)就像候选参数组合之间的竞赛。SH是一个迭代选择过程,
在第一次迭代中,用少量资源评估所有候选(参数组合)。 在下一次迭代中选择其中的一些候选项,分配更多的资源给予这些候选。
在对于参数调整,资源通常是训练样本的数量,但也可以是任意的数值参数,例如随机森林中的n_estimators。
案例
如下图所示:
此处我们的资源是样本的个数,每次迭代都会为每个候选分配越来越多的资源。其步骤为:
在第一轮,我们有35个候选参数,我们使用20个样本进行训练;然后从35个候选参数中挑选出18个样本进入第二轮; 在第二轮,我们有18个候选参数,我们使用40个样本进行训练;然后从18个候选参数中挑选出9个样本进入第三轮; 依此类推,直到候选参数的个数达到我们的设定则停止。
1. 数据集生成
from sklearn.experimental import enable_halving_search_cv
from sklearn.model_selection import HalvingGridSearchCV
from sklearn.model_selection import HalvingRandomSearchCV
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
X, y = make_classification(n_samples=1000, random_state=0)
2. HalvingGridSearchCV
param_grid = {'max_depth': [3,5,7,10],
'min_samples_leaf': [2,5,7,10]}
base_estimator = RandomForestClassifier(random_state=0)
sh = HalvingGridSearchCV(base_estimator, param_grid, cv=5,
factor=2, resource='n_estimators',
min_resources =10, max_resources=3000).fit(X, y)
输出模型的最好结参数
# 输出模型的最好的参数
sh.best_estimator_
RandomForestClassifier(max_depth=7, min_samples_leaf=7, n_estimators=160,
random_state=0)
模型的交叉结果
sh.cv_results_
{'iter': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
1, 1, 2, 2, 2, 2, 3, 3, 4]),
'n_resources': array([ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 20, 20, 20, 20, 20, 20, 20, 20, 40, 40,
40, 40, 80, 80, 160]),
'mean_fit_time': array([0.01928229, 0.01584716, 0.015414 , 0.01495667, 0.01724477,
0.01833501, 0.01802239, 0.0175746 , 0.01825719, 0.01801496,
0.01770639, 0.01858926, 0.01929336, 0.01819983, 0.01763158,
0.01695471, 0.03814454, 0.03725901, 0.03484864, 0.03506536,
0.03535094, 0.03335671, 0.03274951, 0.03632708, 0.06523113,
0.0686976 , 0.06733208, 0.06619411, 0.13683538, 0.13806734,
0.27292347]),
......
'mean_score_time': array([0.00161152, 0.0014842 , 0.00139074, 0.00130529, 0.00133247,
0.00145178, 0.00153761, 0.00143166, 0.00140243, 0.00151205,
0.00139952, 0.00150151, 0.0014555 , 0.00144758, 0.0014502 ,
0.00136704, 0.00250249, 0.00238037, 0.00228252, 0.00222058,
0.00220017, 0.00222421, 0.00221481, 0.00224967, 0.00379901,
0.00384221, 0.00396533, 0.00388794, 0.00718961, 0.00746694,
0.01394658]),
......
Successive Halving适用于目前所有模型的参数的调节,关于此处我个人有一些小小的建议:
当数据量不大的时候,考虑直接将resource设置为n_estimators; 当数据量很大的时候,考虑将resource设置为n_samples,但min_resources不建议太小; 当数据量很大的时候,先对数据进行采样(不建议采样量太小),然后将resource设置为n_estimators;
最后我们固定住其它参数再寻找最优的n_estimators值,效果会更好些。
Tuning the hyper-parameters of an estimator Non-stochastic Best Arm Identification and Hyperparameter Optimization sklearn.model_selection.HalvingGridSearchCV search_successive_halving代码
✄------------------------------------------------
双一流大学研究生团队创建,一个专注于目标检测与深度学习的组织,希望可以将分享变成一种习惯。
整理不易,点赞三连!
评论
大家避雷这个软件!!
“软件分享”只分享好玩有趣的黑科技软件大家避雷这个软件,因为实在是太好用啦!兄弟们,今天我要向大家介绍一个神奇的网站,它在我们的日常生活和工作中都起到重要作用,它能够帮我们解决生活中的很多难题。在你无助时你可以与它进行
一锅汤软件
3
面试通过,背调凉了。。
整理来源|网络背调,可以很精准的检验应聘者简历中所写和所讲的是否属实,已经成为招聘企业检验员工是否合格的重要手段之一,也是应聘者在面试过程中十分反感的一点。我们经常会看到有人在网络上吐槽自己因为背调错失了高薪offer,而企业也会因为背调感到头疼。因为面试者能力很强,但是却在背调中发现有作假情况,这
码农突围
0
请问哪位大佬有空?我自己搞不定pycharm安装调试了?
点击上方“Python共享之家”,进行关注回复“资源”即可获赠Python学习资料今日鸡汤残云归太华,疏雨过中条。大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【斌】问了一个Python环境安装的问题,请问哪位大佬有空?我自己搞不定pycharm安装调试了。二、实现过程这
IT共享之家
0
小美播报|3月IPTV数据排行榜发布!
小美播报3月IPTV数据排行榜:《与凤行》登顶连续剧榜榜首拥有4.05亿家庭用户的中国IPTV平台已经成为国内主流视听平台,IPTV平台数据对视听产业各环节都具有重要意义。截至2024年4月,全国已有29个省级IPTV加入“看中国”,覆盖全国超2.25亿户家庭、辐射近7亿人。点击查看详情湖南广电与马
流媒体网
0
超赞!这个ChatGPT提问教程,PDF免费下载
你好,我是郭震AI来袭,我们该如何学习?今天先分享给大家一份超好的GPT提问指南。教程的详细介绍参考下面视频:这个PDF资料旨在教我们更好的给GPT发送指令,让GPT更准确的回答我们的提问。一共有30页,内容包括7个小章节,按照逻辑展开。分别介绍文本回答,代码辅助,结构化结果输出,非结构化结构输出,
Python与算法社区
3
python读取一个文件里面几百个csv数据集然后按照列名合并一个数据集
点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤但使龙城飞将在,不教胡马度阴山。大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【FiNε_】问了一个Python自动化办公,问题如下:python 读取一个文
Python爬虫与数据挖掘
3
AKShare-股票数据-恐惧贪婪指数
作者寄语本次更新股票数据-恐惧贪婪指数接口。主要修复该接口,目前该接口可以获取 A 股 恐惧贪婪指数 数据。欢迎加入专注于财经数据和量化投资的【数据科学实战】社区,加入方式参见文末!更新接口"index_fear_greed_funddb" # 恐惧贪婪指数恐惧贪婪指数接口: index
数据科学实战
10
i/o timeout , 希望你不要踩到这个net/http包的坑
文章持续更新,可以微信搜一搜「golang小白成长记」第一时间阅读,回复【教程】获golang免费视频教程。本文已经收录在GitHub https://github.com/xiaobaiTech/golangFamily , 有大厂面试完整考点和成长路线,欢迎Star。问题我们来看一段日常代码。
Go语言进阶学习
0