从零开始:白话sklearn.ensemble.GradientBoostingRegressor

问题源:

sklearn.ensemble.GradientBoostingRegressor(
	loss=’ls’,
	learning_rate=0.1,
	n_estimators=100,
	subsample=1.0,
	criterion=’friedman_mse’,
	min_samples_split=2,
	min_samples_leaf=1,
	min_weight_fraction_leaf=0.0,
	max_depth=3,
	min_impurity_decrease=0.0,
	min_impurity_split=None,
	init=None,
	random_state=None,
	max_features=None,
	alpha=0.9,
	verbose=0,
	max_leaf_nodes=None,
	warm_start=False,
	presort=’auto’)

水平:☆

机器学习算法大致可分为 有监督算法 和 无监督算法 ,两者区别如下:

  • 有监督学习的目标是找到一个函数,该函数能尽可能准确的反应输入(简单理解为自变量)和输出(简单理解为因变量)之间的关系
  • 有监督学习典型的算法包括回归分析和分类分析
  • 有监督学习算法的样本必须是带标签的,同时需区分训练集和测试集(在训练集中寻找规律,在测试集中验证规律)
  •  
  • 无监督学习目标是推断一组数据中存在的自然结构
  • 无监督学习典型的算法包括聚类分析,主成分分析(降维)
  • 无监督学习算法的只需要分析样本本身,预先不需要没有什么标签

集成学习Ensemble Learning

集成学习通过将多个学习器进行结合,常可获得高于单一的个体学习器的泛化性能

如何产生“好而不同”的个体学习器,是集成学习研究的核心。即个体学习要有一定准确性(要高于“弱学习器”),同时不同个体学习器之间要有差异性

(所谓弱学习器是指泛化能力略优于随机猜测的学习器,比如在二分类问题上的准确度略高于50%)

集成学习安装个体学习器之间的依赖关系可大致分为两类:

  • 串行集成方法:个体学习器之间存在强依赖关系。其逻辑是通过给错分样本一个较大的权重来提升性能。目的是有效减少偏差。主要是代表算法是Boosting
  • 并行集成方法,个体学习器之间不存在强依赖关系。其逻辑是利用基础模型的独立性,因为通过平均能够较大地降低误差。目的是有效减少方差。代表算法是Bagging

Boosting和Bagging的区别

样本选择
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的

样例权重
Boosting:通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果
Bagging:使用均匀取样,每个样例的权重相等

预测函数
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重
Bagging:所有预测函数的权重相等

并行计算
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果 
Bagging:各个预测函数可以并行生成

1)Bagging + 决策树 = 随机森林

  2)AdaBoost + 决策树 = 提升树

  3)Gradient Boosting + 决策树 = GBDT

AdaBoost(Adaptive boosting)算法:开始时,所有样本的权重相同,训练得到第一个基分类器。从第二轮开始,每轮开始前都先根据上一轮基分类器的分类效果调整每个样本的权重,上一轮分错的样本权重提高,分对的样本权重降低。之后根据新得到样本的权重指导本轮中的基分类器训练,即在考虑样本不同权重的情况下得到本轮错误率最低的基分类器。(可以想象到,远离边界的样本点总是分类正确,而分类边界附近的样本点总是有大概率被弱分类器(基分类器)分错,所以权值会变高,即边界附近的样本点会在分类时得到更多的重视。)重复以上步骤直至训练到约定的轮数结束,每一轮训练得到一个基分类器。每次更新后用相同的弱分类算法产生新的分类假设,这些分类假设的序列构成多分类器。对这些多分类器用加权的方法进行联合,最后得到决策结果。

GBDT(Gradient Boost Decision Tree)算法:每一次的计算是为了减少上一次的残差,GBDT在残差减少(负梯度)的方向上建立一个新的模型。

 GDBT与提升树之间的关系:

 提升树模型每一次的提升都是靠上次的预测结果与训练数据的label值差值作为新的训练数据进行重新训练,GDBT则是将残差计算替换成了损失函数的梯度方向,将上一次的预测结果带入梯度中求出本轮的训练数据,这两种模型就是在生成新的训练数据时采用了不同的方法,那么在这个背后有啥区别?使用残差有啥不好?

  李航老师《统计学习方法》中提到了在使用平方误差损失函数和指数损失函数时,提升树的残差求解比较简单,但是在使用一般的损失误差函数时,残差求解起来不是那么容易,所以就是用损失函数的负梯度在当前模型的值作为回归问题中残差的近似值。 这是不是说一般的损失函数的梯度也得好求才可以啊。

