记-机器学习-决策树

1、比特化(Bits)

  ①   假设存在一组随机变量X,各个值出现的概率为:

 

 

     ②   现在有一组由X变量组成的序列:BACADDCBAC...;如果希望将这个序列转化为二进制来进行网络传输,那么我们得到一个这样的序列:01001000111110010010...

2、一般化的比特化(Bits)

  ①   假设现在随机变量X具有m个值,分别为:  ;并且各个值出现的概率为:

 

        可以使用这些变量的期望来表示每个变量需要多少个比特位来描述信息: 

 

 

 3、信息熵

   H(X) 就叫做随机变量X的信息熵;

 

 

  ①   信息量:值的是一个样本/事件所蕴含的信息,如果一个事件的概率越大,那么就可以认为该事件所蕴含的信息越少

  ②   信息熵:一个系统越是有序,信息熵就越低,一个系统越是混乱,信息熵就越高,所以信息熵被认为是一个系统有序程度的度量

  ③   信息熵就是用来描述系统信息量的不确定度

  ④   高信息熵:表示随机变量X是均匀分布的,各种取值情况是等概率出现;低信息熵:表示随机变量X各种取值不是等概率出现的,有的事件出现概率高,有的事件出现的概率低

4、条件熵

  H(Y|X):表示在X发生的条件下Y发生的信息熵  

 

 

  ①   给定X的情况下,所有不同x值情况下Y的信息熵的平均值叫做条件熵。 

 

 

  ②   事件(X,Y)发生所包含的熵,减去事件X单独发生的熵,即是在事件X发生的前提下,Y发生“新”带来的熵,

  ③    

      

5、决策树

  ①   决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构建决策树来进行分析的一种方式,是一种直观应用概率分析的一种图解法;决策树是一种预测模型,代表的是对象属性与对象值之间的映射关系;决策树是一种属性结构,其中每个内部节点表示一个属性的测试,每个分支表示一个测试输出,每个叶节点代表一种类别;决策树是一种非常常用的有监督的分类算法

  ②   决策树的决策过程就是从根节点开始,测试待分类项中对应的特征属性,并按照其值选择输出分支,直到叶子节点,将叶子节点的存放的类别作为决策结果

  ③   决策树分为两大类:分类数和回归树,前者用于分类标签值,后者用于预测连续值,常用算法有ID3、C4.5、CART等

6、 决策树的构建过程

  ①   决策树算法的重点就是决策树的构造;决策树的构造就是进行属性选择度量,确定各个特征属性之间的拓扑结构(树结构),构建决策树的关键步骤就是分裂属性,分裂属性是指在某个节点按照某一类特征属性的不同划分构建不同的分支,其目标就是让各个分裂子集尽可能的‘纯’(让一个分裂子类中待分类的项尽可能的属于同一个类别)

  ②   构建步骤为:

    (1)将所有的特征看成一个一个的节点;

    (2)遍历每个特征的每一种分割方式,找到最好的分割点,将数据划分为不同子节点

    (3)对第二步产生的分割,选择出最优的特征以及最优的划分方式,得出最终的子节点

    (4)对子节点分别继续执行2-3步,直到每个最终的子节点都足够‘纯’   

7、决策树特征属性类型

  ①   属性是离散值,而且不要求生成的是二叉决策树,此时一个属性就是一个分支

  ②   属性是离散值,而且要求生成二叉决策树,此时使用属性划分的子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支

  ③   属性是连续值,可以确定一个值作为分裂点split_point,按照>split_point和<=split_point 生成两个分支

8、决策树分割属性选择

  ①   决策树算法是一种"贪心"算法策略,只考虑在当前数据特征情况下的最好分割方式,不能进行回溯操作

  ②   对于整体的数据集而言,按照所有的特征属性进行划分操作,对所有划分操作的结果集的"纯度"进行比较,选择"纯度"越高的特征属性作为当前需要分割的数据集进行分割操作,持续迭代,直到得到最终结果,决策树是通过"纯度"来选择分割特征属性点的

9、决策树量化纯度

  ①   决策树的构建是基于样本概率和纯度进行构建操作的,那么进行判断数据集是否"纯"可以通过三个公式进行判断,分别是Gini系数,熵(Entropy),错误率,这三个公式值越大,表示数据越“不纯”,越小表示越"纯";实践证明这三种公式效果差不多,一般使用熵公式

     

 

   ②   当计算出各个特征属性的量化纯度值后使用信息增益度来选择出当前数据集的分割特征属性;如果信息增益度的值越大,表示在该特征属性上会损失的纯度越大,那么该属性就越应该在决策树的上层

 

   ③   Gain为A为特征对训练数据集D的信息增益,它为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差     

10、决策树算法的停止条件

  决策树构建过程是一个递归的过程,所以必须给定停止条件,否则过程将不会进行停止,一般情况下,停止条件有一下两种:

    ①   当每个子节点只有一种类型的时候停止构建

    ②   当前节点中记录数小于某个阀值,同时迭代次数达到给定值时,停止构建过程,此时使用max(p(i))作为节点的对应类型

         注:方式一可能会使树的节点过多,导致过拟合(overfitting)等问题;比较常用的方式是使用方式二作为停止条件

