超参数优化:从基础到高级实践

立即解锁
发布时间: 2025-09-04 00:25:32 阅读量: 25 订阅数: 23 AIGC
PDF

Kaggle竞赛实战指南

# 超参数优化:从基础到高级实践 ## 常见机器学习算法的超参数 在机器学习中,不同的算法有各自需要调整的重要超参数,了解这些超参数对于构建优秀的模型至关重要。 ### CatBoost超参数 | 超参数 | 取值范围 | 说明 | | ---- | ---- | ---- | | depth | 1 - 8 的整数 | 通常较高的值需要更长的拟合时间,且不一定能产生更好的结果 | | learning_rate | 0.01 - 1.0 的实数,最好从对数均匀分布中采样 | 控制模型学习的步长 | | random_strength | 从 1e - 9 到 10.0 对数线性采样的实数 | 指定评分分割的随机性水平 | | bagging_temperature | 0.0 - 1.0 的实数 | 设置贝叶斯自助法 | | border_count | 1 - 255 的整数 | 表示数值特征的分割 | | l2_leaf_reg | 2 - 30 的整数 | L2 正则化的值 | | scale_pos_weight | 0.01 - 10.0 的实数 | 表示正类的权重 | ### HistGradientBoosting超参数 | 超参数 | 取值范围 | 说明 | | ---- | ---- | ---- | | learning_rate | 0.01 - 1.0 的实数,通常从对数均匀分布中采样 | 控制模型学习的步长 | | max_iter | 10 - 10,000 的整数 | 最大迭代次数 | | max_leaf_nodes | 2 - 500 的整数 | 与 max_depth 相互作用,建议只设置其中一个,另一个设为 None | | max_depth | 2 - 12 的整数 | 树的最大深度 | | min_samples_leaf | 2 - 300 的整数 | 叶子节点的最小样本数 | | l2_regularization | 0.0 - 100.0 的浮点数 | L2 正则化 | | max_bins | 32 - 512 的整数 | 最大分箱数 | 虽然 Scikit - learn 的 HistGradientBoosting 与 LightGBM 或 XGBoost 没有太大区别,但它为在竞赛中实现梯度提升机(GBM)提供了不同的方式,并且在集成多个预测时(如混合和堆叠),HistGradientBoosting 构建的模型可能会有所贡献。 ## 数据科学家的竞赛经验分享 与 Alberto Danese 的访谈为我们提供了宝贵的竞赛经验。Alberto Danese 是意大利信用卡和数字支付公司 Nexi 的数据科学主管,也是 Kaggle 竞赛大师。 ### 竞赛偏好 他一直从事金融服务行业,处理结构化数据,因此更喜欢这类竞赛。他享受对数据有实际理解,并通过智能特征工程挖掘数据信息的过程。在技术上,他擅长使用经典的机器学习库,特别是梯度提升决策树,XGBoost、LightGBM、CatBoost 是他的首选。 ### 竞赛方法 他在竞赛中会花大量时间探索数据,弄清楚主办方试图用机器学习解决的问题,而不是花太多时间调整特定的机器学习算法。在日常工作中,除了理解数据,还需要定义业务问题、寻找数据,以及将机器学习模型投入生产并管理其演变。 ### 挑战竞赛 他提到了 TalkingData AdTracking Fraud Detection Challenge,这个竞赛推动他进行高效的特征工程,因为数据量巨大(超过 1 亿个标记行),减少计算时间对于测试不同方法至关重要。同时,他学会了如何最好地利用滞后/超前特征和其他窗口函数,在经典机器学习问题中创建时间序列。 ### 对新手的建议 他认为新手常犯的错误是直接开始编码,而没有花足够的时间研究数据和理解问题。此外,他建议考虑团队合作,因为可以从合作中学习很多。 ## 贝叶斯优化 在超参数优化中,网格搜索仅在实验空间有限时可行,因此通常会选择随机搜索优化或贝叶斯优化(BO)技术,后者需要更复杂的设置。 ### 贝叶斯优化原理 贝叶斯优化的核心思想是优化代理函数(也称为替代函数),而不是真实的目标函数(网格搜索和随机搜索都直接优化真实目标函数)。当没有梯度、测试真实目标函数成本高昂,且搜索空间嘈杂复杂时,适合使用贝叶斯优化。 贝叶斯搜索平衡了探索和利用。开始时随机探索,训练替代函数,然后根据替代函数利用对预测器工作方式的初始近似知识,采样更有用的示例并最小化成本函数。通过使用先验知识,贝叶斯优化可以更快地达到最小化,减少评估次数。 贝叶斯优化使用获取函数来判断观察的前景。为了管理探索和利用之间的权衡,算法定义了一个获取函数,提供一个单一的度量来衡量尝试任何给定点的有用性。 ### 实现方法 通常,贝叶斯优化由高斯过程驱动。当搜索空间具有平滑和可预测的响应时,高斯过程表现更好。当搜索空间更复杂时,可以使用树算法(如随机森林)或树结构 Parzen 估计器(TPEs)。 TPEs 不直接构建估计参数集成功的模型,而是估计定义参数最佳值的多元分布的参数,通过从概率分布中采样得出最佳参数集,而不是像高斯过程那样直接从机器学习模型中获取。 ### 使用 Scikit - optimize 进行贝叶斯优化 Scikit - optimize(skopt)使用与 Scikit - learn 相同的 API,并广泛使用 NumPy 和 SciPy 函数。它基于高斯过程算法,维护良好,但有时需要跟上 Scikit - learn、NumPy 或 SciPy 的改进。 以下是使用 Scikit - optimize 对 LightGBM 模型进行贝叶斯优化的步骤: #### 1. 加载必要的库 ```python # Importing core libraries import numpy as np import pandas as pd from time import time import pprint import joblib from functools import partial # Suppressing warnings because of skopt verbosity import warnings warnings.filterwarnings("ignore") # Classifiers import lightgbm as lgb # Model selection from sklearn.model_selection import KFold # Metrics from sklearn.metrics import mean_squared_error from sklearn.metrics import make_scorer # Skopt functions from skopt import BayesSearchCV from skopt.callbacks import DeadlineStopper, DeltaYStopper from skopt.space import Real, Categorical, Integer ``` #### 2. 加载数据 ```python # Loading data X = pd.read_csv("../input/30-days-of-ml/train.csv") X_test = pd.read_csv("../input/30-days-of-ml/test.csv") # Preparing data as a tabular matrix y = X.target X = X.set_index('id').drop('target', axis='columns') X_test = X_test.set_index('id') # Dealing with categorical data categoricals = [item for item in X.columns if 'cat' in item] cat_values = np.unique(X[categoricals].values) cat_dict = dict(zip(cat_values, range(len(cat_values)))) X[categoricals] = X[categoricals].replace(cat_dict).astype('category') X_test[categoricals] = X_test[categoricals].replace(cat_dict).astype('category') ``` #### 3. 定义报告函数 ```python # Reporting util for different optimizers def report_perf(optimizer, X, y, title="model", callbacks=None): """ A wrapper for measuring time and performance of optimizers optimizer = a sklearn or a skopt optimizer X = the training set y = our target title = a string label for the experiment """ start = time() if callbacks is not None: optimizer.fit(X, y, callback=callbacks) else: optimizer.fit(X, y) d=pd.DataFrame(optimizer.cv_results_) best_score = optimizer.best_score_ best_score_std = d.iloc[optimizer.best_index_].std_test_score best_params = optimizer.best_params_ print((title + " took %.2f seconds, candidates checked: %d, best CV score: %.3f" + u" \u00B1"+" %.3f") % (time() - start, len(optimizer.cv_results_['params']), ```
corwn 最低0.47元/天 解锁专栏
买1年送3月
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

