? Gradient Boost是一个框架,里面可以套入很多不同的算法。GBDT是GB的一种情况, ? GBDT=Gradient Boost+Decision Tree 也就是梯度提升+决策树 ? GB:梯度迭代 Gradient Boosting ? Boosting 是一种集成方法。通过对弱分类器的组合得到强分类器,他是串行的,几个弱分类器之间是依次训练的。GBDT 的核心就在于,每一颗树学习的是之前所有树结论和的残差。 ? Gradient 体现在:无论前面一颗树的 cost function 是什么,是均方差还是均差,只要它以误差作为衡量标准,那么残差向量都是它的全局最优方向,这就是 Gradient。 ? Gradient Boost优缺点 ? 优点: 它的非线性变换比较多,表达能力强,而且不需要做复杂的特征工程和特征变换。 ? 缺点:Boost是一个串行过程,不好并行化,而且计算复杂度高,同时不太适合高维稀疏特征。
1、概括
???????首先GBDT是通过采用加法模型(即基函数的线性组合),以及不断减小训练过程产生的残差来达到将数据分类或者回归的算法。 GDBT 中的树全部都是回归树,核心就是累加所有树的结果作为最终结果。只有回归树的结果累加起来才是有意义的,分类的结果加是没有意义的。 GDBT 调整之后可以用于分类问题,但是内部还是回归树。 GBDT的精髓在于训练的时候都是以上一颗树的残差为目标,这个残差就是上一个树的预测值与真实值的差值。
2、GBDT的算法流程?
? GBDT是通过采用加法模型(基函数的线性组合),不断减小训练过程产生的残差来达到将数据分类或者回归的算法。针对一般损失函数优化困难问题,利用损失函数的负梯度在当前模型的值作为残差的近似值进行求解。
3、 GBDT的训练过程
? GBDT通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的残差基础上进行训练。对弱分类器的要求一般是足够简单,并且是低方差和高偏差的。因为训练的过程是通过降低偏差来不断提高最终分类器的精度,(此处是可以证明的)。 弱分类器一般会选择为CART TREE(也就是分类回归树)。由于上述高偏差和简单的要求 每个分类回归树的深度不会很深。最终的总分类器 是将每轮训练得到的弱分类器加权求和得到(也就是加法模型)。
4、GBDT如何选择特征?
? GBDT选择特征的细节其实是想问你CART Tree生成的过程。这里有一个前提,gbdt的弱分类器默认选择的是CART TREE。其实也可以选择其他弱分类器的,选择的前提是低方差和高偏差。框架服从boosting 框架即可。 下面我们具体来说CART TREE(是一种二叉树) 如何生成。CART TREE 生成的过程其实就是一个选择特征的过程。假设我们目前总共有 M 个特征。第一步我们需要从中选择出一个特征 j,做为二叉树的第一个节点。然后对特征 j 的值选择一个切分点 m. 一个 样本的特征j的值 如果小于m,则分为一类,如果大于m,则分为另外一类。如此便构建了CART 树的一个节点。其他节点的生成过程和这个是一样的。 现在的问题是在每轮迭代的时候,如何选择这个特征 j,以及如何选择特征 j 的切分点 m:此处请参考决策数的算法特征分割
5、GBDT通过什么方式减少误差 ?
? 每棵树都是在拟合当前模型的预测值和真实值之间的误差,GBDT是通过不断迭代来使得误差见小的过程。
6、gbdt 如何构建特征 ?
? 将样本输入到GBDT生成的树中,所有树的叶子结点可以构建一个向量,输入样本可以获得一个关于叶子结点的0-1向量,将这个向量作为该样本的组合特征,和原来的特征一起输入到逻辑回归当中训练(CTR中GBDT+LR)
7、GBDT 如何加速训练
A:小数据集使用True,可以加快训练。是否预排序,预排序可以加速查找最佳分裂点(不确定)
8、GBDT的参数有哪些?
? 1、树的个数 100~10000 ? 2、叶子的深度 3~8 ? 3、学习速率 0.01~1 ? 4、叶子上最大节点树 20 ? 5、训练采样比例 0.5~1 ? 6、训练特征采样比例 sqrt(num) ? A:分为三类 ? ? 第一类Miscellaneous Parameters: Other parameters for overall functioning. 没啥用 其实主要是前两种参数。 ? ? 第二类:Boosting Parameters: These affect the boosting operation in the model. ? ? ? n_estimators 最大弱学习器的个数,太小欠拟合,太大过拟合 ? ? ? learning_rate 学习率,太大过拟合,一般很小0.1,和n_estimators一起调 subsample 子采样,防止过拟合,太小欠拟合。GBDT中是不放回采样 ? ? 第三类:Tree-Specific Parameters: These affect each individual tree in the model. ? ? ? max_features 最大特征数 ? ? ? max_depth 最大树深,太大过拟合 ? ? ? min_samples_split 内部节点再划分所需最小样本数,越大越防过拟合 ? ? ? min_weight_fraction_leaf 叶子节点最小的样本权重和。如果存在较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重,这时我们就要注意这个值了。越大越防过拟合 ? ? ? max_leaf_nodes:最大叶子节点数 ,太大过拟合 ? ? ? min_impurity_split:节点划分最小不纯度 ? ? ? presort:是否对数据进行预分类,以加快拟合中最佳分裂点的发现。默认False,适用于大数据集。小数据集使用True,可以加快训练。是否预排序,预排序可以加速查找最佳分裂点,对于稀疏数据不管用,Bool,auto:非稀疏数据则预排序,若稀疏数据则不预排序
9、GBDT如何调参?
A:以上便是整个寻优的过程,接下来把整个过程整理一下: ? 1、首先使用默认的参数,进行数据拟合; ? 2、从步长(learning rate)和迭代次数(n_estimators)入手;一般来说,开始选择一个较小的步长来网格搜索最好的迭代次数。这里,可以将步长初始值设置为0.1。对于迭代次数进行网格搜索; ? 3、接下来对决策树的参数进行寻优 ? 4、首先我们对决策树最大深度max_depth和内部节点再划分所需最小样本数min_samples_split进行网格搜索。【min_samples_split暂时不能一起定下来,因为这个还和决策树其他的参数存在关联】 5、接着再对内部节点再划分所需最小样本数min_samples_split和叶子节点最少样本数min_samples_leaf一起调参;做到这里,min_samples_split要做两次网格寻优,一次是树的最大深度max_depth,一次是叶子节点最少样本数min_samples_leaf。 【具体观察min_samples_split的值是否落在边界上,如果是可以进一步寻优】 6、继续对最大特征数max_features进行网格搜索。做完这一步可以看看寻找出的最优参数组合给出的分类器的效果。 7、可以进一步考虑对子采样的比例进行网格搜索,得到subsample的寻优参数 8、回归到第2步调整设定的步长(learning rate)和迭代次数(n_estimators),注意两者的乘积保持不变,这里可以分析得到:通过减小步长可以提高泛化能力,但是步长设定过小,也会导致拟合效果反而变差,也就是说,步长不能设置的过小。
10、GBDT优缺点
? 优点 ? ? 可以灵活处理各种类型的数据,包括连续值和离散值。 ?? 在相对少的调参时间情况下,预测的准备率也可以比较高。这个是相对SVM来说的。 ? ? 使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。 缺点: ? ? 由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。(慢?)[待补充SGBT知识]
11、gbdt的效果相比于传统的LR,SVM效果为什么好一些 ?
? 1、Decision Tree 可以很好的处理 missing feature,这是他的天然特性,因为决策树的每个节点只依赖一个 feature,如果某个 feature 不存在,这颗树依然可以拿来做决策,只是少一些路 径。像逻辑回归,SVM 就没这个好处。 ? 2、Decision Tree 可以很好的处理各种类型的 feature,也是天然特性,很好理解,同样逻辑回归和 SVM 没这样的天然特性。 ? 3、对特征空间的 outlier 有鲁棒性,因为每个节点都是 x < 𝑇 的形式,至于大多少,小多少没有区别,outlier 不会有什么大的影响,同样逻辑回归和 SVM 没有这样的天然特性。 ? 4、如果有不相关的 feature,没什么干扰,如果数据中有不相关的 feature,顶多这个 feature 不出现在树的节点里。逻辑回归和 SVM 没有这样的天然特性(但是有相应的补救措施,比如逻辑回归里的 L1 正则化)。 ? 5、数据规模影响不大,因为我们对弱分类器的要求不高,作为弱分类器的决策树的深 度一般设的比较小,即使是大数据量,也可以方便处理。像 SVM 这种数据规模大的时候训练会比较麻烦。 当然 Decision Tree 也不是毫无缺陷,通常在给定的不带噪音的问题上,他能达到的最佳分类效果还是不如 SVM,逻辑回归之类的。但是,我们实际面对的问题中,往往有很大的噪音,使得 Decision Tree 这个弱势就不那么明显了。而且,GBDT 通过不断的叠加组合多个小的 Decision Tree,他在不带噪音的问题上也能达到很好的分类效果。换句话说,通过GBDT训练组合多个小的 Decision Tree 往往要比一次性训练一个很大的 Decision Tree 的效果好很多。因此不能把 GBDT 理解为一颗大的决策树,几颗小树经过叠加后就不再是颗大树了,它比一颗大树更强。
12、GBDT适用范围
? 1、GBDT 可以适用于回归问题(线性和非线性),相对于 logistic regression 仅能用于线性回归,GBDT 适用面更广; ? 2、GBDT 也可用于二分类问题(设定阈值,大于为正,否则为负)和多分类问题。 当增加最小样本分裂个数,我们可以抵制过拟合,减少训练单个学习器的样本个数,我们可以降低variance
13、GBDT和随机森林的比较
? 相同点: ? ? 都是由多棵树组成; ? ? 最终的结果都由多棵树共同决定。 ? 不同点: ? ? 1、组成随机森林的可以是分类树、回归树;组成 GBDT 只能是回归树; ? ? 2、组成随机森林的树可以并行生成(Bagging);GBDT 只能串行生成(Boosting); ? ? 3、对于最终的输出结果而言,随机森林使用多数投票或者简单平均;而 GBDT 则是将所有结果累加起来,或者加权累加起来; ? ? 4、随机森林对异常值不敏感,GBDT 对异常值非常敏感; ? ? 5、随机森林对训练集一视同仁权值一样,GBDT 是基于权值的弱分类器的集成; ? ? 6、随机森林通过减小模型的方差提高性能,GBDT 通过减少模型偏差提高性能。
14、GBDT相比于决策树有什么优点
?泛化性能更好!GBDT 的最大好处在于,每一步的残差计算其实变相的增大了分错样本的权重,而已经分对的样本则都趋向于 0。这样后面就更加专注于那些分错的样本。
|