每一次的计算是为了减少上一次的残差(residual),而为了消除残差,我们可以在残差减少的梯度(Gradient)方向上建立一个新的模型。所以说,在Gradient Boost中,每个新的模型的建立是为了使得之前模型的残差往梯度方向减少(当然也可以变向理解成每个新建的模型都给予上一模型的误差给了更多的关注),与传统Boost对正确、错误的样本进行直接加权还是有区别的。

所以,有的文章把上一节介绍的基于残差的提升树方法叫做GBDT(梯度提升树),他们认为GBDT分为两个版本,一个就是这个残差的提升树,另一个版本就是即将介绍的基于负梯度的提升树
 

  GBDT思想:先用一个初始值来学习一棵决策树,叶子处可以得到预测的值,以及预测之后的残差,然后后面的决策树就要基于前面决策树的残差来学习,直到预测值和真实值的残差为零。最后对于测试样本的预测值,就是前面许多棵决策树预测值的累加。

我们前面讲到,一棵决策树很容易出现过拟合现象。但是,我们把训练集通过反复学习(或者采样,或者不采样),得到多颗决策树,这样就可以一定程度上避免过拟合。前面的random forest是又放回地随机采样数据集,再随机采样特征,学习出来多课决策树,然后我们再投票决策分类。

    而这篇讲到的GBDT的基本思想是“积跬步以至千里”!也就是说我每次都只学习一点,然后一步步的接近最终要预测的值(完全是gradient的思想~)。换句话来说,我们先用一个初始值来学习一棵决策树,叶子处可以得到预测的值,以及预测之后的残差,然后后面的决策树就要基于前面决策树的残差来学习,直到预测值

# GradientBoostingRegressor boosting框架参数
loss : {‘ls’, ‘lad’, ‘huber’, ‘quantile’}, optional (default=’ls’)

# 算法中选用的损失函数
# 对于回归模型,有均方差"ls", 绝对损失"lad", Huber损失"huber"和分位数损失“quantile”
# 默认是均方差"ls"
# 一般来说,如果数据的噪音点不多,用默认的均方差"ls"比较好
# 如果是噪音点较多,推荐用抗噪音的损失函数"huber"
# 而如果我们需要对训练集进行分段预测的时候,则采用“quantile”

损失函数(loss function)是用来估量模型的预测值f(x)与真实值Y的不一致程度。训练一个机器学习模型时,通常情况下目标就是找到损失函数达到极小值的点

常见损失函数:

(1)L1范数损失函数,也被称为最小绝对值偏差(LAD),最小绝对值误差(LAE)。类似于平均绝对误差(MAE)。总的说来,它是把目标值(Y)与估计值(f(x))的绝对差值的总和最小化:

(2)L2范数损失函数,也被称为最小平方误差(LSE)。类似于均方误差(MSE)。总的来说,它是把目标值(Y)与估计值(f(x))的差值的平方和最小化:

分析

MSE对误差取了平方(令e=真实值-预测值),因此若e>1,则MSE会进一步增大误差。如果数据中存在异常点,那么e值就会很大,而e²则会远大于|e|。因此,相对于使用MAE计算损失,使用MSE的模型会赋予异常点更大的权重。用RMSE(即MSE的平方根,同MAE在同一量级中)计算损失的模型会以牺牲了其他样本的误差为代价,朝着减小异常点误差的方向更新。然而这就会降低模型的整体性能。

直观上可以这样理解:如果我们最小化MSE来对所有的样本点只给出一个预测值,那么这个值一定是所有目标值的平均值。但如果是最小化MAE,那么这个值,则会是所有样本点目标值的中位数。对异常值而言,中位数比均值更加鲁棒,因此MAE对于异常值也比MSE更稳定。

如何选择损失函数

