决策树也是一种矩阵乘法?

文摘   2024-10-30 07:00   美国  

矩阵真的是一个很神奇的东西。

你能想象决策树的推理过程也可以用矩阵乘法来表示吗?

决策树推理是一个迭代的过程。我们通过评估某一层中特定节点的条件来遍历决策树,直到到达叶子节点。

接下来就让我们看看是如何将决策树的推理过程转换成矩阵操作的。

结果:

1.使得推理速度大大加快,因为矩阵操作可以进行大规模并行化。

2.这些操作可以加载到GPU上,实现更快的推理。

 欢迎加入自动驾驶实战群


步骤

考虑下面有5个特征的二分类数据集。

通过在数据集上拟合一个决策树,最终得到如下结构的树。

符号

在开始之前,我们先假设:

● m→ 数据集中的总特征(上述数据集中有5个特征)。

● e→ 树中的总评估节点(上述树中有4个蓝色节点)。

● l→ 树中的总叶子节点(有5个绿色节点)。

● c→ 数据集中的总类别(上述数据集中有2个类别)。


从决策树到矩阵

转换过程的核心思想是推导出能够捕获决策树结构的五个矩阵(A,B,C,D,E)。

让我们一个一个理解。


#1)矩阵A

该矩阵捕获特征和评估节点(上述蓝色节点)之间的关系。

如果列中的相应节点评估了行中的相应特征,则设置为‘1’。例如,在我们的决策树中,‘Node0’ 评估 ‘Feature2’。

因此,相应的条目将为“1”,而其他所有条目将为“0”。

填充整个矩阵,得到最终的矩阵A。

#2)矩阵B

矩阵 B 对应每个节点的阈值。因此,它的形状是 1×e。

#3)矩阵C

矩阵 C 捕获评估节点和叶子节点(上述绿色节点)之间的关系。

  • 1:如果列中的相应叶节点位于行中对应评估节点的左子树。

  • -1:如果列中的相应叶节点位于行中对应评估节点的右子树。

  • 0:如果相应的叶节点和评估节点之间没有直接联系。


例如,“叶节点4”位于“评估节点0”和“评估节点1”的左子树中。因此,对应的值将为1。

继续填充矩阵,最终得到矩阵C。

#4)矩阵D

向量 𝐷 的每个元素是矩阵𝐶每一列中非负元素的总和。

#5)矩阵E

矩阵E将叶子节点映射成最终的类别标签,维度是l×c。

如果叶节点将样本分类为“类1”,则对应的条目将为1,其他条目将为0。例如,“叶节点4”输出“类1”,因此第一行的对应条目将为 (1, 0)。

继续填充矩阵,最终得到矩阵E。

现在我们就将决策树转换成了下面5个矩阵。

通过矩阵进行推断

假设输入一个五维特征向量X。

整个推理过程就可以通过下面矩阵操作来完成。

  • XA<B :

  • 结果乘C:

  • 结果与D比较:

  • 最后,乘E:

最终预测结果是:类别1。

受益于矩阵操作的并行化和GPU,推理时间大大缩小。

通过这篇文章,了解具体的转换方法不是最重要的,而是要培养自己的数学思想,如果还没有触动你,那我建议你再看看下面这几篇文章。

在手书动画系列中,我们将许多AI中的操作都转换成矩阵乘法,例如,MLP、卷积、自注意力、Transformer等等。


最后别忘了,帮忙点“在看”。  

您的点赞,在看,是我创作的动力。


AiFighing是全网第一且唯一以代码、项目的形式讲解自动驾驶感知方向的关键技术。


长按扫描下面二维码,加入知识星球。

Ai fighting
全网第一且唯一分享自动驾驶实战,以代码、项目的形式讲解自动驾驶感知方向的关键技术,从算法训练到模型部署。主要致力于3D目标检测,3D目标追踪,多传感器融合,Transform,BEV,OCC,模型量化,模型部署等方向的实战。
 最新文章