如何使决策树规则更易于理解?
How to make Decision Tree rules more understandable?
我想从 Decision Trees/Random Forest 中提取有用的规则,以便开发一种更适用的方法来处理规则和预测。所以我需要一个让规则更容易理解的应用程序。
对我的目的有什么建议(例如可视化、验证方法等)吗?
就为什么选择特定拆分而言,答案总是:"Because that split created the best splitting of the target variable."
您引用了 scikit-learn
... Go ahead and briefly scan scikit-learn's 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 文档通常很棒并且非常有用。
希望对您有所帮助!
虽然这对于决策树来说当然是可能的,而且 AN6U5 很好地描述了如何做,但随机森林使用一束小树,这些小树是使用数据的随机子集和特征的随机子集训练的。因此,每棵树仅在有限的特征和数据设置中是最优的。由于通常有 100 甚至 1000 个,因此通过检查随机数据来弄清楚上下文将是一项吃力不讨好的任务。我认为没有人这样做。
然而,随机森林生成的特征有重要性排名,如果需要,几乎所有实现都会输出它们。事实证明它们非常有用。
其中两个最重要的是 MDI(平均降低杂质)和 MDA(平均降低精度)。在这部优秀作品的第 6 章中对它们进行了一些详细描述:http://arxiv.org/pdf/1407.7502v3.pdf
我想从 Decision Trees/Random Forest 中提取有用的规则,以便开发一种更适用的方法来处理规则和预测。所以我需要一个让规则更容易理解的应用程序。
对我的目的有什么建议(例如可视化、验证方法等)吗?
就为什么选择特定拆分而言,答案总是:"Because that split created the best splitting of the target variable."
您引用了 scikit-learn
... Go ahead and briefly scan scikit-learn's 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 文档通常很棒并且非常有用。
希望对您有所帮助!
虽然这对于决策树来说当然是可能的,而且 AN6U5 很好地描述了如何做,但随机森林使用一束小树,这些小树是使用数据的随机子集和特征的随机子集训练的。因此,每棵树仅在有限的特征和数据设置中是最优的。由于通常有 100 甚至 1000 个,因此通过检查随机数据来弄清楚上下文将是一项吃力不讨好的任务。我认为没有人这样做。
然而,随机森林生成的特征有重要性排名,如果需要,几乎所有实现都会输出它们。事实证明它们非常有用。
其中两个最重要的是 MDI(平均降低杂质)和 MDA(平均降低精度)。在这部优秀作品的第 6 章中对它们进行了一些详细描述:http://arxiv.org/pdf/1407.7502v3.pdf