【Sklearn-驯化】一文学会sklearn中的参数优化方法对比:RandomizedSearchCV、GridSearchCV

【Sklearn-驯化】一文学会sklearn中的参数优化方法对比:RandomizedSearchCV、GridSearchCV

 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 免费获取相关内容文档关注:微信公众号,发送 pandas 即可获取
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🎯 1. 基本介绍

1.1 概念介绍

  RandomizedSearchCV和GridSearchCV是scikit-learn中model_select类中用于参数优化的两个类。
  RandomizedSearchCV:随机搜索交叉验证。它是一种参数优化方法,通过在参数空间中随机选择一组参数进行训练和验证,并根据交叉验证的结果来评估模型的性能。相对于GridSearchCV,RandomizedSearchCV在参数空间中进行随机搜索,并且只随机选择一部分参数组合进行评估,从而减少计算开销。RandomizedSearchCV适用于参数空间较大的情况。
  GridSearchCV:网格搜索交叉验证。它是一种参数优化方法,遍历参数空间中的所有可能组合进行训练和验证,然后评估每个参数组合的性能。GridSearchCV通过穷举搜索所有可能的参数组合,能够找到最佳的参数组合,但计算开销较大。GridSearchCV适用于参数空间较小的情况。

1.2 对比分析

  搜索范围: GridSearchCV:需要定义参数的确切值或范围,它适用于参数数量较少且需要精细搜索的场景。RandomizedSearchCV:需要定义参数的分布(如均匀分布、正态分布等),它适用于参数数量较多或搜索空间较大的情况。
  计算成本: GridSearchCV:由于需要遍历所有参数组合,当参数数量较多或参数空间较大时,计算成本可能非常高。RandomizedSearchCV:由于是随机选择参数组合,计算成本相对较低,特别是当n_iter设置得较小时。
  搜索效果:GridSearchCV:能够保证找到给定参数网格中的最优解,但可能存在“过搜索”(overfitting to the parameter grid)的问题。RandomizedSearchCV:可能无法保证找到全局最优解,但在较大的参数空间中更有可能找到接近最优的解,并且可以避免“过搜索”。
  使用场景:GridSearchCV:适用于参数数量较少、需要精确搜索的场景,或者当对参数空间有较好的理解时。RandomizedSearchCV:适用于参数数量较多、参数空间较大的场景,或者当需要快速找到一个合理的参数组合时。

💡 2. 代码实践

  我们构建一个简单的svc的方法并通过二者进行参数的优化,具体的代码如下所示:


from sklearn.model_selection import GridSearchCV, RandomizedSearchCV
from sklearn.svm import SVC

# 定义参数网格
param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}

# GridSearchCV 示例
grid_search = GridSearchCV(SVC(), param_grid, cv=5)
grid_search.fit(X_train, y_train)

# RandomizedSearchCV 示例
random_search = RandomizedSearchCV(SVC(), param_distributions={'C': np.logspace(-3, 2, 6),
                                                               'kernel': ['linear', 'rbf']},
                                   n_iter=100, cv=5, random_state=42)
random_search.fit(X_train, y_train)

💡 3. 注意事项

  • 如果参数空间非常大,GridSearchCV 可能会非常耗时或不可行。在这种情况下,RandomizedSearchCV 是一个更实际的选择。
  • GridSearchCV 可能需要大量的计算资源,尤其是当交叉验证的折数(cv)和参数组合数量较多时。
  • 选择适当的 CV 折数以平衡偏差和方差。太多的折数可能会增加计算成本,而太少的折数可能无法捕捉数据的变异性。
  • 对于 RandomizedSearchCV 中的连续参数,考虑使用对数尺度(如 np.logspace)来避免数量级差异过大。
  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只红花猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值