如果训练数据被异常点所污染(比如,在训练数据中存在大量错误的反例和正例标记,但是在测试集中没有这个问题)或者异常点代表在商业中很重要的异常情况,并且需要被检测出来,则应选用MSE损失函数。相反,如果只把异常值当作受损数据,则应选用MAE损失函数。

MAE存在一个严重的问题(特别是对于神经网络):更新的梯度始终相同,也就是说,即使对于很小的损失值,梯度也很大。这样不利于模型的学习。为了解决这个缺陷,可以使用变化的学习率,在损失接近最小值时降低学习率。

MSE在这种情况下的表现就很好,即便使用固定的学习率也可以有效收敛。MSE损失的梯度随损失增大而增大,而损失趋于0时则会减小。这使得在训练结束时,使用MSE模型的结果会更精确。

总结

处理异常点时,L1损失函数更稳定,但它的导数不连续,因此求解效率较低。L2损失函数对异常点更敏感,但通过令其导数为0,可以得到更稳定的封闭解。

二者兼有的问题是:在某些情况下,上述两种损失函数都不能满足需求。例如,若数据中90%的样本对应的目标值为150,剩下10%在0到30之间。那么使用MAE作为损失函数的模型可能会忽视10%的异常点,而对所有样本的预测值都为150。这是因为模型会按中位数来预测。而使用MSE的模型则会给出很多介于0到30的预测值,因为模型会向异常点偏移。上述两种结果在许多商业场景中都是不可取的。最简单的办法是对目标变量进行变换。而另一种办法则是换一个损失函数。

(3)Huber损失,平滑的平均绝对误差。是一个用于回归问题的带参损失函数, 优点是能增强平方误差损失函数(MSE, mean square error)对离群点的鲁棒性。当预测偏差小于 δ 时,它采用平方误差,当预测偏差大于 δ 时,采用的线性误差。超参数δ可以调整。当δ~ 0时,Huber损失会趋向于MAE;当δ~ ∞(很大的数字),Huber损失会趋向于MSE

如何选择损失函数:使用MAE训练神经网络最大的一个问题就是不变的大梯度,这可能导致在使用梯度下降快要结束时,错过了最小点。而对于MSE,梯度会随着损失的减小而减小,使结果更加精确。在这种情况下,Huber损失就非常有用。它会由于梯度的减小而落在最小值附近。比起MSE,它对异常点更加鲁棒。因此,Huber损失结合了MSE和MAE的优点。但是,Huber损失的问题是可能需要不断调整超参数delta。

(4)分位数损失函数(Quantile Loss)

MAE是拟合中位数的损失函数(即离差绝对值的期望在中位数处取得最低),而中位数就是分位数的一种。

以一元回归为例,在众多数据中,我们可以拟合一条曲线,这条曲线告诉我们对于某个x可能的拟合结果y=f(x)。即使真实y不是f(x),也应该在f(x)附近,此时,我们的预测是一个点。但是,我们如果想要获取一个y的范围呢?因为很多时候,我们不需要精确值,反而更需要一个范围值。此时,我们需要预测一个线段。那怎么做呢?
其实如果我们能分别获得y的0.1分位数与0.9分位数的拟合,那么两者之间的部分就是我们需要的,它预测了y的80%的取值范围

分位数损失函数的公式如下

该损失函数对预测值大于真实值和小于真实值得惩罚是不一样的。
当r = 0.5时,该损失等价于MAE
当r > 0.5时,该损失对预测值小于真实值的情况惩罚更大
当r < 0.5时,该损失对预测值大于真实值的情况惩罚更大

# GradientBoostingRegressor boosting框架参数
learning_rate : float, optional (default=0.1)

# 即每个弱学习器的权重缩减系数a,也称作步长,# a的取值范围为[0,1] 
# 对于同样的训练集拟合效果,较小的a意味着需要更多弱学习器迭代次数
# 一般来说这个值不应该设的比较大,因为较小的learning rate使得模型对不同的树更加稳健,
# 就能更好地综合它们的结果
# 是为了防止过拟合而加上的正则化项系数


n_estimators : int (default=100)

# 弱学习器的个数,或者弱学习器的最大迭代次数
# 一般来说 n_estimators 太小,容易欠拟合;n_estimators 太大,容易过拟合



# 通常步长learning_rate和迭代次数n_estimators一起来决定算法的拟合效果,所以这两个参数要一起调参

