目录
决策树从分类到回归的推广
我们将决策树从分类算法扩展到回归算法,使其能够预测一个数值。例如,我们用离散特征来预测动物的体重。这里的“体重”是我们要预测的目标变量 Y,而不是输入特征。这与之前预测动物是否为猫的分类问题不同,因为我们现在要预测的是一个连续的数值,这是一个回归问题。
回归树的构建过程
假设我们已经为这个回归问题构建了一个决策树的根节点。例如,它可能在“耳朵形状”上进行分裂,然后左右分支在“脸型”上继续分裂。右边的分支还会进一步根据“脸型”分裂。决策树可以在同一个特征上多次分裂,只要分裂算法在训练过程中决定这样做。
在训练过程中,每个节点会包含一组动物的特征和对应的体重。例如,某个节点可能包含四肢、体重、脐带等特征的动物。假设这个节点中只有一只动物的体重是9.2斤。对于其他节点,我们依次类推。我们需要为决策树定义的是:如果有一个测试样本到达这个节点,我们该如何预测它的体重?
回归树的预测逻辑
对于一个长着尖耳朵和圆脸的动物,决策树会根据训练样本中的平均体重进行预测。例如,通过计算某个节点中4个动物的平均体重,我们得到8.35斤。如果动物有尖耳朵但脸型不是圆的,它会预测9.2斤,因为这是该节点中唯一动物的体重。同样,其他节点的预测值分别是17.7斤和9.9斤。决策树的预测逻辑是将测试样本推送到叶节点,然后预测叶节点中动物的平均体重。
如何选择分裂特征:方差减少
回归树的核心是通过减少方差来选择最优的分裂特征。与分类树减少熵(杂质)不同,回归树的目标是减少目标变量(如体重)的方差。方差衡量了一组数字的变化范围,方差越小,数据越集中。
分裂特征的选择步骤
-
计算每个特征分裂后的加权方差
假设我们有三个特征可供选择:-
耳朵形状:分裂后左右两个分支的方差分别为27.8,权重分别为7/10和3/10。计算加权方差。
-
脸型:分裂后左右两个分支的方差分别为……(具体数值),权重分别为……,计算加权方差。
-
是否有胡须:分裂后左右两个分支的方差分别为……(具体数值),权重分别为……,计算加权方差。
-
-
选择加权方差最小的特征
选择加权方差最小的特征进行分裂。这类似于分类树中选择信息增益最大的特征,但在回归树中,我们关注的是方差的减少。 -
计算方差减少量
方差减少量=20.51−11.67=8.84
例如,对于训练集中的所有10个样本,计算它们的方差为20.51。对于根节点,我们计算分裂后的加权方差,假设为11.67。那么方差减少量为:我们选择方差减少量最大的特征作为分裂特征。假设“耳朵形状”能带来最大的方差减少,那么我们就选择它作为分裂特征。
递归构建决策树
在完成根节点的分裂后,我们得到两个子集,每个子集包含5个样本。接下来,我们对每个子集重复上述过程:
-
评估子集中的所有特征,选择方差减少量最大的特征进行分裂。
-
继续递归分裂,直到达到某个停止条件(如节点中的样本数量小于某个阈值,或方差减少量小于某个阈值)。
通过这种方式,我们可以构建一个完整的回归树。
总结
到目前为止,我们已经讨论了如何训练单个回归树。通过选择方差减少量最大的特征进行分裂,我们可以构建一个能够预测连续数值的回归树。如果你训练多个回归树并组合它们,我们称之为“回归树集合”,这通常可以得到更好的预测结果。
决策树在回归算法中的应用:预测动物体重
图片1:回归决策树的预测
概述
图片展示了一个完整的回归决策树,用于预测动物的体重。决策树根据耳朵形状和脸型进行分裂。
决策树结构
-
根节点:耳朵形状(Ear shape)
-
分裂为尖耳朵(Pointy)和软耳朵(Floppy)
-
-
尖耳朵(Pointy):
-
子节点:脸型(Face shape)
-
分裂为圆脸(Round)和非圆脸(Not round)
-
圆脸(Round):
-
体重:7.2, 8.4, 7.6, 10.2, 9.2
-
平均体重:8.35
-
-
非圆脸(Not Round):
-
体重:9.2
-
平均体重:9.2
-
-
-
-
软耳朵(Floppy):
-
子节点:脸型(Face shape)
-
分裂为圆脸(Round)和非圆脸(Not round)
-
圆脸(Round):
-
体重:15, 18, 20
-
平均体重:17.7
-
-
非圆脸(Not Round):
-
体重:8.8, 11
-
平均体重:9.9
-
-
-
预测逻辑
-
对于一个测试样本,决策树通过一系列的特征分裂,将其推送到叶节点。
-
在叶节点,决策树预测该节点中所有样本的平均体重。
图片2:选择分裂特征
概述
图片展示了如何通过比较不同特征分裂后的方差减少量来选择最佳分裂特征。这里有三个特征:耳朵形状(Ear shape)、脸型(Face shape)和胡须(Whiskers)。
耳朵形状(Ear shape)
-
根节点方差:20.51
-
分裂为尖耳朵(Pointy)和软耳朵(Floppy):
-
尖耳朵(Pointy):
-
体重:7.2, 9.2, 8.4, 7.6, 10.2
-
方差:1.47
-
权重(w_left):5/10
-
-
软耳朵(Floppy):
-
体重:8.8, 15, 11, 18, 20
-
方差:21.87
-
权重(w_right):5/10
-
-
方差减少量:
-
脸型(Face shape)
-
根节点方差:20.51
-
分裂为圆脸(Round)和非圆脸(Not round):
-
圆脸(Round):
-
体重:7.2, 15, 8.4, 7.6, 10.2, 18, 20
-
方差:27.80
-
权重(w_left):7/10
-
-
非圆脸(Not round):
-
体重:8.8, 9.2, 11
-
方差:1.37
-
权重(w_right):3/10
-
-
方差减少量:
-
胡须(Whiskers)
-
根节点方差:20.51
-
分裂为有胡须(Present)和无胡须(Absent):
-
有胡须(Present):
-
体重:7.2, 8.8, 9.2, 8.4
-
方差:0.75
-
权重(w_left):4/10
-
-
无胡须(Absent):
-
体重:15, 7.6, 11, 10.2, 18, 20
-
方差:23.32
-
权重(w_right):6/10
-
-
方差减少量:
-
具体实施步骤:
让我们通过一个具体的例子来说明如何使用回归树预测动物的体重。假设我们有以下决策树,它基于动物的耳朵形状和脸型来预测体重:
每个叶节点包含不同动物的体重,并且叶节点的值是该节点中所有动物体重的平均值。
叶节点的体重平均值
-
尖耳朵圆脸型(Pointy, Round):平均体重 = 8.35 斤
-
尖耳朵非圆脸型(Pointy, Not Round):平均体重 = 9.2 斤
-
软耳朵圆脸型(Floppy, Round):平均体重 = 17.7 斤
-
软耳朵非圆脸型(Floppy, Not Round):平均体重 = 9.9 斤
预测示例
假设我们有一只新的动物,我们需要预测它的体重。我们按照以下步骤进行:
-
确定耳朵形状:观察新动物的耳朵,发现它是尖耳朵(Pointy)。
-
确定脸型:观察新动物的脸,发现它是圆脸型(Round)。
根据决策树的结构,我们将新动物的样本推送到尖耳朵圆脸型的叶节点。
-
预测体重:在尖耳朵圆脸型的叶节点,我们找到平均体重为 8.35 斤。
因此,根据这个决策树,我们预测这只新动物的体重为 8.35 斤。
详细步骤
假设新动物的具体特征如下:
-
耳朵形状:尖耳朵(Pointy)
-
脸型:圆脸型(Round)
我们按照决策树的路径进行预测:
-
根节点:耳朵形状(Ear shape)
-
由于新动物的耳朵是尖的,我们沿着左边的分支移动到“尖耳朵”(Pointy)节点。
-
-
第二层节点:脸型(Face shape)
-
在“尖耳朵”节点,我们观察新动物的脸型。由于它是圆脸型,我们沿着左边的分支移动到“圆脸型”(Round)节点。
-
-
叶节点:预测体重
-
在“尖耳朵圆脸型”(Pointy, Round)的叶节点,我们找到平均体重为 8.35 斤。
-
因此,根据决策树,我们预测这只新动物的体重为 8.35 斤。
通过这种方式,回归树可以根据输入特征(如耳朵形状和脸型)预测出连续的数值(如体重)。这种方法简单直观,适用于各种回归问题。