连续值

前面线性模型已经谈到了离散属性连续化,而决策树模型需要的则是连续属性离散化,因为决策树每次判定只能做有限次划分。最简单的一种离散化策略是C4.5算法采用的二分法(bi-partition)

给定一个包含连续属性 连续与缺失值 - 图1 的数据集,并且 连续与缺失值 - 图2 在数据集中有 连续与缺失值 - 图3 个不同取值,我们先把属性 连续与缺失值 - 图4连续与缺失值 - 图5 个属性值从小到大进行排序所谓“二分”是指将这些属性值分为两个类别(比方说把身高这一属性分为高于170和低于170两个类别)。

这就产生了一个新问题,怎么找到合适的划分点(例如上面例子的170)呢?

在对连续属性值排序完之后,由于有 连续与缺失值 - 图6 个不同取值,取每两个取值的平均值作为划分点的话,就有 连续与缺失值 - 图7 个候选划分点。我们需要做得就是按照准则(比方说用ID3算法的话就是信息增益)进行 连续与缺失值 - 图8 次判断。每次拿出一个候选划分点,把连续属性分为两类,转换为离散属性。然后基于这个基础计算准则,最终选出一个最优的属性值划分点。

注意!和离散属性不同,连续属性用于当前节点的划分后,其后代节点依然可以使用该连续属性进一步划分。比方说当前节点用身高低于170划分了,那么它的后代节点还可以用身高低于160来进一步划分。

缺失值

确实值在实际任务中是非常常见的,如果直接丢弃包含缺失值的样本会造成极大的浪费。具体来说缺失值的处理分以下两个部分:

如何在属性值缺失的情况下选择最优划分属性?

假设数据集为 连续与缺失值 - 图9,有缺失值的属性为 连续与缺失值 - 图10,令 连续与缺失值 - 图11 表示 连续与缺失值 - 图12 中没有缺失属性 连续与缺失值 - 图13 的样本子集。我们只能基于 连续与缺失值 - 图14 来判断属性 连续与缺失值 - 图15 的优劣。但是我们又希望包含缺失值的样本也能在建模过程体现出一定的影响了,因此要重新定义准则。在那之前,先定义几个新定义用到的变量:

连续与缺失值 - 图16

连续与缺失值 - 图17%0A#card=math&code=%5Ctilde%7Bpk%7D%20%3D%20%5Cfrac%7B%5Csum%7B%5Cmathbf%7Bx%7D%20%5Cin%20%5Ctilde%7BDk%7D%7Dw%5Cmathbf%7Bx%7D%7D%7B%5Csum%7B%5Cmathbf%7Bx%7D%20%5Cin%20%5Ctilde%7BD%7D%7Dw%5Cmathbf%7Bx%7D%7D%2C%5Cquad%20%281%20%5Cleq%20k%20%5Cleq%20%7C%5Cmathcal%7BY%7D%7C%29%0A&id=pb01F)

连续与缺失值 - 图18%0A#card=math&code=%5Ctilde%7Brv%7D%20%3D%20%5Cfrac%7B%5Csum%7B%5Cmathbf%7Bx%7D%20%5Cin%20%5Ctilde%7BD%5Ev%7D%7Dw%5Cmathbf%7Bx%7D%7D%7B%5Csum%7B%5Cmathbf%7Bx%7D%20%5Cin%20%5Ctilde%7BD%7D%7Dw_%5Cmathbf%7Bx%7D%7D%2C%5Cquad%20%281%20%5Cleq%20v%20%5Cleq%20V%29%0A&id=masPS)

连续与缺失值 - 图19 表示无缺失值样本所占的比例;

连续与缺失值 - 图20 表示无缺失值样本中第 连续与缺失值 - 图21 类所占的比例;

连续与缺失值 - 图22 表示无缺失值样本中在属性 连续与缺失值 - 图23 上取值 连续与缺失值 - 图24 的样本所占的比例 ;

注意,这里的 连续与缺失值 - 图25 表示样本的权值,它是含缺失值样本参与建模的一种方式。在根节点处初始时,所有样本 连续与缺失值 - 图26 的权重都为1。

接下来重新定义信息熵和信息增益,推广到样本含缺失值的情况:

连续与缺失值 - 图27%20%3D%20-%5Csum%7Bk%3D1%7D%5E%7B%7C%5Cmathcal%7BY%7C%7D%7D%5Ctilde%7Bp_k%7Dlog_2%5Ctilde%7Bp_k%7D%0A#card=math&code=Ent%28%5Ctilde%7BD%7D%29%20%3D%20-%5Csum%7Bk%3D1%7D%5E%7B%7C%5Cmathcal%7BY%7C%7D%7D%5Ctilde%7Bp_k%7Dlog_2%5Ctilde%7Bp_k%7D%0A&id=IwtTg)

连续与缺失值 - 图28%20%3D%20%5Crho%20%5Ctimes%20Gain(%5Ctilde%7BD%7D%2Ca)%5C%5C%0A%3D%20%5Crho%20%5Ctimes%20(Ent(%5Ctilde%7BD%7D)%20-%20%5Csum%7Bv%3D1%7D%5EV%5Ctilde%7Br_v%7DEnt(%5Ctilde%7BD%5Ev%7D))#card=math&code=Gain%28D%2Ca%29%20%3D%20%5Crho%20%5Ctimes%20Gain%28%5Ctilde%7BD%7D%2Ca%29%5C%5C%0A%3D%20%5Crho%20%5Ctimes%20%28Ent%28%5Ctilde%7BD%7D%29%20-%20%5Csum%7Bv%3D1%7D%5EV%5Ctilde%7Br_v%7DEnt%28%5Ctilde%7BD%5Ev%7D%29%29&id=HMaGf)

按照新的定义来计算包含缺失值的属性的信息增益,然后和其他属性的信息增益相比,选出最优的。

给定划分属性,如何划分缺失该属性值的样本?

假设有一个包含缺失值的属性被计算出是最优划分属性,那么我们就要按该属性的不同取值划分数据集了。缺失该属性值的样本怎么划分呢?答案是按概率划分,这样的样本会被同时划入所有子节点,并且其权重更新为对应的 连续与缺失值 - 图29

可以把无缺失值的决策树建模想象为各样本权值恒为1的情形,它们只对自己所属的属性值子集作贡献。而样本含缺失值时,它会以不同的概率对所有属性值子集作贡献