决策树
接着上篇文章决策树1
基尼指数
CART(classification and regression tree)决策树使用“基尼指数”来选择划分属性,数据集的纯度此时用基尼值来度量:
其中 表示分类的类数。直观的说,Gini(D)反映了从数据集D中随机抽取两个样本, 其类别标记不一样的概率。 因此Gini(D)越小,则数据集纯度越高。
属性a的基尼指数定义为:
于是,我们在候选属性集合中选择基尼指数最小的属性作为最优划分。
剪枝处理
剪枝是决策树学习算法对付过拟合的主要手段,剪枝处理主要分为两种:预剪枝(prepruning)和后剪枝(postpruning)。
- 预剪枝
预剪枝是指在决策树生成的过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化能力的提升,则停止划分并将当前结点标记为叶结点。 - 后剪枝
后剪枝是先从训练集生成一颗完整的决策树,然后自底向上的对非叶结点进行考察,如将该结点对应的子树替换为叶结点能带来泛化能力的提升,则将该子树替换为叶结点。
连续值处理
我们现在只能对离散的属性来生成决策树, 那么连续值又该如何处理呢?
由于连续属性的可取值不再有限,因此不可能直接用连续属性的可取值对结点进行划分。因此要使用属性离散化,最简单的是使用二分法对属性进行处理。
举个例子,我们的西瓜新加了一个属性:含糖度,很显然这是一个连续值。那么首先我们对我们所有样本按照含糖度进行排序, 例如有5个样本。然后对相邻的两两进行加和,比如含糖度{1,2, 3, 4, 5 }, 加和之后为{3, 5,7, 9}。然后把这四个值每个拿出来当作划分点, 找出一个划分点的信息增益最高作为最优划分点。
注意,和离散属性不同,如果当前结点划分属性为连续型属性,该属性无需从候选划分属性中删除, 之后还可以继续使用。
缺失值的处理
编号 | 色泽 | 根蒂 | 敲声 | 纹理 | 脐部 | 触感 | 好瓜 |
---|---|---|---|---|---|---|---|
1 | - | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
2 | 乌黑 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | - | 是 |
3 | 乌黑 | 蜷缩 | - | 清晰 | 凹陷 | 硬滑 | 是 |
现实生活中,常会遇到不完整的样本,像上图一样。也就是某些属性值丢失,如果简单的放弃不完整的样本,仅使用无缺失的样本进行学习,显然是对数据信息极大的浪费, 因此我们要考虑利用有缺失值进行学习。
存在两个问题
- 如何在属性值缺失情况下进行划分属性选择
- 给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分。
信息增益的推广:
其中,
为无缺失样本所占的比例, 表示无缺失样本中第k类所占的比例, 表示无缺失值样本在属性a上取值为 的样本所占的比例。
其实这个公式只是变成了在无缺失样本中进行考虑,其余每个参数的含义都是相同的。