决策树好看又难养,这篇论文教AI给它做减法 النص الأصلي بالصينية

你有没有试过在银行贷款审批表上,看到一棵"决策树"被打印出来解释拒绝原因?

第一层判断你的收入是否超过某个数字,第二层判断你的负债率,第三层判断你的信用记录,一路往下,几十个分支,几百个叶子节点。技术上讲,这确实是"可解释"的模型,因为每一步判断都写在纸面上,没有黑箱。但如果你真去读这张纸,你会发现自己根本读不下去。

这就是决策树领域一直没解决好的一个矛盾:技术上可解释,不代表人真的看得懂。

一棵有几百个节点的树,和一个神经网络一样让人望而生畏,只是换了一种复杂的形式。

**决策树的可解释性,本质上取决于它有多简单。**

树越浅、叶子越少,人就越容易一眼看出这棵树在干什么。但问题是,简单的树往往预测得不够准,复杂的树预测得准,但没人愿意看。这篇来自比萨大学的论文,就是想在这两者之间找一条更好的路。

**核心问题:树的世界太大,搜不动**

先说说为什么"学一棵好的决策树"这件事本身就很难。

理论上,给定一份数据,能画出的决策树几乎是无穷多的。每个节点可以选哪个特征、哪个分割阈值,组合起来是指数级增长的搜索空间。早在1976年就有人证明,找到"最优"的二叉决策树是NP完全问题,也就是说,除非问题规模很小,否则不存在能快速求出最优解的算法。

面对这种不可能,业界基本分成了两条路。

一条是贪心算法,代表是大家熟悉的CART、ID3、C4.5,它们的做法是每一步都选当下看起来最好的分割,不回头。这类算法跑得飞快,但因为每一步只看眼前,容易在后面吃亏,最终得到的树往往不是全局最好的。

另一条路是所谓的"近最优"算法,比如DL8.5、GOSDT,它们用动态规划、分支定界这类更严谨的搜索技术,试图逼近真正的最优解。这类方法准,但代价是计算量爆炸,跑一个中等规模的数据集可能要几十分钟甚至超时。

*近最优决策树算法:一类不追求数学上绝对最优,但通过动态规划、分支定界等技术尽量逼近最优解的决策树学习方法,相比贪心算法更准,但计算成本高得多。*

更麻烦的是,无论贪心还是近最优,这些算法几乎都只盯着"预测准不准"这一个目标,很少有人认真去优化树的简洁程度。就算个别方法加了正则化项去惩罚复杂的树,本质上也还是在原来那套离散的搜索框架里打补丁,没有换个思路。

这篇论文的作者们换了个思路:与其在离散的树的世界里硬找,不如先把树变成一种"连续的东西",然后在连续空间里做优化。

这个想法听起来有点玄,但其实有生活中的对应物。

想象你要在一座没有地图的迷宫里找出口,迷宫的每个岔路口都是离散的选择,你只能一步步试错,走错了还得原路返回重新试。这就是在离散空间里搜索决策树的处境,每一次分割方式的选择都是非此即彺,没法微调。

但如果有人告诉你,这个迷宫其实可以被"摊平"成一张平滑的地形图,出口所在的方向变成了地势最低的谷底,你只需要顺着坡度往下走就能找到路,那搜索的难度会完全不同。

**这就是论文里说的,把离散的决策树映射进一个连续的"潜在空间",用梯度下降去找最优解,而不是在离散空间里一个个组合去试。**

如果不这样做,会发生什么?作者提到的一个对照方案,是2024年另一篇论文提出的生成式决策树方法,它把决策树编码成矩阵,用卷积网络处理,再用遗传算法这种"黑盒优化"去搜索。黑盒优化的问题在于,它看不到梯度,只能靠一次次采样、评估、淘汰,效率很低。这篇论文明确指出了这个差距,正是要用梯度替代盲目试探。

**TREVIS:给决策树造一个"变形空间"**

这篇论文提出的方法叫TREVIS,全称是"从潜在空间的变分推断中学习树表示"。它的核心组件叫TTVAE,也就是树Transformer变分自编码器。

*变分自编码器(VAE):一种生成模型,它先把输入压缩成一个低维的"潜在向量",再用这个向量重新生成输入,训练过程中会让潜在空间服从一个标准的概率分布,这样就可以在这个空间里采样、插值、优化,生成新的合理数据。*