学习率(Learning rate)作为监督学习以及深度学习中重要的超参

当学习率设置的过小时,收敛过程将变得十分缓慢。而当学习率设置的过大时,在算法优化的前期会加速学习,但在后期会有较大波动,甚至出现在最小值附近来回震荡,始终难以达到最优。所以引入学习率衰减的概念,直白点说,就是在模型训练初期,会使用较大的学习率进行模型优化,随着迭代次数增加,学习率会逐渐进行减小,保证模型在训练后期不会有太大的波动,从而更加接近最优解

当学习率设置的 过小时,收敛过程如上
当学习率设置的 过大时,收敛过程如上

过拟合(overfitting)欠拟合(underfitting)

机器学习的基本问题是利用模型对数据进行拟合,学习的目的并非是对有限训练集进行正确预测,而是对未曾在训练集合出现的样本能够正确预测。模型对训练集数据的误差称为经验误差,对测试集数据的误差称为泛化误差。模型对训练集以外样本的预测能力就称为模型的泛化能力,追求这种泛化能力始终是机器学习的目标

过拟合(overfitting)欠拟合(underfitting)是导致模型泛化能力不高的两种常见原因,都是模型学习能力与数据复杂度之间失配的结果。“欠拟合”常常在模型学习能力较弱,而数据复杂度较高的情况出现,此时模型由于学习能力不足,无法学习到数据集中的“一般规律”,因而导致泛化能力弱。与之相反,“过拟合”常常在模型学习能力过强的情况中出现,此时的模型学习能力太强,以至于将训练集单个样本自身的特点都能捕捉到,并将其认为是“一般规律”,同样这种情况也会导致模型泛化能力下降。过拟合与欠拟合的区别在于,欠拟合在训练集和测试集上的性能都较差,而过拟合往往能较好地学习训练集数据的性质,而在测试集上的性能较差。

在神经网络训练的过程中,欠拟合主要表现为输出结果的高偏差,而过拟合主要表现为输出结果的高方差

偏差(Bias)&效度:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据,它就对应测验的效度。

方差(Variance)&信度:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散,它对应测验的信度。

preview


正则化

机器学习中的一个核心问题是设计不仅在训练数据上表现好,并且能在新输入上泛化好的算法。 在机器学习中,许多策略显式地被设计来减少测试误差(可能会以增大训练误差为代价)。 这些策略被统称为正则化

本质就是给模型加一些规则限制,约束要优化参数,目的是防止过拟合。其中最常见的规则限制就是添加先验约束,其中L1相当于添加Laplace(拉普拉斯)先验,L2相当于添加Gaussian(高斯)先验。

L1范数,又称"稀疏规则算子",就是向量各元素的绝对值之和,其数学形式如下:

L2范数,又称“岭回归”(Ridge Regression),也有人叫它“权值衰减”(Weight Decay),就是欧几里得距离,其数学形式如下:

如下图所示,蓝色的圆圈表示问题可能的解范围,橘色的表示正则项可能的解范围。而当且仅当两个解范围相切,整个目标函数(原问题+正则项)才有解。由于L2范数解范围是圆,所以相切的点有很大可能不在坐标轴上,而由于L1范数是菱形(顶点是凸出来的),其相切的点更可能在坐标轴上,而坐标轴上的点有一个特点,其只有一个坐标分量不为零,其他坐标分量为零,即是稀疏的。所以有如下结论,L1范数可以导致稀疏解,L2范数导致稠密解。 

(1)参数值越小代表模型越简单吗?

是的。这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大

(2)为什么过拟合产生的原因是参数比较大导致的?

过拟合就是拟合函数需要顾忌每一个点,当存在噪声的时候,原本平滑的拟合曲线会变得波动很大。在某些很小的区间里,函数值的变化很剧烈,这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。

(3)为什么通过L1正则、L2正则能够防止过拟合?

L1正则化之所以可以防止过拟合,是因为L1范数就是各个参数的绝对值相加得到的。参数值大小和模型复杂度是成正比的。因此复杂的模型,其L1范数就大,最终导致损失函数就大,说明这个模型就不够好。

