开发Study|《机器学习》(西瓜书)第4章 决策树理解记录

决策树产生预测结果需要进行前边的一系列的判断条件。
项目实验步骤:首先设置训练集和属性集,然后生成结点node,先判断D中样本集属于同一类别,这种情况下将node结点的类别标记为该类别;然后判断D中样本在属性集合中取值一样或属性集为空集,那么将node标记为样本中样本数目最多的类别,并将Node设置为叶结点。从A属性集合中划分出属性a,然后对a中的每一个属性ai,将D样本集在属性a上取ai的样本集记为Di,然后如果Di为空集,那么将该node结点标记为样本最多的类;如果Di不是空集,那么将按照该node结点向下,继续以Di作为样本集,将A中除去a的集合作为新的属性集合从而进行下一步的划分。这样一来就生成了一个决策树。

上述过程中重点注意的是属性划分选择的过程:
【开发Study|《机器学习》(西瓜书)第4章 决策树理解记录】尽可能使得结点的纯度越来越高。这里使用信息熵来进行对样本纯度的度量。
信息熵:是将样本集中的所有类别的样本的概率进行一个求和之后求负。也就是说信息熵越小D样本集的纯度越高。
信息增益:对某一个属性a的取值集合,如果使用该集合对样本集D进行划分,那么产生v个分支结点,第V个分支结点包含了D中所有属性取值为V的样本集合。然后使用上述的信息熵的计算公式对D中的样本进行计算,然后对V个结点进行简单的权重赋值之后进行求和,从而得到了对D样本集合的信息增益的第二个式子。

一般来说信息增益公式中的第一个式子对应于D样本集的综合信息熵,第二个式子就是对应于属性集合a中的每一个取值的分支结点的信息熵乘上权重的和。

使用信息增益最大的属性用来进行划分比较好。

使用增益率也可以生成决策树,使用该方法的主要原因是:由于使用增益准测具有一定的对使用属性取值较多的属性划分样本集合的偏好。这里的增益率使用了分子是原来的信息增益准则式子,分母使用的是属性a的固有值。属性a的可能取值数目越大,那么该值就会越大。
使用增益率是在先使用增益准则获得比平均水平高的属性,然后再选择增益率较高的。

CART决策树使用的基尼指数来选择划分属性,该指数反映的是从数据集合中选择两个数据具有不同类别划分的概率。那么该指数越小数据集D的纯度越高。
使用的基尼指数划分属性的公式为:将每一个属性划分得到的V个样本集合对应的V个分支结点,对于每一个结点得到对应的信息熵大小,然后使用权重进行相乘之后再进行求和,从而得到对应的基尼指数定义。那么选择基尼指数最小的属性来对样本集进行最优划分。

为了进一步实现对于决策树划分的时间和空间效能的提升,可以采用预剪枝和后剪枝策略对决策树进行剪枝。评判是否应当进行剪枝的评价准则是:查看剪枝前后决策树对验证集数据划分的结果正确率,然后再决定是否进行剪枝或更进一部的划分。

连续与缺失值处理:对于具有连续值的属性划分来说,首先取得t划分之后的数据集,这里的t一般取中间值也就是将数据集划分为两个相同大小但是类别不同的集合,同时对每个类别的集合,将其中的两个连续数据之间的中位点作为候选划分点。然后使用信息增益划分规则,从而可以得到基于连续属性进行划分的决策树。

如果当前的划分属性为连续属性,那么该属性还可以作为其后代结点的划分属性。

对于缺失值的处理:就是将无缺失值样本集的信息增益及不同属性划分的结果得到,然后乘上无缺失值样本集在整体样本集合中占的比例。对于每一个属性均进行上述的乘法,则可以得到每一个结点的信息增益。

多变量决策树的实现:
将每一个属性看作坐标轴,那么d个属性描述的样本就对应了d维空间中的是一个数据点,那么对样本的分类就对应了在d维空间中寻找不同类样本之间的分类边界。
需要注意的是:每一个类别对应的是一个轴。

多变量决策树就是可以将上述的和坐标轴平行的线段变为斜线段。此时,每一个分支结点需要处理不再是对于某一个属性,而是多个属性组成的一个线性分类器。那么这样来说,和单变量对应的决策树来说,多变量决策树中使用不是书信进行最优划分而是选择一个合适的线性分类器。

    推荐阅读