GBA参数,gba gbasp gbm

  GBA参数,gba gbasp gbm

  

GBM参数

  转载自:http://blog.csdn.net/mr_tyting/article/details/73004303

  一般来说,GBM的参数可以分为三类:树参数:调节模型中每棵决策树的性质;升压参数:调节模型中升压的操作;其他模型参数:调节模型的整体运行从树参数开始。首先,决策树的一般结构如下:

  现在让我们来看看定义决策树所需的参数。注意,我在这里使用的是python scikit-learn中的所有术语,可能与R等其他软件中使用的术语不同,但原理是一样的。Min_ samples_split定义了树中的一个节点需要分裂的最小样本数。可以避免过度拟合。如果用于分类的样本数量太少,模型可能只适合用于训练的样本的分类,而使用更多的样本可以避免这个问题。但是,如果设定值太大,可能会出现欠拟合。因此,我们可以用CV值(离散系数)来考虑调整效果。Min_ samples_leaf定义树中结束节点所需的最小样本数。同样,它也可以用来防止过度拟合。在不平衡类问题中,一般情况下,该参数需要设置为较小的值,因为大多数少数类包含较小的样本。Min_ weight_ fraction_leaf与上面的

min_ samples_ leaf

非常相似,只不过这里需要的是一个比例而不是一个绝对值:末端节点所需样本数与总样本数的比值。#2和#3只需要定义一个。max_ depth定义了树的最大深度。它还可以控制过拟合,因为分类树越深,越容易过拟合。当然也要用CV值来检验。Max_ leaf_ nodes定义了决策树中的最大端节点数。这个属性可能已经在上面的max_ depth中定义了。例如,深度为n的二叉树最多有2 n个端节点。如果我们定义了max_ leaf_ nodes,GBM会忽略之前的max_depth。Max_ features确定用于分类的特征个数,这是人为随机定义的。一般根据经验选择特征总数的平方根效果很好,但还是应该用不同的值来尝试,最多占特征总数的30%-40%。太多的分类特征也可能导致过度拟合。在介绍其他参数之前,我们先来看一个简单的GBM二进制分类伪代码:1。初始分类目标参数值2。迭代所有分类树:2.1根据上一轮分类树的结果更新分类目标的权重值(错误分类的权重较高)2.2用训练好的子样本建模2.3用得到的模型预测所有样本2.4根据分类结果再次更新权重值3 .返回最终结果。

  以上步骤是一个极度简化的BGM模型,我们目前所说的参数会影响到步骤2.2,即建模过程。现在我们来看看影响boosting过程的参数:learning_ rate这个参数决定了每个决策树对最终结果的影响(步骤2.4)。GBM设置初始权值后,每次对树进行分类都会更新这个值,learning_ rate控制每次更新的幅度。一般来说,这个值不应该设置得更大,因为更小的学习率使模型对不同的树更鲁棒,可以更好地集成它们的结果。N_ estimators定义了需要使用的决策树的数量(步骤2)。尽管GBM即使在有更多决策树的情况下也能保持健壮,但是过拟合仍然可能发生。所以学习率也需要用CV值测试。子样本训练每个决策树中使用的子样本占总样本的比例,子样本的选择是随机的。使用略小于1的值可以使模型更加稳健,因为它减少了方差。一方面,用~0.8就可以了,调整参数可以得到更好的结果。好了,现在我们已经介绍了树参数和boosting参数,还有第三种参数,可以影响模型的整体功能:损失是指每次节点分裂要最小化的损失函数对于分类和回归模型可以有不同的值。一般不需要改,用默认值就可以了,除非你知道它以及它对模型的影响。它影响输出参数的初始化过程。如果我们有一个模型,它的输出结果将作为GBM模型的初始估计。这时候我们可以用init random_ state作为随机种子,每次生成随机数。使用随机种子对于参数整定过程非常重要,因为如果我们每次使用不同的随机种子,即使参数值不变,每次的结果也会不一样,不利于比较不同模型的结果。任何随机样本都可能导致过度拟合。可以使用不同的随机样本模型来降低过拟合的可能性,但是在计算上会贵很多。所以我们很少用verbose来决定建模完成后如何打印输出:0:无输出结果(默认)1:打印特定区域内树的输出结果1:打印所有结果warm_ start。这个参数的效果很有意思。有效利用可以省很多事。我们可以使用构建的模型来训练额外的决策树,从而节省大量时间。对于高级应用程序,我们应该更多地探索这个选项。预排序决定是否对数据进行预排序,这样可以使树分裂得更快。默认情况下会自动选择它,但您可以更改它。

GBA参数,gba gbasp gbm