为了使决策树可以处理不同类型的属性,我们必须为每种属性提供测试条件及其对应的输出方法。
(1)二元属性。对二元属性的测试条件只可能产生两种输出,如图4-6所示。
图4-6 二元属性的测试条件
(2)标称属性。标称属性有多个属性值,但不具有一定的顺序,它的测试条件有两种表示方法。例如,客户使用的终端品牌有多个属性值,以苹果、华为、三星三个属性值为例。一种方式,它的测试条件会产生一个三路划分,如图4-7(a)所示。另一种方式,对于某些只能产生二元划分的决策树算法来说,它们会考虑创建 k 个属性值的二元划分的所有2 k -1 -1种方法,如图4-7(b)所示显示了把客户使用的终端品牌属性值划分为两个子集的三种不同的分组方法。
图 4-7
(3)序数属性。序数属性同样也是离散值,也可以产生二元或者多路的划分,但因为序数属性具有自身的顺序,所以在为测试条件进行划分时要注意不要违背序数属性值的有序性。例如,客户的信用等级可以有:一星级、二星级、三星级。如图4-8(a)所示的两种划分都是正确的,而如图4-8(b)所示的分组就违反了保持数据属性有序性的原则,因为它把一星级和三星级分为了一组,把二星级作为另一组。
图 4-8
(4)连续属性。对于连续属性来说,测试条件同样可以是一个二元划分或者是多路划分。对于二元输出就需要比较测试( A < v )或( A ≥ v ),因此决策树算法必须考虑所有可能的划分点 v ,并从中选择出最佳的划分点。对于多路划分,就需要具有形如 v i ≤ A < v i+ 1 输出的范围查询,此时算法必须考虑所有可能的连续区间,而且还要保持有序性,如图4-9所示。
图4-9 连续属性的划分