在 MATLAB 中修改决策树的精度

Posted

技术标签:

【中文标题】在 MATLAB 中修改决策树的精度【英文标题】:modify precision of a decision tree in MATLAB 【发布时间】:2018-09-16 18:11:50 【问题描述】:

我使用 fitrtree 创建了一个回归树 我想采用 CutPoint 等参数并降低精度,如下所示:

tree.CutPoint=round(tree.CutPoint,5);

但我不能这样做,因为 CutPoint 设置为只读,我想修改它或创建一个与此树基本相同但具有这些修改的树。不幸的是,文档仅通过 fitrtree 函数显示构造函数。是否有可能做到这一点?如果有,怎么做?

【问题讨论】:

【参考方案1】:

这只是部分建议性解决方案。我希望其他人能提出更好的解决方案。

无效的解决方案:

通常,每当出现此类问题时,(繁琐的)解决方案是找到该类的构造函数,然后将所有字段(包括您的 round(tree.CutPoint,5)CutPoint,即类似这样的东西)提供给构造函数

NewTree = RegressionTree('X',tree.X,'Y',tree.Y,...,'CutPoint',round(tree.CutPoint,5),...)

理论上应该创建一个新树NewTree,它与tree 相同,除了已舍入的CutPoint

但是,查看它所说的构造函数的文档(或帮助中心)

这个类的对象不能通过调用构造函数来创建。使用 FITTREE 通过将树拟合到训练数据来创建 RegressionTree 对象。

所以这种方法也行不通。然后,我尝试在类的层次结构中更进一步,看看是否可以使用这些方法做到这一点,然后向下发展,这也是(我能找到的)不可能的。

我的建议:

似乎 Mathworks 已经竭尽全力确保我们不会篡改生成的树。因此,我的基本建议是不要使用这种方法。然而,这可以通过多种方式完成:

如果您键入例如,所有用于构建树的代码似乎都可用。 edit RegressionTree 因此您应该能够找到结果树设置为private 的点,然后可以将其更改为public

如果您不想更改现有的 Matlab 代码,那么 Kota Hara 已经自己实现了 binary regression trees,您可以尝试一下。

最后一个建议是自己实现它,注意您不需要编写一个非常通用的方法,只需一个可以解决您的问题的方法。然后可以使用任何语言。

正如一开始所说,我希望有人比我运气好,尽管我非常怀疑,因为似乎 Mathworks 已经做了很多工作来阻止你 - 也许有一个漏洞,但我不知道.

【讨论】:

以上是关于在 MATLAB 中修改决策树的精度的主要内容,如果未能解决你的问题,请参考以下文章

决策树的分类报告参数(精度、召回率、f1 分数、支持)为 1.0

数据挖掘中决策树的探讨2

决策树的理解

机器学习算法:cart剪枝

Matlab决策树对空气质量和天气温度及天气数据做交通出行推荐预测

决策树算法 CART和C4.5决策树有啥区别?各用于啥领域?