决策树:人类在面临决策问题时一种很自然的处理机制。例如:我们要对“这是好瓜吗?”这样的问题进行决策时,通常会进行一系列的判断,或“子决策”:我们先看“他是什么颜色?”如果是“青绿色”,则我们再判断“它敲起来是什么声音?”,最后,我们得出最终决策:他是个好瓜。
决策树的思想是一个分而治之的思想,把一个大问题分成各个属性进行依次判断。类似常见的写代码时候的if else else不停的进行判断。
划分选择:决策树的关键在于如何选择最优划分属性,一般来说,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即纯点的“纯度”越来越高。
信息增益:度量样本集合纯度最常用的一种指标。
En(D)的值越小,则D的纯度越高。因此我们常常以信息增益为准则来选择划分属性。
我们求出信息增益最大的属性,以它来划分属性。
增益率:信息增益准则对可取值数据较多的属性有所偏好,为了减少这种偏好可能带来的不利影响,不直接使用信息增益而是使用“增益率”来选择最优划分属性。增益率准则对可取纸数目较少的属性有所偏好。即:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
基尼系数:CART使用基尼系数来选择划分属性。数据的纯度可用基尼值来度量;
剪枝处理:剪枝是决策树学习算法对付“过拟合”的重要手段,个人感觉可以认为是神经网络中的drop层,用来删除一些权重来降低模型过拟合的风险。
决策树的剪枝策略有“预剪枝”和“后剪枝”两大类。
预剪枝是指在决策树的生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能的提升,则停止划分并将当前结点标记为叶结点;
后剪枝是指先从训练集生成一棵完整的决策树,然后自底向上的地对叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能的提升,则将该子树替换为叶结点。
连续值处理:由于连续值的可取数值不再有限,因此,不能直接根据连续属性的可取值来对结点进行划分。最简单的方法是采用二分法对连续属性进行处理,这正是C4.5决策树算法中采用的机制。
缺失值处理:现实任务中常会遇到不完整样本,即样本的某些属性值缺失,如果简单的放弃不完整样本,仅使用无缺失值的样本来进行学习,显然是对数据信息极大的浪费,因此如何利用有缺失属性值的训练样例进行学习是我们研究的重点。(可以类比kaggle房价预测中缺失值处理的方法)
解决上诉问题需要可分为两步:1、如何在属性值缺失的缺失的情况下进行划分属性选择?
2、给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
多变量决策树:若我们把每个属性视为坐标空间中的一个坐标轴,则 d 个属性描述的样本 就对应了 d 维空间中的一个数据点,对样本分类则意味着在这个坐标空间中寻 找不同类样本之间的分类边界.决策树所形成的分类边界有一个明显的特点:轴平行,即它的分类边界由若干个与坐标轴平行的分段组成。
然而,分类边界的每一段都是与坐标轴平行的。这样的分类边界使学习结果有较好的可解释性,因为每一段划分都直接对应了某个属性的取值。但在学习任务的真实分类边界比较复杂时,必须使用很多段划分才能获得较好的近似。
多变量决策树-斜线划分:使用斜的划分边界,则决策树模型将大为简化,以实现更为复杂的决策树。