决策树=结点+有向边
利用决策树进行决策,首先从根节点开始,逐步向下,直到符合条件的叶节点为止,得到最终结论或是进一步的判定问题。根节点到每个叶节点的路径对应了一个判定测试序列。
决策树学习:
目的:产生一棵泛化能力强, 即处理未见示例能力强的决策树。
过程:设训练集为,属性集为
1.生成节点;
2.判断:
(1)均属于同一类别,则直接将节点标记为此类的叶节点,结束;
(2)空,或者中样本在上取值相同,则直接将节点标记为中样本数最多的类的叶节点,结束;
(3)否则,选择一个最优划分属性,为其每个值在节点上生成一个分支,并将中取值为的样本记作;
3.当为空时,对应的分支节点直接标记为叶节点,类别标记为其父节点样本数最多的类的叶节点,结束;
否则,在此节点上重复以上过程。
这个过程产生了一些问题,比如,如何选择最优划分属性?
经典的划分方法有ID3,C4.5,CART等。
ID3:
(信息熵:度量样本的信息纯度。设样本集中第类样本所占比例为,则信息熵)
对于离散属性,可能有多个取值,用它划分会产生个分支节点,其中第个节点包含了样本集中所有在上取值为的样本,将这一子集记作,于是信息增益
但是,信息增益对取值范围较大的属性有相当大的偏好。例如,编号的信息增益一般远大于其他属性,但不能认为编号是最优划分属性。否则,这样得到的决策树缺少泛化能力。
为了解决取值范围的问题,增益率应运而生。增益率,其中为属性a的“固有值”
然而,增益率也对取值范围小的属性有所偏好。为此,C4.5算法结合了二者:先找增益高于平均的,再找其中增益率最高的,有效规避了二者的短处。
CART:
基尼系数:概率分布的基尼系数,反映了随机抽取两个样本,类别标记不一致的概率。
属性的基尼系数,以划分后基尼系数最小的作为最优划分依据。
为了解决过拟合问题,还需要对该树做剪枝处理,以提升其泛化性能。
剪枝包括预剪枝和后剪枝两种基本策略。
所谓预剪枝,就是通过提前停止树的构建,实现剪枝,主要方法有:预设高度、检测特征向量、设置实例数量最小值、增益评估。问题在于,预剪枝依赖的参数基本是超参数,即难以预估何时剪枝;有些分支不能提高性能,但后续却可以,而预剪枝禁止了这个分支的生长,存在欠拟合风险。
后剪枝,就是在整棵树构建完成后,自底向上,由叶节点开始尝试,对精度有提高的直接剪掉,否则保留。这种方法有效避免了过拟合,同时泛化性能强,但开销大。
对于连续属性,我们不能直接处理无限多个值,但可以用二分法离散化:
1.将连续属性在上的所有取值从小到大排列,记作,基于划分点将分为(大于)和(不大于)两部分,而划分点集合;
2.计算划分点的增益,选取最优的划分点进行划分。
对于多变量决策树,非叶结点本质上是对属性的线性组合,是类似于的线性分类器。