L2正则化的解都比较小,抗扰动能力强。在求解过程中,L2通常倾向让权值尽可能小(从图中可以看到,L2正则化给出的最优解 w∗使解更加靠近原点),最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。参数足够小,数据偏移得多一点也不会对结果造成什么影响,可以说“抗扰动能力强”

# GradientBoostingRegressor boosting框架参数

subsample : float, optional (default=1.0)

# 正则化中的子采样,防止过拟合,取值为(0,1]
# 如果取值为1,则使用全部样本,等于没有使用子采样。
# 如果取值小于1,则只使用一部分样本
# 选择小于1的比例可以防止过拟合,但是太小又容易欠拟合。推荐在 [0.5, 0.8] 之间
# 这里的子采样和随机森林的不一样,随机森林使用的是放回抽样,而这里是不放回抽样


init : estimator or ‘zero’, optional (default=None)
# 即我们的初始化的时候的弱学习器
# 如果不输入,则用训练集样本来做样本集的初始化分类回归预测
# 否则用 init 参数提供的学习器做初始化分类回归预测
# 一般用在对数据有先验知识,或者之前做过一些拟合的时候


alpha:float (default=0.9)
# 这个参数只有 GradientBoostingRegressor 有,
# 当使用 Huber 损失"huber"和分位数损失“quantile”时,需要指定分位数的值
# 默认是0.9。如果噪音点较多,可以适当降低这个分位数的值
GradientBoostingRegressor CART弱学习器参数

# 最重要的参数包括最大特征数max_features,最大深度max_depth,
# 内部节点再划分所需最小样本数min_samples_split和叶子节点最少样本数min_samples_leaf


min_samples_split : int, float, optional (default=2)
# 定义了树中一个节点所需要用来分裂的最少样本数,可以避免过度拟合(over-fitting)
# 这个值限制了子树继续划分的条件,如果某节点的样本数少于min_samples_split,
# 则不会继续再尝试选择最优特征来进行划分。
# 如果样本量数量级非常大,则推荐增大这个值,
# 但是如果设定的值过大,就可能出现欠拟合现象(under-fitting)
# 因此我们可以用CV值(离散系数)考量调节效果

min_samples_leaf : int, float, optional (default=1)
# 这个值限制了叶子节点最少的样本数,同样,它也可以用来防止过度拟合。
# 如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝
# 可以输入最少的样本数的整数,或者最少样本数占样本总数的百分比
# 如果样本量不大,不需要管这个值
# 如果样本量数量级非常大,则推荐增大这个值
# 在不均等分类问题中(imbalanced class problems),一般这个参数需要被设定为较小的值,
# 因为大部分少数类别(minority class)含有的样本都比较小

min_weight_fraction_leaf : float, optional (default=0.)
# 和上面min_ samples_ leaf很像,两者只需要定义一个就行
# 不同的是这里需要的是一个比例而不是绝对数值:终点节点所需的样本数占总样本数的比值。
# 叶子节点最小的样本权重和
# 这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝
# 默认为 0,就是不考虑权重问题
# 一般来说,如果有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重

max_depth : integer, optional (default=3)
# 定义了树的最大深度。
# 它也可以控制过度拟合,因为分类树越深就越可能过度拟合
# 一般来说,数据少或者特征少的时候可以不管这个值
# 如果模型样本量多,特征也多的情况下,推荐限制这个最大深度
# 具体的取值取决于数据的分布,常用的可以取值 10-100 之间
# 当然也应该用CV值检验

max_leaf_nodes : int or None, optional (default=None)
# 通过限制最大叶子节点数,可以防止过拟合
# 默认是"None”,即不限制最大的叶子节点数
# 如果加了限制,算法会建立在最大叶子节点数内最优的决策树
# 如果特征不多,可以不考虑这个值,但是如果特征分成多的话,可以加以限制,
# 具体的值可以通过交叉验证得到。
# 这个属性有可能在上面max_depth里就被定义了。比如深度为n的二叉树就有最多2^n个终点节点。
# 如果我们定义了max_leaf_nodes,GBM就会忽略前面的max_depth