物联网_赵伟杰

物联网专家
12年毕业于人民大学计算机专业,有超过7年工作经验的物联网及硬件开发专家,曾就职于多家知名科技公司,并在其中担任重要技术职位。有丰富的物联网及硬件开发经验,擅长于嵌入式系统设计、传感器技术、无线通信以及智能硬件开发等领域。
最低0.47元/天 解锁专栏
买1年送3月
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看

最新推荐

波浪耗散区设计精髓:UDF驱动阻尼层(Sponge Layer)的4种构建模式与参数优化

# 摘要 本文系统研究了波浪耗散区与阻尼层的物理机制及其在数值模拟中的实现方法,重点探讨了基于用户自定义函数(UDF)驱动的阻尼层理论建模与工程应用。通过构建Navier-Stokes方程中的源项模型,分析了四种典型阻尼函数的数学特性及其对能量耗散效率的影响,并揭示了阻尼区域长度与网格分辨率之间的耦合关系。进一步提出了四种UDF实现模式,涵盖速度反馈、人工粘性增强、松弛耦合与多尺度吸收机制,结合敏感性分析与反射率评估体系优化关键参数。最后通过数值实验验证了不同模式在抑制非物理反射方面的有效性,为高精度流场仿真提供了可靠的技术路径。 # 关键字 阻尼层;UDF;Navier-Stoke

