决策树是一种常用的监督学习方法,它根据输入的训练集各样本的特征向量和标签从上到下建立一棵树,每个非叶结点是一个特征,每个叶结点是一个标签,结点之间的边是特征的一个取值。决策的过程就像程序流经层层嵌套的if-else语句,最后进到一个不再细分的块(叶结点)里,从而预测出样本的归类。
决策树的优点是简单实用、速度快、白盒决策(即人可以理解模型的决策过程,相应的像深度学习模型的决策过程人就无法理解),缺点是、、启发式建树往往找不到最优解;决策过程很“硬”,只根据信息增益来选择特征,且特征用过就不能“回头”,特征向量很大时问题可能更明显;容易造成过拟合。
建树的过程,本质上就是不断挑选特征作为“分叉标准”。我们当然希望能找出一颗“全局最优”的决策树,但很遗憾这是一个NP完全问题。因此只好退而求其次,采用启发式的学习方法,即每次都在当前剩下的特征里挑选一个“最能将训练集正确划分”的特征作为下一个结点,挑选的标准是来自信息论的“信息增益”等概念。所谓信息增益,即在获得这个信息之后,整个系统的混乱未知程度(熵)下降的大小。
决策树有三种生成算法,ID3、C4.5和CART,前两种是针对分类问题的,第三种既可以用于分类问题,也可用于回归问题。
一、ID3算法
采用信息增益作为特征选取的标准。伪代码如下:
1.初始有一个样本分组,即训练集全体样本;每组有一个对应的特征集合,初始样本分组对应的特征集合为全体特征。
2.若分组里绝大部分样本都处在同一个分类,或分组对应的特征集合为空,则创造一个叶结点,以样本投票决定该结点的标签名;
3.逐个计算特征集合里各特征的信息增益,若最大的信息增益未达到阈值,则创造叶结点;若达到了阈值,则以信息增益最大的特征为非叶结点,按特征取值将样本分组,并将该特征从特征集合里剔除,剩下的特征集合作为各新分组的对应特征集合。然后每组递归执行2、3步。
二、C4.5算法
与ID3几乎完全一样,唯一的区别是把信息增益换成了信息增益比,原因是信息增益的计算方法有利于取值较多的特征。信息增益比用特征本身的经验熵去除它所带来的信息增益,矫正了上述问题。
三、CART算法
CART全称Classification And Regression Tree,既可用于分类问题,也可用于回归问题。
CART最大的特点是,它构建的是二叉树。以分类树为例,其生成算法如下:
1.对结点上的特征集上的每个特征A及其每个取值a,根据样本对于A=a的测试结果为“true"或"false"将样本分为两组,并计算其基尼指数。
2.依基尼指数最小的特征相应的切分点,从现结点生成两个子节点,将现结点上的样本分配到子节点内。
递归执行1、2直到满足停止条件。停止条件包括:样本个数小于阈值、样本集基尼指数小于阈值(基本属于同一类)、没有更多特征可选等。