决策树与树回归

认真看了2本书,总结了关于tree分类与回归的内容,形成以下文档。

一、决策树

学习目标——泛化能力强的分类树

特点:贪心算法,在给定时间内做出最佳选择,不关心是否达到全局最优。

优点:计算复杂度不高,结果易于解释,对中间值的缺失不敏感

缺点:容易过拟合

思路:选择属性--->属性的最佳分裂值--->递归生成叶子--->剪枝

  • 选择特征:遍历整个数据集&所有特征,计算每个特征划分数据集的信息熵。以信息增益ID3 or 信息增益比C4.5的准则选择每层的分裂特征。[遍历完所有特征or每个分支下属于同一分类,则停止递归]
  • 特征的属性值:遍历所有特征所包含的属性值,在每个特征下将所包含的属性值完全分裂。再进行下一次特征选择
  • 递归过程——分而治之:

  1. 选择特征
  2. 该特征下完全分裂
  3. 递归上述过程,直到出现以下3种情况停止:

         3.1  样本属于同一分类,停止分;

         3.2 特征用完,也没有完全分类——少数服从多数的原则,哪一类多全部归为哪一类(若“多数”不唯一,则随机取)

         3.3 该页节点下,没有样本再进行分类,无法分;

要点

  • 结点度量——信息增益与信息增益比

            信息增益准则对可取值数目较多的属性有偏好;

            信息增益比准则对可取值数据较少的属性有偏好,相当于对属性取值较多的特征增加惩罚系数。

  • 关于剪枝——分为 预剪枝 与 后剪枝

            主要用于降低决策树过拟合的风险,提高泛化能力。

 概念优点缺点
预剪枝结点划分前计算,如果当前结点的划分不能带来泛化能力的提升,则停止划分,将当前结点直接作为叶结点。减少训练时间与测试时间开销基于“贪心”本质禁止分支展开,会增加 欠拟合 风险。
后剪枝先训练成完整一棵树,再自底向上考察非叶节点,若替换成叶节点会提升泛化能力则进行剪枝,替换。欠拟合风险小,泛化能力一般由于预剪枝训练时间开销大

  • 关于连续属性——二元切分法

            连续属性离散化:取连续缺件的中位点,不大于中位点的最大值。

            若当前结点划分属性为连续属性,则该属性仍可作为后代结点的划分属性,but离散型并不会。

  • 对于缺失值

            让同一样本以不同概率划入不同的子结点中。

  • 多变量决策树

           对于连续型属性, 通常情况,分类边界的每一段与坐标轴平行,这样有可能需要大量属性测试。为缩短时间开销,采用“斜划分”——结点是对属性的线性组合而非单个属性。---->在学习过程中改为寻找合适的线性分类器。


二、树回归

  1. 回归树:每个叶节点包括单个值 CART
  2. 模型树:每个叶节点包括一个线性方程

回归树

CART针对“连续性特征”采用【二元切分法】

结点一致性度量——误差:方差 = 均方差 * 样本点个数

思路:与分类树一致,构建回归树(遍历所有特征及其可能取值寻找使误差最小化的切分阈值)---> 剪枝

递归过程——寻找最佳二元切分方式,达到误差最低:

  1. 将每个特征的数据集切分成2份
  2. 计算切分误差
  3. 递归上述过程,直至:

            3.1 所有值相等;

            3.2 误差减少过小——tolS:允许的误差下降值;

            3.3 切分出的数据集过小——tolN:切分的最少样本数;

不再分裂后,将目标变量的均值作为叶节点。

对输入参数tolS 及tolN非常敏感

  • 关于剪枝

            预剪枝:设置tolS tolN , tolN对误差的数量级十分敏感(直接将数据放大100倍,树结构就完全不同)

            后剪枝:将数据集分为训练集&测试集,比较合并中间结点与不合并叶节点的误差,若降低则合并。 需遍历全部结点       

            一般为寻求最佳模型,可以同时使用预剪枝与后剪枝。

模型树

叶结点不是固定值,而是分段线性函数。

优点:可解释性 & 更高的预测准确度。

误差度量:偏差平方和,也可以用R2值度量。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

参考书籍:

《机器学习.周志华》

《机器学习实战》

没有更多推荐了,返回首页