ML之GB:GB算法相关论文、相关思路、关键步骤、代码实现、配图集合、案例应用之详细攻略(二)

简介: ML之GB:GB算法相关论文、相关思路、关键步骤、代码实现、配图集合、案例应用之详细攻略

GB案例应用


1、GB用于回归


sklearn.ensemble.GradientBoostingRegressor 类的构造函数

函数API官方解释:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html#sklearn.ensemble.GradientBoostingRegressor


(1)、重点参数解释


Loss:字符串,可选(缺省值为“ls”)。梯度提升法用决策树来逼近整体损失函数的梯度。最常使用的整体损失项就是误差平方的和(sum squared error),这个就是通常的最小二乘回归方法的惩罚项。最小误差平方和(Least sum squared error)是一个很方便的选项,因为误差平方(squared error)在数学上处理比较简洁。但是对应实际的问题,其他的损失函数可能更合适。例如,笔者在研究自动交易问题时,注意到误差平方惩罚项会导致算法回避重大的损失,但是会接受较小的损失,但是较小的损失累积起来也是相当可观的。采用误差绝对值的和(Sum of absolute value of error)可以取得更好的性能,对自动交易问题更匹配。最小平均绝对值(Least mean absolute value)通常对异常点不敏感。梯度提升法是少数几个可以自由选择惩罚函数的算法。

可以取的字符串值如下。

● ls :最小均方误差(Least mean squared error)。

● lad :最小平均绝对误差(Least mean absolute value of error)。

● huber :胡贝尔误差是两种误差的混合:当误差数值较小时,取误差的平方,当

误差数值较大时,取误差的绝对值。

● quantile :分位数回归。预测分位数(由 alpha 参数指定)。

● Learning_rate。

       浮点数,可选(缺省值为0.1)。

        正如前面提到的,梯度提升法基于梯度下降法。Learning_rate 指明沿梯度方向的步长。如果步长太大,会看到误差迅速下降,然后迅速上升(是集成方法中决策树数目的函数)。如果步长太小,则误差下降得十分缓慢,需要训练更多的决策树。Learning_rate 的最佳值是依赖于问题的,也依赖于所选择的决策树的深度。缺省值0.1 是相对比较大的值,但是是一个很好的起点。首先选用这个值,观察是否导致了不稳定或者过拟合,然后再按需调整。


N_estimators:整型,可选(缺省值为100)。此参数指定集成方法中的决策树数目。如第6 章所述,也可以把它看作朝向梯度下降的方向,达到误差最小值所需的步数。也可以看作是增量式逼近所用的步数(即训练模型的数目)。因为每一个后续的逼近(每一个后续的决策树)都与learning rate( 学习速度)相乘,学习速度越大,朝向误差最小值取得同样的进步所需的决策树就越少。然而(正如在学习速度小节所讨论的那样),学习速度太高会导致过拟合。对于一个新问题,往往需要尝试几

次才能习得参数的最佳取值范围。缺省值100 可以作为一个很好的起点(特别是与学习速度的缺省值一起联合使用时)。


Subsample:浮点型,可选(缺省值为1.0)。如果与随机森林相似,用数据的抽样对决策树进行训练,则梯度提升法变成了随机梯度提升法。Friedman(算法发明人)建议subsample 取0.5。这是一个很好的起点。


Max_depth:整型,可选(缺省值为3)。就像随机森林,max_depth 是集成方法中单个决策树的深度,随机森林需要决策树达到一定深度才能产生高精确度的模型,然而梯度提升通过持续关注残差,使用深度为1 的决策树(叫作树桩stumps)就可以获得高精确度。梯度提升法对决策树深度的需求是由属性之间相关程度决定的。如果属性之间相互独立,则深度为1的决策树可以获得与深度为2 的决策树相同的性能。通常,可先将决策树的深度设为1,然后调整好其他参数。再将决策树的深度调整为2,看看是否会带来性能上的提升。笔者还从来没遇到过需要决策树深度为10 的问题。


