如何提高matlab中决策树的准确性

Posted

技术标签:

【中文标题】如何提高matlab中决策树的准确性【英文标题】:How to improve accuracy of decision tree in matlab 【发布时间】:2012-06-10 04:21:53 【问题描述】:

我有一组数据,我使用决策树在 matlab 中对它们进行分类。我把套装分成两部分;一个训练数据(85%)和另一个测试数据(15%)。问题是准确度在 %90 左右,我不知道如何改进它。如果您对此有任何想法,我将不胜感激。

【问题讨论】:

数据集的维数是多少?您是否有某些原因必须使用决策树,或者您可以探索其他算法? 【参考方案1】:

决策树可能由于多种原因而表现不佳,我能想到的一个突出原因是,在计算拆分时,他们没有考虑变量或目标变量对其他变量的相互依赖性。 在进行性能提升之前,应该知道它不会导致过拟合,并且应该能够泛化。

为了提高性能,可以做以下几件事:

变量预选: 可以对变量进行多重共线性测试、VIF 计算、IV 计算等不同的测试,以仅选择几个***变量。这将提高性能,因为它会严格消除不想要的变量。

集成学习使用多棵树(随机森林)来预测结果。随机森林通常比单个决策树表现更好,因为它们设法减少偏差和方差。它们也不太容易过度拟合。

K-Fold 交叉验证:训练数据本身的交叉验证可以稍微提高模型的性能。

混合模型:使用混合模型,即在使用决策树后使用逻辑回归来提高性能。

【讨论】:

【参考方案2】:

我想这里更重要的问题是给定域的准确率是多少:如果您要对垃圾邮件进行分类,那么 90% 可能有点低,但如果您要预测股票价格,那么 90% 真的很高!

如果您在已知域集上执行此操作,并且之前的分类准确度示例高于您的示例,那么您可以尝试以下几种方法:

K-Fold Cross Validation Ensamble Learning Generalized Iterative Scaling (GIS) Logistic Regression

【讨论】:

【参考方案3】:

我认为您不应该对此进行改进,可能是分类器过度拟合了数据。尝试使用其他数据集,或交叉验证以查看更准确的结果。

顺便说一句,90%,如果不是过拟合,是很好的结果,可能你甚至不需要改进它。

【讨论】:

【参考方案4】:

您可以查看pruning 叶子以改进决策树的泛化能力。但如前所述,90% 的准确率可以认为是相当不错的......

【讨论】:

【参考方案5】:

90% 是好是坏,取决于数据的领域。

但是,您的数据中的类可能是重叠的,您实际上不能超过 90%。

您可以尝试查看哪些节点是错误的,并检查是否可以通过更改它们来改进分类。

你也可以试试随机森林。

【讨论】:

以上是关于如何提高matlab中决策树的准确性的主要内容,如果未能解决你的问题,请参考以下文章

决策树 Sklearn - 树的深度和准确性

如何使用 sklearn 从决策树模型中提高预测的准确性?

在 MATLAB 中修改决策树的精度

决策树如果数据集不够多,会导致分类准确率低吗

R语言基于树的方法:决策树,随机森林,套袋Bagging,增强树

机器学习面试问答:决策树如何进行剪枝?剪枝的方法有哪些?