从决策树到GBDT

这一系列的文章都是各种书、论文、专栏、视频的笔记,本篇的内容主要是对周志华《机器学习》的学习笔记。

Decision Tree

了解树算法从决策树开始。

决策树是基于树结构的决策算法,包括一个根结点,若干个内部节点和叶子结点。叶子结点对应于决策结果,其他每个节点对应于一个属性测试。

决策树的生成是一个递归过程,在决策树基本算法中,有三种情形会导致递归返回:

(1)当前节点包含的样本全属于同一类别;

(2)当前属性集为空,或是所有样本在所有属性集上取值相同;

(3)当前节点包含的样本集合为空。

决策树算法的关键是如何划分节点。

信息熵是常用的划分标准:每一个节点的样本纯度可以用信息熵来定义,整棵树的信息熵等于节点信息熵的加权和。节点权重一般由样本数确定。根据这一定义,我们可以计算出用属性a对样本集D进行划分所获取的信息增益。若我们对每个属性计算一次结果,就可以选择增益最大的属性作为划分标准。ID3决策树就是以信息增益进行节点划分的算法。

但信息增益会对可取值数目较多的属性有所偏好,为了避免这一偏好,我们可以计算增益率。我们设定一个固有值函数IV来计算属性a的固有值,使该函数满足:属性可取值数目越多,固有值越大。定义

<math xmlns="http://www.w3.org/1998/Math/MathML"><mi>G</mi><mi>a</mi><mi>i</mi><mi>n</mi><mi>r</mi><mi>a</mi><mi>t</mi><mi>i</mi><mi>o</mi><mfenced><mrow><mi>D</mi><mo>,</mo><mo>&#xA0;</mo><mi>a</mi></mrow></mfenced><mo>&#xA0;</mo><mo>=</mo><mo>&#xA0;</mo><msub><mfrac><mrow><mi>G</mi><mi>a</mi><mi>i</mi><mi>n</mi><mfenced><mrow><mi>D</mi><mo>,</mo><mo>&#xA0;</mo><mi>a</mi></mrow></mfenced></mrow><mrow><mi>I</mi><mi>V</mi><mfenced><mi>a</mi></mfenced></mrow></mfrac><mrow/></msub></math>

扫描二维码关注公众号,回复: 3569660 查看本文章

为属性的增益率。C4.5算法使用增益率来进行属性划分。

CART决策树使用基尼系数划分属性。基尼系数反映了从数据集中随机抽取两个样本,其类别标志不一致的概率,所以基尼系数越小,数据集的纯度越高。因此我们在划分时,选择使得划分后基尼系数最小的属性为划分属性。

解决决策树过拟合的方法

剪枝是常见的解决决策树过拟合的方法之一。基本策略有预剪枝和后剪枝。剪枝标准为是否带来泛化性能提升。

在实际应用中,我们往往会限制决策树的深度或者叶子结点树。比如说lightgbm可以限制min_data_in_leave, xgboost可以设置max_depth和min_child_weight等等

可以使用正则化方法,常用的L1和L2正则化在决策树上仍然可以使用。

解决复杂问题的方法

决策树的决策边界一般是线性的,如果想要解决非线性问题可以使用多变量决策树,对复杂边界进行分段近似。即每个节点的划分不再是根据单一属性,而是根据某些属性的线性组合。

树回归

最基础的决策树算法是分类算法,但决策树也可以用于回归。CART是一个典型的可用于回归的决策树。当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很好的解决分类问题。但需要注意的是,该算法是一个二叉树,即每一个非叶节点只能引伸出两个分支,所以当某个非叶节点是多水平(2个以上)的离散变量时,该变量就有可能被多次使用。

回归树和决策树没有特别大的本质区别,但回归树的叶子结点是实数值。https://zhuanlan.zhihu.com/p/30744760

Ensemble Learning

集成学习是一种常用的调优方法,它通过构建并结合多个学习器来完成任务。其一般结构是先产生一组个体学习器,再用某种策略将它们结合起来。若个体学习器是同质的(即都是决策树或都是神经网络等等),个体学习器也被称为基学习器,相应的学习算法称为基学习算法。

Boosting

Boosting是一族可将弱学习器提升为强学习器的方法,这种算法的工作机制为:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注。基于调整后的样本分布训练下一个基学习器,重复这一过程直至基学习器数量达到某个threshold,最终将这些学习器进行加权结合。

Boosting中最经典的算法是Adaboost。Boosting算法要求基学习器能对特定的数据分布进行学习,调整样本分布的方法可以为重赋权或者重采样方法。

从偏差-方差分解的角度讲,Boosting主要关注降低偏差,因此能基于泛化能力较弱的学习器做出很强的集成。

从上述描述可以看到,基础的Boosting方法是串行的。

Bagging

Bagging是并行式集成方法最著名的代表。我们在大数据集中,基于自助采样法(即有放回采样)取出T个包含m个样本的采样集,然后基于每个采样集训练一个基学习器。在对结果进行预测时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。

随机森林是Bagging的一个扩展变体,在以决策树为基学习器构建Bagging集成的基础上,进一步在训练过程中引入了随机属性选择。

结合策略

常用的数值型预测结果的结合策略是平均法,包括简单平均法和加权平均法。对分类任务来说,则常常使用投票法,包括绝对多数投票法,相对多数投票法和加权投票法。

学习法是一种更强大的策略,即通过另一个学习器来进行结合。

GBDT(Gradient Boosted Decision Tree, 梯度提升决策树)

GBDT(Gradient Boosted Decision Tree) 是一种基于迭代的决策树算法,生成的模型由多棵决策树组成,并将所有树的结论累加作为最终结果,适用于类别预测问题。 GBDT和SVM被认为是泛化能力较强的算法,对于线性不可分数据(即无法用一个线性函数完全将两类样本数据区分),GBDT往往能取得很好的效果。相较于神经网络,GBDT的参数空间要小很多,训练速度更快,因此在很多场景上更加适合。

它是一种典型的boosting方法。

猜你喜欢

转载自blog.csdn.net/friyal/article/details/82756579
今日推荐