如何使决策树规则更易于理解?
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 标记为正确答案。以上是关于如何使决策树规则更易于理解?的主要内容,如果未能解决你的问题,请参考以下文章