决策树一棵对数据属性进行判断,得到分类或回归结果的二叉树或多叉树
分类决策树本质上是一个多维空间上的分段线性划分,回归决策树是分段常数函数
决策树通过递归分裂过程找到决策边界
决策树从不纯度角度确定分裂规则,分类树有熵不纯度,Gini不纯度和误分类不纯度;回归树则是最小化回归误差
决策树有预剪枝和后剪枝来防止模型过拟合,而后剪枝最常用的是CCP剪枝算法
一般先从大范围确定参数范围,再在小范围利用网格搜索来确定最佳参数组合
调参过程需要注意样本与特征之间的权衡,并且可以利用稀疏矩阵提高训练效率
决策树的定义
决策树是一种通过if-then-else规则进行有监督学习的算法。它是一棵对数据属性进行判断,得到分类或回归结果的二叉树或多叉树。
对于分类问题,本质上是一个多维空间上的分段线性划分,即用平行于各个坐标轴的超平面对空间进行切分;对于回归问题,本质是分段常数函数。
为了方便研究,先给出决策树一些基础概念:
我们把第一个分裂节点称为根节点(root);把最后停止分裂的节点称为叶子节点(leaf),其他节点称为非叶子节点(node)
比如下面一颗决策树:
0是根节点,1,2,5,8是非叶子节点,3,4,6,7,9,10是叶子节点。
与其他监督学习算法一样,决策树的目的是找到决策边界,尽快地将训练集正确的分类,或最小化训练集的回归误差。
决策树通过递归分裂过程找到决策边界的:
step1:用样本集D建立根节点,找到一个判定规则,将样本集分裂成D1和D2两部分,同时为根节点设置判定规则。
step2:用样本集D1递归建立左子树
step3:用样本集D2递归建立右子树
step4:如果不能再进行分裂,则把节点标记为叶子节点,同时为它赋值
为此,需要解决四个问题:
1.每个决策节点应该选取哪个特征做判定。即对n个变量Xi,对于某个决策节点,选取哪个X作为判断规则。
2.选定特征后,具体的分裂规则是什么。即对选定了Xj作为判断规则后,满足什么条件的样本进入左子树分支,什么条件的样本进入右子树分支。
3.何时停止分裂,把节点设置为叶子节点。
4.如何为每个叶节点赋予类别标签或回归值。
2.决策树的生成
先介绍分类问题,再介绍回归问题。
训练时需要找到一个分裂规则,把训练集D一分为二,因此需要引入一个评价标准,来判断分裂的好坏。决策树的目的是为了尽快的正确分类,即保证分裂后的每个子集尽可能属于不相交的一类或者几类,因此引入不纯度