决策树学习--个人总结
决策树
决策树算法采用树形结构,使用层层推理来实现最终的分类,是基于if-then-else规则的有监督学习算法。
决策树由三个元素组成:
根节点:包含样本的全部集合。
内部节点:对应属性的测试。
叶节点:代表决策的结果,也就是最后的分类。
决策的过程:
1、特征选择 决定了使用哪些特征来做判断。在训练数据集中,每个样本的属性可能有很多个,不同属性的作用有大有小。因而特征选择的作用就是筛选出跟分类结果相关性较高的特征,也就是分类能力较强的特征。在特征选择中通常使用的准则是:信息增益。
2、决策树生成 选择好特征后,就从根节点触发,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。
3、决策树剪枝剪枝的主要目的是对抗「过拟合」,通过主动去掉部分分支来降低过拟合的风险。
决策树代表实例属性值约束的合取的析取式。从树根到树叶的每一条路径对应一组属性测试的合取,树本身对应这些合取的析取。
信息量:对信息的度量,越小概率的事情发生了产生的信息量越大。
信息熵:信息量度量的是一个具体事件发生了所带来的信息,而熵则是在结果出来之前对可能产生的信息量的期望——考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。
条件熵:定义为X给定条件下,Y的条件概率分布的熵对X的数学期望。表示在已知随机变量Y的条件下,随机变量 X 的不确定性。
信息增益:表示得知属性 a 的信息而使得样本集合不确定度减少的程度
ID3:选择信息增益最大的特征(在数据集不充足以及客观存在的大数定律导致取值多的特征在计算条件熵时容易估计出偏小的条件熵,如果数据集足够大的话,均分到某特征的每个取值样本足够多,这时信息增益就没有偏向性)
C4.5:引入信息增益率(信息增益除了一个属性的固有值得来的,这个值要求随着分成的类别数越大而越小)作为特征的选择依据,找出信息增益高于平均水平的属性(这样保证了大部分好的的特征),再从中选择增益率最高的。增益率准则其实对可取类别数目较少的特征有所偏好!毕竟分母越小,整体越大。
决策树的优缺点
优点:
1、决策树易于理解和解释,可以可视化分析,容易提取出规则;
2、可以同时处理标称型和数值型数据;
3、比较适合处理有缺失属性的样本;
4、能够处理不相关的特征;
5、测试数据集时,运行速度比较快;
6、在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
缺点:
1、容易发生过拟合(随机森林可以很大程度上减少过拟合);
2、容易忽略数据集中属性的相互关联;
3、对于那些各类别样本数量不一致的数据,在决策树中,进行属性划分时,不同的判定准则会带来不同的属性选择倾向;
4、信息增益准则对可取数目较多的属性有所偏好(典型代表ID3算法),而增益率准则(CART)则对可取数目较少的属性有所偏好,但CART进行属性划分时候不再简单地直接利用增益率尽心划分,而是采用一种启发式规则)(只要是使用了信息增益,都有这个缺点,如RF)。
5、ID3算法计算信息增益时结果偏向数值比较多的特征。
随机森林:随机森林是由很多决策树构成的,不同决策树之间没有关联。当我们进行分类任务时,新的输入样本进入,就让森林中的每一棵决策树分别进行判断和分类,每个决策树会得到一个自己的分类结果,决策树的分类结果中哪一个分类最多,那么随机森林就会把这个结果当做最终的结果。
构成过程:
1、 假如有N个样本,则有放回的随机选择N个样本(每次随机选择一个样本,然后返回继续选择)。这选择好了的N个样本用来训练一个决策树,作为决策树根节点处的样本。
2、 当每个样本有M个属性时,在决策树的每个节点需要分裂时,随机从这M个属性中选取出m个属性,满足条件m << M。然后从这m个属性中采用某种策略(比如说信息增益)来选择1个属性作为该节点的分裂属性。
3、 决策树形成过程中每个节点都要按照步骤2来分裂(很容易理解,如果下一次该节点选出来的那一个属性是刚刚其父节点分裂时用过的属性,则该节点已经达到了叶子节点,无须继续分裂了)。一直到不能够再分裂为止。注意整个决策树形成过程中没有进行剪枝。
4、 按照步骤1~3建立大量的决策树,这样就构成了随机森林了。
优点
- 它可以出来很高维度(特征很多)的数据,并且不用降维,无需做特征选择
- 它可以判断特征的重要程度
- 可以判断出不同特征之间的相互影响
- 不容易过拟合
- 训练速度比较快,容易做成并行方法
- 实现起来比较简单
- 对于不平衡的数据集来说,它可以平衡误差。
- 如果有很大一部分的特征遗失,仍可以维持准确度。
缺点
- 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
- 对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的
参考:https://easyai.tech/ai-definition/decision-tree/
https://zhuanlan.zhihu.com/p/26703300