如何使决策树规则更易于理解?

Posted

技术标签:

【中文标题】如何使决策树规则更易于理解?【英文标题】:How to make Decision Tree rules more understandable? 【发布时间】:2015-09-27 23:51:06 【问题描述】:

我想从决策树/随机森林中提取有用的规则,以便开发一种更适用的方式来处理规则和预测。所以我需要一个让规则更容易理解的应用程序。

对我的目的有什么建议(例如可视化、验证方法等)吗?

【问题讨论】:

【参考方案1】:

至于为什么选择特定拆分,答案总是:“因为拆分创建了目标变量的最佳拆分。”

您引用了 scikit-learn... 继续简单地扫描 scikit-learn 的 documentation on Decision Trees... 它有一个示例,这正是您在页面中间所要求的。它看起来像这样:

生成此图的代码也在那里:

from sklearn.datasets import load_iris
from sklearn import tree
iris = load_iris()
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)
from sklearn.externals.six import StringIO
with open("iris.dot", 'w') as f:
f = tree.export_graphviz(clf, out_file=f)

那里还有其他几种图形表示形式,并附有代码:

SKL 文档通常很棒而且非常有用。

希望这会有所帮助!

【讨论】:

对我来说看起来像 过度拟合。如果没有过度拟合,也许会更容易理解? 这就是情节的重点......最大深度 5 显然是过拟合,但也显示了最大深度 2,例如这些类型的图可以帮助您选择模型,但您必须查看哪些深度会导致过度拟合,哪些深度会导致欠拟合才能选择正确的深度。 感谢您的参考。这是一个很好的起点!除此之外,我寻找一种在决策树规则之上构建业务应用程序的方法。诸如“信用评分”之类的东西(请参阅:Guide to Credit Scoring in R)【参考方案2】:

虽然这对于决策树来说当然是可能的,并且 AN6U5 很好地描述了随机森林如何使用小树束,这些小树使用数据的随机子集和特征的随机子集进行训练。因此,每棵树仅在特征和数据的有限设置中才是最优的。由于它们通常有 100 甚至 1000 多个,因此通过检查随机数据来找出上下文将是一项吃力不讨好的任务。我认为没有人这样做。

但是,随机森林生成的特征有重要性排名,并且几乎所有实现都会在需要时输出它们。结果证明它们非常有用。

其中最重要的两个是 MDI(平均减少杂质)和 MDA(平均减少准确度)。在这部优秀作品的第 6 章中对它们进行了一些详细的描述:http://arxiv.org/pdf/1407.7502v3.pdf

【讨论】:

是的,我同意@Mike Wise,从决策树切换到随机森林显着改变了可视化考虑的范围。我认为必须将决策树可视化,然后不必太担心转向随机森林。那些刚接触机器学习和数据科学的人往往过于倾向于发现“带回家的启发式”,并且不关心通过模型指标、ROC 曲线、偏差-方差分解等进行适当的模型验证。我的建议是使用这些类型的方法,而不是试图可视化整个随机森林。 完全同意。我在工作中使用了很多 RT 和 BT,而 RT 的好处是重要性指标。顺便说一句,我喜欢你的回答,并且会调查那些没有看到的东西。我希望 Iomaga 记得将您的答案标记为正确。 :) 请注意,如果他有更多的分数,他也可以投票... 感谢您对 DT/RF 验证方法的解释、参考和讨论。事实证明,它们对我的任务非常有用。顺便说一句,我将 AN6U5 标记为正确答案。

以上是关于如何使决策树规则更易于理解?的主要内容,如果未能解决你的问题,请参考以下文章

决策树的python实现

机器学习之决策树

决策树

ML之监督学习算法之分类算法一 ———— 决策树算法

Python数据挖掘—分类—决策树

通俗理解决策树(概述无公式)