11、决策树算法效果评估

  ①   决策树的效果评估和一般的分类算法一样,采用混淆矩阵来进行计算准确率、召回率、精确率等指标

  ②   也可以采用叶子节点的纯度值总和来评估算法的效果,值越小,效果越好 

 12、决策树的损失函数(该值越小,效果越好)

    

 

13、决策树生成算法---ID3算法

  ID3算法是决策树的一种经典的构造算法,内部使用信息熵以及信息增益来进行构建,每次迭代选择信息增益最大的特征属性作为分割属性

          

 

 

  ①   优点:决策树构建速度快,实现简单

  ②   缺点:计算依赖于特征数目较多的特征,而属性值最多的属性并不一定最优

       ID3算法不是递增算法

         ID3算法是单变量决策树,对于特征属性之间的关系不会考虑

       抗噪性差

       只适合小规模数据集,需要将数据放到内存中 

14、C4.5算法

  在ID3算法的基础上,进行算法优化提出的一种算法(C4.5);现在C4.5已经是特别经典的一种决策树构造算法;使用信息增益率来取代ID3算法中的信息增益,在树的构造过程中会进行剪枝操作进行优化;能够自动完成对连续属性的离散化处理;C4.5算法在选中分割属性的时候选择信息增益率最大的属性,涉及到的公式为: 、 、

 

 

  ①   优点:产生规则易于理解

 

         准确率较高

 

       实现简单

 

  ②   缺点:对数据集需要进行多次顺序扫描和排序,所以效率比较低

 

       只适合小规模数据集,需要将数据放到内存中

 

15、CART算法

 

  使用基尼系数作为数据纯度的量化指标来构建的决策树算法就叫做CART(Classification And Regression Tree,分类回归树)算法。CART算法使用GINI增益作为分割属性选择的标准, 选择GINI增益最大的作为当前数据集的分割属性;可用于分类和回归两类问题。特别注意的是:CART构建是二叉树        、  

 

 

16、ID3、C4.5、CART分类数算法总结

  ①   ID3和C4.5算法均只适合在小规模数据集上使用

  ②   ID3和C4.5算法都是单变量决策树

     ③   当属性值取值比较多的时候,最好考虑C4.5算法,ID3算法得出的效果会比较差

  ④    决策树分类一般情况只适用小数据量的情况(数据可以放到内存)

  ⑤   CART算法是三种算法中最常用的一种决策树构建算法

  ⑥   三种算法的区别仅仅只对于当前树的评价标准不同而已,ID3使用信息增益、C4.5使用信息增益率、CART使用GINI系数

  ⑦   CART算法构建的一定是二叉树,ID3和C4.5构建的不一定是二叉树

17、分类树和回归树的区别

  ①   分类树采用信息增益、信息增益率、基尼系数来评价树的效果,都是基于概率值进行判断的;而分类树的叶子节点的预测值一般为叶子节点中概率最大的类别作为当前叶子的预测值

  ②   在回归树中,叶子节点的预测值一般为叶子节点中所有值的均值来作为当前叶子节点的预测值,所以在回归树中一般采用MSE作为树的评价指标,即均方差 

 

     ③   一般情况下,只会使用CART算法构建回归树

18、决策树优化策略

  ①   剪枝优化:

    决策树过度拟合一般情况是由于节点太多导致的,剪枝优化对决策树的正确率影响是比较大的,也是最常见的一种优化方法

  ②   Random Forest

    利用训练数据随机产生多个决策树,形成一个森林。然后使用这个森林数据进行预测,选取最多结果作为预测结果

19、决策树的剪枝

  ①   前置剪枝:在构建决策树的过程中,提前停止。结果是决策树一般比较小,实践证明这种策略无法得到比较好的结果

  ②   后置剪枝:在决策树构建好后,然后在开始裁剪,一般使用两种方式:1) 用单一叶子节点代替整个子树,叶节点的分类采用子树中最主要的分类;2)将一个子树完全代替另一棵子树;后置剪枝的主要问题是计算效率问题,存在一定的浪费情况

20、后剪枝总体思路(交叉验证):

  ①   由完全树T0开始,剪枝部分节点得到T1,再次剪枝得到T2......直到仅剩树根的树Tk

  ②   在验证数据集上对k+1个树进行评价,选择最优树T(a)(损失函数最小的树)

22、决策树剪枝过程

  ①   对于给定的决策树T(0)

    计算所有内部非叶子节点的剪枝系数

    查找最小剪枝系数的节点,将其节点进行删除操作。进行剪枝得到决策树T(k);如果存在多个最小剪枝系数节点,选择包含数据项最多的节点进行剪枝操作

    重复上述操作,直到产生的剪枝决策树T(k)只有1个节点

    得到决策树T(0)T(1)T(2)......T(k)

    使用验证样本集选择最优子树T(a)

  ②   使用验证集选择最优子树的标准,可以使用原始损失函数来考虑:

      

 

23、决策树剪枝损失函数及剪枝系数

  ①   原始损失函数: 

 

  ②   叶节点越多,决策树越复杂,损失越大;修正添加剪枝系数,修改后的损失函数为:

 

     ③   考虑根节点为r的子树,剪枝前后的损失函数分别为loss(R)和loss(r),当这两者相等的时候,可以求的剪枝系数

             

 

       

 

   

 24、ID3、C4.5、CART分类树算法总结

  

posted @ 2020-08-26 17:04  leon-chan  阅读(256)  评论(0编辑  收藏  举报