决策树的几何理解
一、决策树的实质是对空间的分割
对于一个多维数据,可以将它的每一个属性看成一个维度。如一个二维数据可以看成一个平面,一个三维数据可以看成一个立方体。各属性的取值表示标签的空间位置。那么决策树的每一次测试可以看成对某一维空间的一次分割。
1、树的深度则指的是取多少个维度进行分割,显然树的深度不能超过属性个数,因为属性个数意味着维度,你不允许对一个三维物体从第四维开刀。
2、树的分支个数,指的是你对一个维度“切了几刀”(更精确的是,树的分支个数减一是你的“刀数”。
因为一刀分两段,两刀分三段。。
3、树的叶子节点个数本质是你把空间分割成了几份。
4、剪枝意味着对分割空间的合并。
剪枝的意义:
从上文我们知道决策树的每一次对空间的分割都是“贯穿”的,可以理解成“一刀两段”。而“剪枝”则又将被分割的空间进行局部的“缝补”。这种“缝补”不是任意的,只能“缝补”原本就“相邻”的空间。
举个分类问题的例子,我们现在需要根据已有三维数据把目标分成两类。我们不妨把我们的三维数据想象成一个空间立方体(如一个石块),把任务理解成:通过不断的分割,找到数据里属于“维纳斯的部分”和“不属于维纳斯的部分”(对应任务的“分成两类”)
好了,我们现在成功把一个二分类问题想象成把石块雕刻成维纳斯的过程。
如果没有剪枝过程,决策树最终得到的是“方块状”的空间。显然我们永远不可能得到一个维纳斯的形状。如果有了剪枝过程,意味着我们不但能切割“石块”也能把相邻的“石块”又“拼接”到一起。理论上只要我们有耐心慢慢切,慢慢缝,最终我们是肯定能得到一个“维纳斯”的。
看到这你肯定有一个想法:你把石块切断,然后又把它粘到一起不是有毛病,为什么不第一次就不“切断”而直接切到特定位置就不往前切不就结了?确实“切割”加“缝补”的过程如果连在一起相当于啥也没做。事实上,我们的剪枝过程在实际操作中确实是“止刀”而不是“缝补”。不过理解成“缝补”可以更容易建立空间直觉。
顺便提一句,神经网络里的“激活函数”实际上也是起这个作用。
顺便再提一句,人体的神经恰好也是这么工作的。
那么建立这种空间直觉有什么作用呢?我们不妨利用这种空间直觉去理解关于决策树的以下结论:
为什么对于决策树模型,不需要对数值数据进行归一化?
归一化对于很多模型很重要,如:神经网络,支持向量机等模型。
但决策树模型却不需要归一化。归一化本质上是对数据做一个压缩,把不同范围的数据压缩到0-1之间。
回到我们的维纳斯问题,将某一个数据压缩到0-1之间,相当于我们把石块的“宽”压缩到0-1之间,我们的”维纳斯“也变成了一个压扁的维纳斯,但对于我们的雕刻工作其实毫无作用。仅仅是我们的“刀距”更密集而已。
不同的决策树?
我们对同一个问题可能生成各种不同的决策树,甚至可以生成无数决策树,为什么呢?因为决策树是对挑选维度对数据空间的进行分割的结果。那么我们挑选不同的维度进行分割,在不同位置动刀都意味着生成新的决策树。
为什么决策树容易过拟合?
只要刀功够细,你可以把空间切得稀碎,以至于每一个留下来的空间值存放一个数据。
为什么对于垃圾数据,无论如何训练都无法得到满意结果?
当你要剔除的杂质在你想雕刻的维纳斯体内,那么,你不可能保持维纳斯的完整又完美剔除杂质,在机器学习里意味接受误差。
决策树万能的吗,能解决所有机器学习问题吗?
很遗憾,你不能在普通的沙子里淘金。决策树只能解决你的目标恰好在所拥有的数据的维度里“扎堆”的问题,你的目标在所拥有数据里的聚集程度就是模型的上限。换句话说,你的维纳斯手脚分离出现在数据里,或者你的维纳斯压根不在数据里,你基本无能为力。
决策树能发现数据隐藏的特征之间的 关系吗?如将身高,体重两个属性构造出新的健康指数?
由于健康指数只和身高体重有关,健康指数其实就是身高体重二维空间内的一条线,数据量足够大的时候,决策树确实能够发现这个新属性。但你拥有的维数很多时,你在生成同一棵时挑到身高体重这两个维度的可能性会很低,这两个属性拥有共同数据的概率会更低,而且数据本身有噪声,很难如愿构造出你想要的新属性。
来源:CSDN
作者:junhao0412
链接:https://blog.csdn.net/junhao0412/article/details/104172851