决策树
Decision Tree(决策树)
决策树是一种简单但广泛使用的分类器,它通过训练数据构建决策树,对未知的数据进行分类。决策树的每个内部节点表示在一个属性上的测试,每个分枝代表该测试的一个输出,而每个树叶结点存放着一个类标号。
在决策树算法中。
- ID3基于信息增益作为属性选择的度量,
- C4.5基于信息增益比作为属性选择的度量,
- CART基于基尼指数作为属性选择的度量。
决策树的优缺点
- 优点
1、不需要任何领域知识或参数假设
2、适合高维数据。
3、简单易于理解。
4、短时间内处理大量数据,得到可行且效果较好的结果。
5、使用可视化模型。 - 缺点
1、对于各类别样本数量不一致数据,信息增益偏向于那些具有更多数值的特征。
2、易于过拟合。
3、忽略属性之间的相关性。
4、不支持在线学习
5、它们是不稳定的,这意味着数据的微小变化可能导致最优决策树结构的巨大变化。
6、计算可能变得非常复杂,特别是如果许多值不确定和/或许多结果是相关的。
决策树公式
树模型
- 决策树:从根节点开始一步步走到叶子节点(决策)。
- 所有的数据最终都会落到叶子节点,即可以应用于分类也可以做回归。
树的组成
- 根节点:第一个选择点
- 非叶子节点于分支:中间过程
- 叶子节点:最终的决策结果
决策树的训练与测试
- 训练阶段从给定的训练集构造出一颗树,从根节点开始选择最有价值的特征开始切分节点。
- 测试阶段:根据构造出来的树模型从上到下走一遍。
- 一旦构造好了决策树,那么分类或者预测任务就很简单了,只需要走一遍就可以了,那么难点在于如何构造出一个树。
特征切分
存在的问题:根节点的选择该用那个特征呢?接下来我们要如何划分?
思考:我们的目标应该使根节点就像老大,根节点下面的节点就像老二,老大应该比老二能更好的切分数据。
目标:选择一种衡量标准,来计算通过不同特征进行分支选择后的分类情况,找出来最好的就作为我们的根节点,以此类推确定所有的节点的划分标准。
衡量标准——熵
- 熵:表示随机变量不确定性的度量(就是一个整体中内部元素的混乱程度,元素种类越多混乱程度越高)
- 公式:
公式中pi表示第i种情况的概率
- 熵值熵值与不确定性一般成正比
下图为熵值与概率的关系图:
决策树算法
- ID3:信息增益(存在的问题:每个数据都有一个ID特征(1,2,3,…,14),根据该特征分类之后的熵值恒为 0 ,但是实际上根据这个特征分类毫无意义)
- C4.5:信息增益率(是ID3的升级,考虑自身熵值)
- CART:使用GINI系数来作为衡量标准
- GINI系数(基尼系数):
减枝策略
离散化,
把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。
通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:
原数据:1,999,100000,15;处理后:1,3,4,2;
原数据:{100,200},{20,50000},{1,400};
处理后:{3,4},{2,6},{1,5};
- 针对连续值我们可以采用“离散化”的方式减少决策树计算量过大,叶子节点过多的问题。例如一组特征值为60,70,80,90,95,100,120,125,220。直接采用二分将会出现9个节点。如果我们人为分成A(60-80)、B(90-100)、C(120-220),我们只需要分成3类即可。当然要根据特征含义和特定分析条件下选择是否分割数据。
- 决策树剪枝:为了防止过拟合情况。(决策树过拟合分析很大,理论上可以完全分开数据,使得每个叶子节点只存在一个数据)
- 剪枝策略:
1、预剪枝(实用):边建立决策树边进行剪枝操作。方法:限制树的深度,叶子节点的个数,叶子节点包含的样本树,信息增益量等。
2、后剪枝:当建立完决策树后来进行剪枝操作。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CJH's blog!