决策树算法总结
决策树(Decision Tree)
决策树是一种树形结构,以信息熵为度量构造一棵熵值下降最快的树,它每个内部节点表示在某个特征上的分割使得分割前后熵值下降最快,到叶子结点处的熵值为零,此时每个叶结点中的样本都被归为同一类(训练时叶结点中数据的真实类别未必为同一类)。
决策树算法递归的选择最优特征,并用该特征分割数据集,使得对各个子数据集有一个最好的分类过程,这一过程对应着对特征空间的划分,也对应着决策树的构建。 决策树的训练过程就是递归的构建决策树的过程。
1. 信息论
1.1 自信息
自信息表示随机变量
1.2 熵
在信息论和概率统计中,熵表示随机变量不确定性的度量。 设
则随机变量X的熵被定义为自信息对
熵越大,随机变量的不确定性就越大。 特别的,当随机事件一定发生,即
1.3 条件熵
条件熵
条件熵也被定义为
1.4 信息增益
当熵和条件熵中的概率由参数估计(如极大似然估计MLE)得到时,所对应的熵分别为经验熵和经验条件熵。
信息增益表示在得知特征X的信息而使得类Y的不确定性减少的程度。
特征
一般地,熵
信息增益计算方法
根据信息信息增益选择特征的方法是:对训练数据集(或子集)D,计算其每个特征的信息增益,并比较他们的大小,选择信息增益最大的特征。
- 计算训练数据集的经验熵
- 遍历所有特征,对于特征A:
- 计算特征
对数据集 的经验条件熵 - 计算特征A的信息增益
- 计算特征
计算特征
其中,
1.5 信息增益比
以信息增益作为划分训练数据集的特征,存在偏向于选取取值较多的特征的问题,如:数据特征列如果有样本id的特征,则使用样本id计算经验条件熵
信息增益比定义为:
其中,
信息增益比相当于对特征值多的特征做了个归一化,校正信息增益容易偏向于取值较多的特征的问题。但是同样增益比对可取值数目较少的特征有所偏好,因此 C4.5 决策树先从候选划分属性中找出信息增益高于平均水平的特征,在从中选择增益率最高的。
1.6 Gini系数
基尼系数也是一种随机变量不确定性度量,可以看成是熵的泰勒近似,定义如下:
其中,
2. ID3算法
在决策树各结点使用信息增益进行特征选择,递归的构建决策树。
具体方法就是从根节点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子节点;再对子节点递归地调用以上方法,构建决策树;直至所有特征的信息增益均很小或没有特征可以选择为止,最后得到一个决策树。
- 算法步骤
输入:训练数据集
输出:决策树
- 若
中所有的样本都属于同一类 ,则 为单节点树,并将类 作为该节点的类别标签,返回T。 - 若待分割特征集合
为空,则 为单节点树,并将 中样本数类别最大的 作为该节点的类别标签,返回T。 - 若不符合上面两种情况,则按照信息增益算法公式计算
中每个特征对 的信息增益,选择信息增益最大的特征 。 - 如果
的信息增益小于阈值 ,则置 为单节点树,并将 中样本数类别最大的 作为该节点的类别标签,返回 。 - 如果
的信息增益大于阈值 ,则对 的每一个取值 ,依据 将 分割为若干非空子集 ,将 中样本数类别最大的类作为标记,构建子节点,由结点及其子节点构成树 ,返回T。 - 对第
个子节点,以 为训练集,以 为特征集,递归地调用上面5个步骤,得到子树 ,返回 。
3. C4.5算法
C4.5和ID3算法相似,C4.5是在ID3的基础上进行了改进,从ID3用信息增益来选取特征改成了用信息增益比来选取特征,其他步骤均与ID3算法一致。
4. CART算法
分类回归树(CART) 采用二分递归分割的 方法,基于基尼系数作为分割指标,将当前样本分割为两个子集,因此,CART算法构建的是一颗二叉树。
- 算法步骤:
输入:训练数据集D,特征值
输出:CART决策树 。
- 对于所有的特征值
以及它们可能的取值(分割点) ,以 为分割点计算基尼指数。 - 在所有可能的特征
以及他们的所有可能的切分点 中,选择基尼指数最小的特征及其分割点作为最优特征与最优分割点。 - 递归的对两个子节点调用(1)、(2),直到满足阈值
。
5. 连续变量
5.1 CART算法
CART算法对连续变量使用平方误差最小准则,进行特征选择构建二叉树。
- 算法步骤:
——————————————未完待续——————————————————
6. 决策树的评价
数据集的某个特征的信息增益(率)/gini指数越大,说明该特征对样本的熵的减小能力越强,即这个特征使得数据集的不确定性变得更小,该特征更加适合用于对数据集分类。
决策树的评价函数(损失函数)可以定义为:
即对决策树的所有叶子节点的熵求和,该值越小说明分类的效果越好。由于每个结点包含的样本数目不同,所以可对样本加权求熵和,上式中的
7. 决策树的剪枝
决策树生成算法是通过递归的方法产生决策树,直到不能继续下去为止,这样产生的树往往对训练数据的分类很准确,但对未知数据的分类却没那么准确,即出现过拟合的现象。过拟合的原因在于学习时过度考虑如何提高训练数据的正确分类,从而构建出过于复杂的决策树。解决这个问题的方法是减小决策树的复杂度,对已生成的决策树进行简化,我们把这种对已生成的树进行简化的过程称为剪枝。
三种决策树的剪枝算法相同,都是从已生成的树上裁掉一些子树或叶节点,并将其根结点或父节点作为新的叶节点得到新的树
7.1 剪枝算法
叶结点越多,决策树越复杂,损失越大,修正:
其中
剪枝系数计算方法:
考察以当前决策树
- 剪枝后的损失函数:
- 剪枝前的损失函数:
- 令二者相等,求得
剪枝算法步骤:
- 计算当前决策树
的所有内部节点为根节点构建子树的剪枝系数。 - 查找最小剪枝系数的结点,剪枝得到决策树
。 - 重复以上步骤,直到决策树
只有一个结点。 - 得到决策树序列
。 - 使用验证样本集选择最优子树。使用损失函数
作为评估指标。
8. Bagging策略
- 从样本集中有放回的重采样n个样本
- 在所有特征上,用这n个样本构建分类器(决策树、SVM、Logistic回归等)。
- 重复上述步骤m次,得到m个分类器。
- 将数据放在这m个分类器上,根据m个分类器投票结果,决定数据属于哪一类。
9. 随机森林
随机森林在Bagging基础上做了修改。
- 从样本集中用Bootstrap采样选出n个样本。
- 从所有特征中,随机选择k个样本,选择最佳分割特征作为结点构建CART树。
- 重复上述步骤m次,构建m课CART树。
- 这m课CART树形成随机森林,投票决定数据属于哪一类。
也可以使用决策树、SVM、Logistic回归构建基本分类器,也叫做随机森林。
投票机制:
- 简单投票机制
- 一票否决
- 少数服从多数
- 阈值表决
- 贝叶斯投票机制:加权投票
其中,
10. 样本不均衡处理方法
假定A类比B类样本多,且严重不平衡:
- A类欠采样
- 随机欠采样
- A类分成若干子类,分别与B类进行ML模型训练
- 基于聚类的A类分割,分别与B类进行ML模型训练
- B类过采样
- 避免欠采样造成的信息丢失
- B类数据合成
- 随机插值得到新样本
- SMOTE
- 代价敏感学习
- 降低A类权值,提高B类权值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)