max_features : int, float, string or None, optional (default=None)
# 划分时考虑的最大特征数,是人为随机定义的
# 可以使用很多种类型的值
# 默认是"None",意味着划分时考虑所有的特征数
# 如果是"log2"意味着划分时最多考虑log2 N个特征
# 如果是"sqrt"或者"auto"意味着划分时最多考虑 根号N 个特征
# 如果是整数,代表考虑的特征绝对数
# 如果是浮点数,代表考虑特征百分比,即考虑(百分比xN)取整后的特征数,其中N为样本总特征数
# 一般来说,如果样本特征数不多,比如小于50,用默认的"None"就可以了,
# 如果特征数非常多,可以灵活使用刚才描述的其他取值来控制划分时考虑的最大特征数,
# 最多可以尝试总特征数的30%-40%,以控制决策树的生成时间。
# 过多的分类特征可能也会导致过度拟合。

min_impurity_split : float, (default=1e-7)
# 节点划分的最小不纯度。这个值限制了决策树的增长
# 如果某节点的不纯度(基于基尼系数,均方差)小于这个阈值,则该节点不再生成子节点,即为叶子节点
# 一般不推荐改动
# GradientBoostingRegressor 其它参数

random_state : int, RandomState instance or None, optional (default=None)
# 作为每次产生随机数的随机种子
# 使用随机种子对于调参过程是很重要的,因为如果我们每次都用不同的随机种子,
# 即使参数值没变每次出来的结果也会不同,这样不利于比较不同模型的结果。
# 任一个随即样本都有可能导致过度拟合,可以用不同的随机样本建模来减少过度拟合的可能,
# 但这样计算上也会昂贵很多,因而我们很少这样用

verbose : int, default: 0
# 决定建模完成后对输出的打印方式: 
# 0:不输出任何结果(默认)
# 1:打印特定区域的树的输出结果
# >1:打印所有结果

warm_start : bool, default: False
# 这个参数的效果很有趣,有效地使用它可以省很多事
# 使用它我们就可以用一个建好的模型来训练额外的决策树,能节省大量的时间
# 对于高阶应用我们应该多多探索这个选项

presort : bool or ‘auto’, optional (default=’auto’)
# 默认情况下是自动选择的,auto:非稀疏数据则预排序,若稀疏数据则不预排序
# 预排序可以加速查找最佳分裂点,小数据集推荐使用 True,可以加快训练

参考链接:

【1】sklearn.ensemble.GradientBoostingRegressor官方文档https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html#sklearn.ensemble.GradientBoostingRegressor

【2】《深度学习中文版》https://github.com/exacity/deeplearningbook-chinese

【3】机器学习两种方法——监督学习和无监督学习(通俗理解)https://blog.csdn.net/a493823882/article/details/81183324

【4】机器学习笔记:监督学习与无监督学习! http://www.sohu.com/a/226231440_374240

【5】《机器学习》周志华

【6】Boosting学习笔记(Adboost、GBDT、Xgboost)https://www.cnblogs.com/willnote/p/6801496.html

【7】机器学习--集成学习(Ensemble Learning)https://www.cnblogs.com/zongfa/p/9304353.html

【8】L1、L2损失函数、Huber损失函数 https://www.cnblogs.com/pacino12134/p/11104446.html

【9】回归损失函数:L1,L2,Huber,Log-Cosh,Quantile Loss https://blog.csdn.net/clover_my/article/details/90777964

【10】欠拟合和过拟合出现原因及解决方案 https://www.cnblogs.com/zhhfan/p/10476761.html

【11】对于正则化的理解 https://www.cnblogs.com/pinking/p/9310728.html

【12】[Deep Learning] 正则化 https://www.cnblogs.com/maybe2030/p/9231231.html

【13】L1,L2,L0区别,为什么可以防止过拟合 https://www.jianshu.com/p/475d2c3197d2

【14】梯度增强分类/回归器参数详解 https://www.jianshu.com/p/0602e2093c1a

【15】机器学习--Gradient Boosting Machine(GBM)调参方法详解 https://www.cnblogs.com/zongfa/p/9502830.html

【16】理解GBDT算法(一)——理论 https://blog.csdn.net/puqutogether/article/details/41957089

发布了18 篇原创文章 · 获赞 0 · 访问量 592

猜你喜欢

转载自blog.csdn.net/zhsworld/article/details/102951061
今日推荐