Max_features:整型、浮点型、字符串,或者None, 可选(缺省值为None)。当查找最佳分割点时,需要考虑的属性的数目是由max_features 值和问题数据中属性的总数共同决定的。定义属性的总数为nFeatures,那么:如果 max_features 是整数,则在每次分割时考虑 max_features 个属性。如果 max_features 是浮点数,则 max_features 是需要考虑的属性占全体属性的百分比:int(max_features*nFeatures)。

         可能的字符串值包括:

auto max_features=nFeatures

sqrt max_features=sqrt(nFeatures)

log2 max_features=log2(nFeatures)

        如果 max_features 是 None,那么 max_features 等于 nFeatures。

        在梯度提升法Python 实现中,max_features 起的作用与随机森林中的作用相同。它决定了在决策树的每个节点进行分割时需要考虑多少个属性。这使梯度提升法的Python 实现具有一个独特的能力:它可以用随机森林作为基学习器来代替原来需要考虑全部属性空间的决策树。


Warm_start:布尔型,可选(缺省值为False)。如果warm_start 设为True,fit() 函数将从上次训练停止的地方开始。


(2)、重点属性解释


Feature_importances:一个数组,其长度等于数据集中属性的数目。数组中的值是正的浮点数,表明了相应属性对预测结果的重要性。数值越大,表明此属性越重要。

Train_score:一个数组,其长度等于集成方法中决策树的数目。此数组存放在训练阶段对决策树依次训练时的误差。


(3)、重点方法解释


Fit(XTrain, yTrain, monitor=None):XTrain 和yTrain 的形式与随机森林中的一样。XTrain 是一个(nInstances*nAttributes)numpy 数组,这里nInstances 是训练数据集的行数,nAttributes 是属性的数目。yTrain 是

一个存放训练数据集目标的(nInstances *1)numpy 数组。对象monitor 是回调函数,用来提早停止训练。


Predict(X):Predict(x) 由一组属性X 产生预测,X 的列数(属性数)与训练数据集属性数一致,X 可以有任意行的数据。


Staged_predict(x):此函数的行为与predict() 函数的行为类似,除了它是可迭代的,根据梯度提升法生成一系列模型,然后根据模型产生一系列的预测值。每次调用都会利用梯度提升法在已产生的一系列模型中增加一个决策树,然后产生一个预测值。



2、GB用于分类


函数API官方解释:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html#sklearn.ensemble.GradientBoostingClassifier


(1)、重点参数解释


loss:deviance 对于分类问题,deviance 是缺省的,也是唯一的选项。

(2)、重点方法解释


fit(X,y , monitor=None):对于分类问题,其不同点只在于标签y 的不同。对应分类问题,标签是0 到类别总数减1 的一个整数。对于二分类问题,标签值为0或者1。对于多类别分类问题,如果共有nClass 个不同的类别,则标签取值为0 ~ nClass-1。

decision_function(X):梯度提升分类器实际上是回归决策树的集合,会产生与所属类别的概率相关的实数估计值。这些估计值还需要经过反logistic 函数将其转换为概率。转换前的实数估计值可通过此函数获得,对这些估计值的使用就像ROC 曲线计算中使用概率那样简单。

predict(X):此函数预测所属类别。

predict_proba(X):此函数预测所属类别的概率。它对于每个类别有一列概率值。对于二分类问题有两列。

     对于多类别分类问题,共有nClass 列。上述函数的阶段性(staged)版本是可迭代的,产生与决策树数目相同的结果(也与

训练过程中执行的步数一致)。

相关文章
|
21天前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
23天前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法与应用
探索人工智能中的强化学习:原理、算法与应用
|
21天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
39 1
|
21天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
50 1
|
23天前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法及应用
探索人工智能中的强化学习:原理、算法及应用
|
16天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
22天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
2天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
10天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
18天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
下一篇
DataWorks