认真看了2本书,总结了关于tree分类与回归的内容,形成以下文档。
一、决策树
学习目标——泛化能力强的分类树
特点:贪心算法,在给定时间内做出最佳选择,不关心是否达到全局最优。
优点:计算复杂度不高,结果易于解释,对中间值的缺失不敏感
缺点:容易过拟合
思路:选择属性--->属性的最佳分裂值--->递归生成叶子--->剪枝
- 选择特征:遍历整个数据集&所有特征,计算每个特征划分数据集的信息熵。以信息增益ID3 or 信息增益比C4.5的准则选择每层的分裂特征。[遍历完所有特征or每个分支下属于同一分类,则停止递归]
- 特征的属性值:遍历所有特征所包含的属性值,在每个特征下将所包含的属性值完全分裂。再进行下一次特征选择
- 递归过程——分而治之:
- 选择特征
- 该特征下完全分裂
- 递归上述过程,直到出现以下3种情况停止:
3.1 样本属于同一分类,停止分;
3.2 特征用完,也没有完全分类——少数服从多数的原则,哪一类多全部归为哪一类(若“多数”不唯一,则随机取)
3.3 该页节点下,没有样本再进行分类,无法分;
要点:
- 结点度量——信息增益与信息增益比
信息增益准则对可取值数目较多的属性有偏好;
信息增益比准则对可取值数据较少的属性有偏好,相当于对属性取值较多的特征增加惩罚系数。
- 关于剪枝——分为 预剪枝 与 后剪枝
主要用于降低决策树过拟合的风险,提高泛化能力。
概念 | 优点 | 缺点 | |
---|---|---|---|
预剪枝 | 结点划分前计算,如果当前结点的划分不能带来泛化能力的提升,则停止划分,将当前结点直接作为叶结点。 | 减少训练时间与测试时间开销 | 基于“贪心”本质禁止分支展开,会增加 欠拟合 风险。 |
后剪枝 | 先训练成完整一棵树,再自底向上考察非叶节点,若替换成叶节点会提升泛化能力则进行剪枝,替换。 | 欠拟合风险小,泛化能力一般由于预剪枝 | 训练时间开销大 |
- 关于连续属性——二元切分法
连续属性离散化:取连续缺件的中位点,不大于中位点的最大值。
若当前结点划分属性为连续属性,则该属性仍可作为后代结点的划分属性,but离散型并不会。
- 对于缺失值
让同一样本以不同概率划入不同的子结点中。
- 多变量决策树
对于连续型属性, 通常情况,分类边界的每一段与坐标轴平行,这样有可能需要大量属性测试。为缩短时间开销,采用“斜划分”——结点是对属性的线性组合而非单个属性。---->在学习过程中改为寻找合适的线性分类器。
二、树回归
- 回归树:每个叶节点包括单个值 CART
- 模型树:每个叶节点包括一个线性方程
回归树
CART针对“连续性特征”采用【二元切分法】
结点一致性度量——误差:方差 = 均方差 * 样本点个数
思路:与分类树一致,构建回归树(遍历所有特征及其可能取值寻找使误差最小化的切分阈值)---> 剪枝
递归过程——寻找最佳二元切分方式,达到误差最低:
- 将每个特征的数据集切分成2份
- 计算切分误差
- 递归上述过程,直至:
3.1 所有值相等;
3.2 误差减少过小——tolS:允许的误差下降值;
3.3 切分出的数据集过小——tolN:切分的最少样本数;
不再分裂后,将目标变量的均值作为叶节点。
对输入参数tolS 及tolN非常敏感
- 关于剪枝
预剪枝:设置tolS tolN , tolN对误差的数量级十分敏感(直接将数据放大100倍,树结构就完全不同)
后剪枝:将数据集分为训练集&测试集,比较合并中间结点与不合并叶节点的误差,若降低则合并。 需遍历全部结点
一般为寻求最佳模型,可以同时使用预剪枝与后剪枝。
模型树
叶结点不是固定值,而是分段线性函数。
优点:可解释性 & 更高的预测准确度。
误差度量:偏差平方和,也可以用R2值度量。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
参考书籍:
《机器学习.周志华》
《机器学习实战》