决策树是很基础很经典的一个分类方法,基本上很多工业中很使用且常用的算法基础都是决策树,比如boost,GBDT,CART(分类回归树),我们后需会慢慢分析,决策时定义如下:
决策树:决策树模型是一种描述对实例进行分类的树形结构,其算法思想是分治法,由节点(node)和有向边组成,节点分两种类型,内部节点和叶子节点,内部节点标示一个特征或者树形,叶子节点表示一个类。
比如下面就是一个根据西瓜一些特征(来自周志华-机器学习)来分类好瓜坏瓜的决策树:
决策树难点在于划分选择,我们总是希望决策树的分支节点所包含的样本尽可能的属于同一类别,既节点的纯度高!
定义纯度最常用的是信息熵,信息熵越大标示混乱度越大,而越小则标示纯度越高
pk表示当前样本集合D中的第k类样本所占的比例,Ent(D)表示信息熵
同时我们基于信息熵定义信息增益,
Dv表示属性a上取值为av的属性的样本数目,比如上面西瓜里面属性纹理里面纹理清晰的西瓜数目,我们可以看个例子
有这样一个西瓜数据集:
这个数据集中正例p1=8/17,反例占p2=9/17,我们计算根节点的信息熵
然后我们就可以计算各个属性的信息增益,例如我们计算“色泽”,包括(D1青绿,D2乌黑,D3浅白),青绿编号为{1,4,6,10,13,17},其中正例3/6,反例3/6计算如下
则“色泽”的信息增益:
我们同时可以计算出其他属性的信息增益,这里计算完之后发现“纹理”的增益为0.381,增益最大,所以我们选择先按纹理划分,最终的划分结果解释刚开始给出的样例决策树。
根据以上介绍我们可以知道决策树的优缺点:
优点
计算简单,易于理解,可解释性强;
比较适合处理有缺失属性的样本;
能够处理不相关的特征;
在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
缺点
容易发生过拟合(随机森林可以很大程度上减少过拟合);
忽略了数据之间的相关性;
对于那些各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征(只要是使用了信息增益,都有这个缺点,如RF,可用信息增益比解决)。
可以看出它很容易过拟合,原因是他会依照数据去不断划分子树,只要可划分就会一直划分下去,所以我们会想到用剪枝去避免过拟合。
剪枝分为预剪枝和后剪枝。
剪枝我们还需要一个验证数据集,通过训练数据集简历决策树,然后用验证数据集去验证,如果当前分支我们直接剪掉换成叶子节点,会不会提升验证集合的精度,例如上面决策树通过触感硬滑和软粘分好瓜和坏瓜,如果验证集合到这个子树下面不管硬滑还是软粘都是好瓜,那么我们可以直接剪掉换成好瓜叶子节点,其精度提升了50%
预剪枝就是从树建树开始,