*Transformer:一种最初为处理语言序列设计的神经网络结构,核心是"自注意力机制",能够让模型在处理某个位置的信息时,同时参考序列里所有其他位置的信息,不受距离限制。*

TREVIS的整体流程可以拆成三步。第一步,把决策树变成一串"文字"一样的序列,交给Transformer去学。第二步,用这个Transformer搭一个编码器解码器结构,也就是TTVAE,让它学会把树压缩成一个向量,再从向量还原回树。第三步,在这个向量空间里训练一个"代理模型"去预测每棵树的好坏,然后用梯度上升去找预测得分最高的向量,再把它解码成真正的树。

**第一步:怎么把一棵树写成一句话**

决策树本质上是一个二叉的层级结构,每个内部节点有一个"特征+阈值"的判断,比如"收入是否小于5万",每个叶子节点对应一个分类结果。

作者用深度优先前序遍历的方式,把整棵树拉平成一条线性序列。具体来说,从根节点出发,先记录根节点自己(特征和阈值两个词),然后递归地记录左子树,最后记录右子树。如果碰到叶子节点,就用一个特殊符号标记它是终点,不用记录它具体预测哪个类别,因为这可以从落到这个叶子节点的训练样本里"多数投票"反推出来。

这里有个挺巧妙的设计细节:阈值该怎么表示。

如果直接把阈值当成一个连续的实数来处理,那这个"词表"就会变得无限大,模型很难学。作者想了一个办法:把每个特征的所有取值排序后,相邻两个值之间的任何一个阈值,实际上划分数据的效果是完全一样的。所以没必要用两个值中间的那个数(比如常见做法取中点),只需要取区间左端点作为"代表值"就够了,再统一按某个精度四舍五入,词表大小就被死死摁住了。

**如果不这样处理阈值,会发生什么?**

假设一个特征有一万个不同的取值,理论上就有一万种阈值可以选,模型的词表要装下这么多几乎无穷细分的数字,训练难度会指数级上升,而且很多阈值其实划分效果完全一样,纯属浪费。这就像你去菜市场买菜,称重精确到小数点后十位没有任何意义,摊主只会用固定的几个刻度来标价,这不是偷懒,是因为超出那个精度的信息根本没用。

**第二步:让Transformer读懂树的形状**

光把树拉平成一条序列还不够,因为Transformer的自注意力机制本身是"打乱顺序也不影响结果"的,它不天然知道谁是谁的父节点、谁是谁的兄弟节点。

这就需要引入位置编码。

*位置编码:给序列中每个词额外加一段向量,用来告诉模型这个词在结构中的具体位置,否则打乱词的顺序对Transformer来说没有任何区别。*

作者用的是一种叫"树绝对位置编码"的方法,简单说就是给每个节点记录一条"从根节点走到它"的路径,用一串独热编码堆叠起来表示这条路径,每往下一层还会按几何级数缩放权重。这样,模型不仅知道每个词是什么,还知道它在树的哪一层、经过了哪些分叉才走到这里。

论文的实验部分专门做了对比,把这种树形位置编码和普通Transformer常用的正弦位置编码放在一起测试,发现在原始特征空间下,树形编码明显让重建损失更低。这说明给模型讲清楚"树的形状"确实有用,不是白费功夫。

**第三步:编码器、解码器和代理模型怎么配合**

TTVAE的编码器读入整棵树的序列,输出一个均值和方差,用重参数化技巧采样出一个潜在向量。解码器则反过来,拿着这个向量,一个词一个词地"自回归"生成整棵树的序列,直到生成终止符号为止。

*自回归生成:模型每次只生成序列中的下一个词,并把刚生成的词加入到已有序列里,作为生成下一个词的依据,一步步把整个序列拼出来。*

训练目标是最大化一个叫β-ELBO的量,它包含两部分:一部分鼓励解码器尽量准确地重建出原来的树,另一部分则用KL散度约束潜在空间尽量贴近一个标准的高斯分布,防止潜在空间乱七八糟。这个β是个可调的权重,训练早期设成0,后面逐渐调大,是为了避免一种叫"后验坍塌"的经典问题,也就是模型偷懒,直接忽略潜在向量只靠解码器自己硬记忆训练数据。

训练好TTVAE之后,接下来就是找"好的"潜在向量了。作者定义了一个目标函数,把预测性能(用加权F1分数衡量)和树的复杂度(用叶子数量衡量)结合起来,两者之间用一个系数λ来调节权重,λ越大,越倾向于惩罚复杂的树。

