第二十四节决策树系列之分裂流程和Gini系数评估(3)
算法
上一节中咱们讲解了决策树的数学表达形式,本节的话咱们讲解决策树的分裂流程以及分裂条件的评估。咱们基于决策树的递归表达式上:app
就能够知道训练一颗决策树须要哪些条件?台湾大学林轩田教授给咱们一个总结。工具
因此决策树从迭代考虑分裂的话咱们须要4个条件: 一、分支个数(number of branches)即每次分裂要分红几支。 二、分支条件(branching criteria),当前分支判断的条件。 三、终止条件(termination criteria),不可能一直分下去,要有个终止条件。 四、基本算法(base hypothesis),叶子结点到底如何表达。四个问题搞明白了,如何获得一棵决策树咱们就明白了。学习
咱们的目标是经过大量的数据生成一棵很是好的树,用这棵树来预测新来的数据。好就是必定要能反映客观规律,在大数定理的理论支持下,若是收集的训练集足够庞大,训练集就必定程度上可以反映客观规律。而后咱们用生成好的树来预测新来的数据,举个例子来解释下如何生成决策树的4个条件?假如训练集上有100条数据,首先全部的数据都在根节点里面出现。咱们要给它分到各个子树里面,那么每次分裂要分红几份?这是第一个问题;假如分红两份的状况下,以什么条件来分份?什么分裂条件最好,必定是经过实际的计算,遍历全部的分裂条件,获得某种分裂条件下某种评分形式最高,就用什么做为分裂条件。因此第二个问题是以什么条件来分份。但何时中止分裂呢?数据不断分裂的递归过程,每一次分裂,尽量让类别同样的数据在树的一边,当树的叶子节点的数据都是一类的时候,则中止分类(if else语句)。这是第三个问题。分好的叶子节点里有yes和no两种表达,当新数据过来落到这些叶子结点上究竟是yes仍是no?这是第四个问题。大数据
假如如今有30个正例30个负例如图,哪一种分法更好?为何不直接给它30正例,30负例分好就能够?spa
因此接下来咱们的文章会围绕着如下生成一颗决策树的几点考虑进行展开。翻译
一、第一个将原始数据集筛选.分类成子数据集的分类依据? 也就是须要计算分类后的纯度。3d
二、第二个对生成的子数据集不断分类 直到中止。那何时会中止,也就是中止的条件是什么?code
三、第三个只要中止了以后,你如今获得的是一个包含着若干数据点的一个节点,可是节点究竟是Y仍是N,或者多分类状况的时候是1仍是2仍是3仍是4,也须要经过落在最终叶子节点上的训练集上的数据的共性来表明这个节点。假如这个节点分出来的全都是正例,那么未来也得说,它判断出来为正例。如何定性的判断它的共性?blog
本节的话咱们讲解第一个问题,纯度的量化方式,即咱们分裂条件的计算标准。经常使用的纯度的计算方式有Gini系数,信息增益,信息增益率。而这三种计算方式所生成的树分别对应着,CART树,ID3树,C4.5树。对于CART树和ID3这两个树来说,它的默认分两支,永远只分两支,它是一个二叉树。对C4.5来讲,它能够分若干个节点。CART意思是Classification and Regression Trees,分类与回归树, 既能够处理分类问题,又能够处理回归问题。
咱们说下第一种定量的计算纯度的方式,基尼系数。公式以下:
pi表明各个类别的几率,对于离散的状况来讲,一般咱们认为在数据量足够大的状况下,频率能够近似等于几率。假设有10000条数据,其中有2000条是正例,8000条是负例,在不知道任何信息的状况下,拿一条新的数据,就判断属于正例的几率是多少,只有估计20%是最合理的。有可能估计错,但只有这么估计是最合理的。由于几率永远在小数据集上没有意义,拿了一条数据,说它几率是20%正例80%负例没有任何意义,由于有可能估计错;但一下拿来10万条数据,它最终在统计上会趋近于有20%的数据变成正例,80%数据变成负例。几率在大数据量上才有它的意义。咱们这里经过一个节点内各个label样本的占比(即频率)近似这里的各个类别的pi几率,因此从这里能看出决策树是有监督学习。由于是经过样本的label,获得各个类别的比例。因此训练的时候有人说用到y,是用在计算基尼系数上了,而不是用来做为分裂条件的。
i表明着当前节点包含几种可能性,对分类来讲,也就是全部的类别占比。
咱们所谓统计纯度就是统计某一个节点内部的纯度。举个例子说明下,假如一个节点有2000个正例,8000个负例,也就是正负0.8:0.2的比例,在这种状况下,p(i)有几种可能?两种。一个是p(Y)即0.2,一个是p(N)即0.8。根据公式,这时这个节点内部的基尼系数是1-(0.2^2+0.8^2)。假如一个节点内所有是正例的话,正负比例为1:0,此时基尼系数等于0;最纯不过。假如比例是0.5:0.5 ,此时基尼系数等于0.5。因此咱们能够总结出基尼系数用来评估纯度时,数值 越低表明着越纯。
所以如今就有一个工具,能够定性的去计算,这个节点里边纯仍是不纯,能够必定程度上经过基尼系数来判断。这是判断一个节点纯仍是不纯,而每次的分裂不只仅分列出一个节点,怎么评估此次分裂的好坏呢?好比下面例子:
经过基尼系数来选择一个最好的分类标准,就是尝试进行若干种分裂方式,哪一种最后结果最好,纯度最高,就选哪一种,由于纯度高表明着将来子树会少分几回。
一般一棵树要分多少层?若是不加限制的话,可能会分红几百层,对于Cart树来讲,就会有一个致命的缺陷,它是按照计算纯度来评价分裂好坏,若是不对它进行限制,让它一直分裂纯度会达到100%,最极端状况,每一个叶子节点有一个数据,总能让它分到纯度最高,至关于就是记录了一下。因此生成的树一般会人为限制它的层数,不让它太深。
下节的话咱们讲解另外两种评估纯度的计算方式。