决策树
决策树是一种基于树状结构的监督学习模型,常用于分类和回归任务。它的基本思想是通过一系列问题的分层次判断,将数据分割成越来越小的子集,直到达到预期的目标。
局部最优
在构建决策树的机器学习过程中,通常采用贪心算法(Greedy Algorithm)作为核心的分割策略。这种方法的基本原理是:在每一步决策时,都选择当前条件下最优的分割方式,而不考虑这一选择对后续步骤可能产生的影响。
具体来说,决策树的构建过程会递归地进行以下操作:
- 在当前节点上,计算所有可能的特征和分割点的信息增益(或基尼不纯度等分裂标准)
- 选择使信息增益最大化的特征和分割点
- 根据选定的分割将数据集划分为若干子集
- 对每个子集递归地重复上述过程,直到满足停止条件
剪枝
剪枝是一种用于防止决策树过拟合的方法。常见的剪枝方法有预剪枝(pre-pruning)和后剪枝(post-pruning)。
- 预剪枝:在决策树生成的过程中,对每个节点在划分前先进行估计,如果当前的节点划分不能带来决策树泛化性能的提升,则停止划分
- 后剪枝:先训练生成一颗完整的树,自底向上对非叶节点进行考察,如果该节点对应的子树替换为叶节点能带来决策树泛化能力的提升,则替换
分裂
分裂是决策树构建中的核心过程,指的是从根节点开始,根据某个特征的值,将数据划分到不同的子节点中。
二叉分裂
二叉分裂是一种特定的分裂方式,每次只将节点分成两个子节点,形成一个二叉树结构。许多决策树算法(如CART算法)就是基于二叉分裂构建的。
修改局部最优条件
- 以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题
- 使用信息增益比(information gain ratio)可以对这一问题进行矫正
连续变量处理手段
在C4.5中,如果输入特征字段是连续型变量,则算法首先会对这一列数进行从小到大的排序,然后选取相邻的两个数的中间数作为切分数据集的备选点。若一个连续变量有N个值,则将产生N-1个备选切分点。
分裂准则
- 分类树:Gini准则,与信息增益很类似,Gini系数度量一个节点的不纯度
- 回归树:一种常见的分割标准是偏差减少(Stand Deviation Reduction,SDR),类似于最小均方差LS准则
测试集和验证集
- 训练集、测试集和验证集的划分通常遵照6:2:2的比例进行划分
- 验证集数据不参与建模也不参与模型修改和优化,只用于模型最终优化后的模型效力评估
错误速查表
| 症状 | 根因 | 修复 |
|---|---|---|
| 训练集准确率高、线上/测试集差 | 树太深、叶子太纯导致过拟合 | 预剪枝、后剪枝、交叉验证 |
| 总是选”取值很多”的特征先分裂 | 信息增益对多取值特征有偏好 | 使用增益率/基尼系数 |
| 连续变量分裂很慢 | 候选切分点多(N-1) | 先分箱/采样候选点 |
| 多路分裂后数据碎片化严重 | 多路分裂稀释样本 | 倾向二叉分裂 |