问题在于,这个目标函数是定义在"真正的树"上的,而解码这一步是不可微分的,也就是说你没法直接对它求梯度。

**这里就是代理模型登场的地方。**

作者训练了一个简单的多层感知机(MLP),用潜在向量作为输入,去预测这个向量对应的树大概能拿到多少目标函数分数。因为这个代理模型是连续可微的,就可以直接对它求梯度,用梯度上升的方式,不断微调潜在向量,让代理模型预测的分数越来越高。等找到一批看起来不错的向量后,再把它们真正解码成树,用真实的目标函数打分,挑出表现最好的那一个。

这个设计其实解决了一个很现实的效率问题。

如果每次调整潜在向量都要真的解码出一棵树、跑一遍数据集算F1分数,那计算成本会高得离谱,因为解码本身是逐词生成的,速度不快,而且不可微分意味着你只能靠"试出来"的黑盒方法去搜索,效率很低。这就像你想找到山谷里最低的那个点,如果每次移动一步都要真的走下去实地测量海拔,那走一圈可能要花一整天;但如果你手里有一张预先画好的等高线地图(也就是代理模型给出的预测),你只需要顺着地图上等高线最密集、坡度最陡的方向走,几分钟就能大致定位出谷底在哪,最后再实地确认一下具体点位就行了。代理模型扮演的正是这张"预测地图"的角色。

**实验结果:TREVIS到底行不行**

论文在18个公开数据集上做了系统对比,覆盖了从几百个样本的小数据集到四万多样本的大数据集,还区分了原始连续特征和经过离散化处理的特征两种版本。

对比的竞争对手包括经典的CART、近最优的DL8.5和它的变体、加了稀疏正则化的GOSDT,还有基于混合整数规划的FLOW方法。

结果显示,在离散化特征上运行的TREVIS版本,平均加权F1分数达到0.841,和表现最好的近最优方法GOSDT打平,并且在统计检验上和DL8.5这些顶尖方法没有显著差异。但真正让人眼前一亮的是叶子数量这一项:TREVIS在原始特征和离散化特征两个版本上,平均叶子数分别只有5.72和8.94,是所有方法里最低的,比表现最强的DL8.5(平均19.39个叶子)少了一大截。

具体到某些数据集,这个差距更明显。比如在heloc这个数据集上,TREVIS用了2个叶子就拿到0.684的F1分数,而DL8.5需要16个叶子才拿到0.707,多花了14个叶子,只换来2个百分点的提升。这种"性价比"上的差异,正是论文想要证明的核心论点:TREVIS能用更简单的树,拿到差不多的效果。

论文还专门画了一张性能和稀疏度的权衡图,把所有方法的平均F1分数和平均叶子数标在一张图上,TREVIS明显落在左上角区域,也就是"叶子少、分数高"的理想区间。这条帕累托前沿的位置,直观地说明了TREVIS在这场权衡里占了便宜。

**潜在空间到底靠不靠谱**

TREVIS的效果好不好,很大程度取决于TTVAE学出来的潜在空间质量怎么样。作者专门做了两方面的验证,一个叫局部平滑性,一个叫全局一致性。

*局部平滑性:指潜在空间里两个点的距离越近,它们解码出来的实际内容也应该越相似,如果这一点不成立,那在潜在空间里做梯度优化就没有意义,因为你根本不知道往哪个方向挪一小步会带来什么变化。*

为了验证这一点,作者随机采样一批潜在点,再对它们加不同程度的高斯噪声,制造出"扰动版本",然后计算原始树和扰动后的树之间的编辑距离,看这个距离是否和噪声大小成正比。结果显示,六个代表性数据集上,这个相关系数都在0.6左右,且统计显著,说明潜在空间确实是"越近越像"的。

*全局一致性:指潜在空间里应该存在某些方向,沿着这些方向移动,解码出来的树在某个具体属性(比如叶子数量、树的深度)上会平滑地变化,而不是杂乱无章。*

作者训练了三个简单的线性回归模型,分别去预测F1分数、叶子数量和树深度,然后沿着这些模型的梯度方向在潜在空间里画出轨迹,投影到二维图上观察。结果发现,树的结构属性(叶子数、深度)对应的方向明显更平滑、更连贯,而预测性能这个方向相对更"崎岖"一些,规律性没那么强。这也提示了一个局限:**优化结构简单性比优化预测准确率,在这个潜在空间里更容易找到清晰的方向。**

**训练成本和一些细节权衡**

