C4.5和CART算法能够处理连续型变量。本文将探讨如何处理连续型变量的问题。
由于决策树要求输入数据必须是离散的,连续型变量需要进行离散化处理。本文将介绍两种离散化方法,适用于不同类型的连续数据。
首先,将连续变量划分为不同的区间。例如,对于年龄这一连续变量,可以将其划分为[10,30]、[30,50]、[50,70]等区间,使年龄变成离散值。
对于某些连续属性,如年龄,其取值虽然有限,但其他连续属性的取值可能是无限的。此时,不能直接根据取值进行划分,而是采用二分法进行处理。这种方法在C4.5决策树算法中被广泛使用。
假设我们有一个特征,其值为连续的,如: {0.243,0.245,0.343,0.360,0.403,0.437,0.481,0.556,0.593,0.608,0.634,0.639,0.657,0.666,0.697,0.719,0.774}
首先,我们计算每两个值之间的中心点: {0.244,0.294,0.351,0.381,0.420,0.459,0.518,0.574,0.600,0.621,0.636,0.648,0.661,0.681,0.708,0.746}
共有16个分割点,我们需要确定最佳的分割位置。这里采用信息增益作为选择标准。通过计算发现,在0.381处进行分割时,信息增益最大。此时,信息增益为0.264。
[ -frac{8}{17}log2left(frac{8}{17}right) + -frac{9}{17}log2left(frac{9}{17}right) = 0.998 ]
[ frac{13}{17} left(-frac{5}{13}log2left(frac{5}{13}right) - frac{8}{13}log2left(frac{8}{13}right)right) + frac{4}{17} left(0log2(0) + frac{4}{4}log2left(frac{4}{4}right)right) = 0.734 ]
因此,0.381对应的信息增益为: [ 0.998 - 0.734 = 0.264 ]
这表明,在0.381处进行划分是最优选择。接下来计算信息增益率,即当前特征的信息增益率。
需要注意的是,与离散属性不同,当节点的划分属性为连续属性时,该属性仍可用于其后代节点的划分。例如,在父节点上使用“密度≤0.381”不会阻止在子节点上继续使用“密度”。
个人认为,之所以可以继续使用连续属性是因为简单地通过一个条件(如0.381)将连续属性分为两部分,可能会导致一部分样本不满足这种划分。因此,继续使用连续属性进行多次划分,可以使划分更加精细,从而更好地满足大多数样本的需求。