Eterm故障排查全景图:从TCP层到应用层逐级诊断的8步精准定位法

![Eterm故障排查全景图:从TCP层到应用层逐级诊断的8步精准定位法](https://study.com/cimages/videopreview/how-star-bus-ring-and-mesh-topology-connect-computer-networks-in-organizations1_101949.jpg) # 摘要 Eterm作为关键终端通信系统,其稳定性依赖于网络、传输与应用层的协同工作。本文构建了以分层诊断为核心的故障排查框架,系统阐述了从TCP连接异常、中间链路干扰到应用层协议行为失常的全链路问题识别方法。通过深入分析三次握手失败、防火墙静默丢包、负载

【高阶CMK实战】:复杂工艺下动态CMK模型构建的4大挑战与应对策略

![【高阶CMK实战】:复杂工艺下动态CMK模型构建的4大挑战与应对策略](https://media.licdn.com/dms/image/D5612AQE3z2Uo9h0v4w/article-cover_image-shrink_600_2000/0/1697489531148?e=2147483647&v=beta&t=-54zNXVxO-HErCsCRwgfl2O5CQkzE0gh6ZJtQSVgiYE) # 摘要 高阶CMK技术作为衡量制造过程能力的核心工具,正从静态评估向动态化、智能化演进。本文系统阐述了动态CMK模型的理论基础与建模框架,深入解析过程能力指数的数学原理及

多通道RS编解码系统设计:基于多个rs_decoder_ipcore并行架构的3种实现方案

# 摘要 本文围绕多通道RS编解码系统的设计与优化展开,系统阐述了RS码的数学基础、编码机制及解码算法核心流程,重点分析了Berlekamp-Massey算法、Chien搜索与Forney公式的实现原理,并深入剖析了rs_decoder_ipcore的功能模块与可配置性。针对多通道并行需求,对比了完全独立架构、共享控制逻辑结构及分时复用流水线混合架构的设计策略与性能权衡。在FPGA硬件平台上,研究了多IP核布局布线、数据通路优化与功耗资源调优等协同优化技术,提升了系统吞吐量与能效比。通过搭建误码率测试平台验证了系统的纠错能力,并探讨了其在卫星通信与高速光纤链路中的应用前景及未来向动态重构与

三维铁路场景构建:将二维SHP数据升维至CityEngine_Cesium环境(含坐标变换关键步骤)

![三维铁路场景构建:将二维SHP数据升维至CityEngine_Cesium环境(含坐标变换关键步骤)](https://dobim.es/wp-content/uploads/2023/03/nube-puntos-laser-portada-e1678632528443.jpg) # 摘要 三维铁路场景构建是智慧交通与数字孪生领域的重要技术方向,涉及地理信息处理、三维建模与跨平台可视化等多学科融合。本文以SHP数据为基础,系统阐述从二维矢量数据解析到三维铁路场景生成的全流程技术框架,涵盖坐标系统转换、高程融合、CGA规则建模及3D Tiles发布等关键环节。通过CityEngine

用户体验飞跃提升:icoFormat响应式UI设计+长时间操作进度反馈最佳实践

![icoFormat](https://static-prod.adweek.com/wp-content/uploads/2020/11/AI-logo-generator-PAGE-2020.jpg) # 摘要 本文系统探讨了响应式UI设计与用户体验之间的核心关系,提出icoFormat设计模式作为实现多端一致性的创新解决方案。该模式基于流体网格、断点设计与设备无关性原则,结合图标-内容-操作三位一体结构,支持动态缩放与语义层级保持。研究进一步构建了面向长时间操作场景的用户反馈机制,涵盖确定性进度条、不确定性指示器及多阶段任务状态管理,并在前端架构中实现与icoFormat的深度融

阻塞 vs 非阻塞任务提交:接口设计背后的性能权衡与场景选择建议

![阻塞 vs 非阻塞任务提交:接口设计背后的性能权衡与场景选择建议](https://img-blog.csdnimg.cn/d916543b06f54eb89cc5ef87b93c7779.png) # 摘要 本文系统探讨了阻塞与非阻塞任务提交机制在并发编程中的核心作用,从基本概念出发,剖析同步与异步、阻塞与非阻塞的本质区别及其在线程行为和执行模型中的体现。文章深入研究任务调度的关键性能指标及并发模型的支持机制,结合线程池、Future/Promise、Reactor与Actor等技术,分析阻塞与非阻塞在Java线程池、Spring异步注解和Netty框架中的具体实现。通过对比不同任

CatBoost深度应用揭秘:自动处理类别特征,提升模型鲁棒性的4个关键实践

![CatBoost深度应用揭秘:自动处理类别特征,提升模型鲁棒性的4个关键实践](https://www.kdnuggets.com/wp-content/uploads/c_hyperparameter_tuning_gridsearchcv_randomizedsearchcv_explained_2-1024x576.png) # 摘要 CatBoost作为一种高效的梯度提升决策树模型,凭借其独特的有序目标编码与偏差校正机制,在处理高基数类别特征时表现出卓越的性能与稳定性。本文系统解析了CatBoost的核心机制,重点阐述其在类别特征自动编码方面的创新技术,包括目标均值编码的平滑

跨模块依赖分析难题破解:基于CodeReader的调用链全景透视4法

![CodeReader:一行一行阅读代码](https://cf4.ppt-online.org/files4/slide/c/cf1HeNXK7jCvJPwayolSxn83q09DsEWgt6U2bz/slide-5.jpg) # 摘要 跨模块依赖的复杂性在现代多语言、微服务架构中日益凸显,导致系统维护难、故障定位慢与重构风险高。本文提出CodeReader核心理念,构建调用链全景的四大透视法:静态语法解析法、动态执行追踪法、语义关联推导法与构建产物反演法,从源码结构、运行时行为、隐式语义和编译产物多维度还原真实依赖关系。通过在多语言项目中的实践,验证了四大方法在依赖提取、可视化、

移远4G模块PPP拨号失败终极分析:5步通过pppd日志定位链路异常

![PPP拨号](https://lp-seotool.s3.us-west-2.amazonaws.com/task_attachments/WZfbnskX22gjKLhqlLnQ3APMAvM90KMa1603887580.jpg) # 摘要 本文针对移远4G模块在PPP拨号过程中常见失败问题,系统性地构建了从协议原理到实战调试的完整分析框架。首先解析PPP协议的LCP、PAP/CHAP、NCP协商机制及pppd守护进程的工作流程,深入探讨其配置项与日志输出机制;进而提出基于日志的五步链路异常定位法,覆盖物理层连通性、LCP协商、认证过程、IP分配至网络可达性的全路径诊断逻辑;最后