不能光看效果,还得看代价划不划算。论文里做了大量消融实验,比如测试不同的模型规模(嵌入维度、层数、注意力头数)对生成质量的影响。

结论挺反直觉的:并不是模型越大越好。作者测试了嵌入维度120和240、层数2和4、6,头数2和4的各种组合,发现小模型(嵌入维度120,2层,2个头)的表现和更复杂的配置差不多,但训练时间能砍掉一半以上,从16分钟压到不到6分钟。

作者还测试了训练用的树的数量对效果的影响,从500棵一路加到6万棵,发现验证集上的F1分数在几千棵树之后就基本稳定了,重建损失的改善也在2万棵树之后变得很微弱。所以最终选定用2万棵训练树,这是在训练成本和效果之间找到的一个平衡点。

在整体训练时间上,TREVIS的总耗时(包括TTVAE训练、代理模型训练、梯度搜索三部分)大约在600秒左右,和近最优方法比起来算是有竞争力的,尤其相比GOSDT在大数据集上动辄超过1小时的运行时间,TREVIS的效率优势比较明显。

**这个方法还有哪些没解决的问题**

作者自己也坦承了几点局限。

一个是前面提到的,预测性能这个属性在潜在空间里不如结构属性那么容易找到清晰的优化方向,这意味着如果未来想优化更复杂的目标(比如公平性、隐私保护、抗噪声鲁棒性),可能还需要更精细的空间设计。

另一个是流程本身的复杂度。TREVIS需要先训练TTVAE,再训练代理模型,再做梯度搜索,三个阶段串联起来,比起CART这种"一步到位"的贪心算法,显然不是一个轻量级的方案。

还有一点很实在:论文的实验显示,TREVIS在原始连续特征空间上的表现,明显不如在离散化特征空间上的表现。这说明这个方法目前更依赖于预先做好特征离散化处理,直接面对海量连续分割点的原始空间时,效果会打折扣。

**写在后面**

读完这篇论文,我最先愣住的地方,其实是那个"阈值取区间左端点而不是取中点"的小细节。

这是个很不起眼的工程选择,但它背后藏着一个挺有意思的逻辑:为了让Transformer这种为语言设计的模型能处理决策树,作者硬是把一个连续数值问题改造成了离散词表问题。这不是妥协,而是一种翻译,把树的语言硬生生翻译成了Transformer能听懂的"语法"。这让我想到,很多跨领域方法的关键突破,往往不在算法层面的创新,而在"怎么把A领域的问题表达成B领域能理解的形式"这件事上。

另一个让我反复想的地方,是论文里提到的那个对比:F1分数在潜在空间里"不太规则",而叶子数量和深度这些结构指标反而很规则。这其实暗示了一件事,模型的预测能力和数据本身、特征质量、训练细节纠缠得太深,很难被简单地"编码"进一个平滑的向量空间;而树的形状这种纯粹的结构属性,反而更容易被几何化。这或许说明了一个更普遍的道理:越是"客观可测量"的东西(比如叶子数就是数个数),越容易被塞进一个连续空间去优化;越是依赖复杂上下文的东西(比如预测准不准),这件事本身可能就没有那么"平滑"。

那如果哪天有人想让潜在空间也能平滑地表达"这棵树对某个群体是否公平"呢?那会是完全不同难度的一场游戏。

Q&A

Q1:TREVIS是什么?

A:TREVIS是比萨大学团队提出的一种学习决策树的新方法,它先用Transformer变分自编码器把决策树映射到一个连续的潜在空间,再用可微分的代理模型和梯度上升在这个空间里搜索兼顾预测性能和结构简洁度的最优决策树。

Q2:TREVIS相比传统决策树算法有什么优势?

A:实验显示TREVIS在18个数据集上的预测性能和GOSDT等近最优算法基本持平,但生成的树叶子数量明显更少,平均只有5.72到8.94个,远低于DL8.5等方法的十几到二十个,实现了性能和简洁性更好的平衡。

Q3:TREVIS目前还有哪些局限?

A:论文指出预测性能在潜在空间中的分布不如树结构属性那样规律,导致优化准确率的方向不够清晰;同时该方法在原始连续特征空间上效果不如离散化特征空间,且训练流程比贪心算法复杂,涉及多个训练阶段。

作者声明:作品含AI生成内容
举报/反馈
مشاركة عبر: ويبو Qzone
مهتم بالتعاون بشأن هذا المقال؟
سنعاود الاتصال بك خلال يوم عمل واحد
اترك رسالة