完善的决策树分类

Posted

技术标签:

【中文标题】完善的决策树分类【英文标题】:Perfect decision tree classification 【发布时间】:2013-03-26 01:48:07 【问题描述】:

想象一下,在一组变量 V 的值和一组标签名称 T(分类标签)之间的所有已知映射的宇宙都是已知的。此外,假设唯一变量值组合的总空间很大(> 100B 个点),标签集的大小相对较小(数千个元素)并且变量的数量非常少(4-10)。

什么是构建分类器函数的算法,它提供了从变量值到具有以下空间和时间复杂度目标的标签的完美映射(匹配没有误报或误报的先验知识):

时间复杂度低于 O(|V|*log|T|) 空间复杂度小于 O(|V|k), k ≤ e

或者,改写为决策树问题:

    如何调整决策树算法以创建完美映射? 如何有效地表示训练数据以保证这一点?

【问题讨论】:

您还没有定义什么是“完美”映射。 @phs 不错;固定。 先验知识如何表示?你怎么能说出任何实例属于哪个类,而不列举所有可能性?在我看来,this 是您应该使用的分类规则,而不是试图让决策树与此先验知识相匹配。或许你能解释一下上下文? @BenAllison 非常好的问题。 “类”空间由以下问题的输出生成:***.com/questions/15803808/… 【参考方案1】:

任何允许您以某种方式指定修剪级别的决策树分类器都应该可以实现您想要实现的目标。这个想法是让它根本不做任何修剪。您最终得到的决策树将(可能)每个训练实例有一个叶子(即非常大),但会以 O(|V|*log|T|) 的预测时间为您提供“完美”的准确性。

这完全独立于训练数据的表示方式(并且应该是)。唯一重要的是决策树诱导器可以读取和处理它。构建这种树的一种简单方法是为第一个示例添加路径,然后为第二个示例合并一个路径,依此类推。

这样的分类器在实践中是否有用当然是一个完全不同的问题——在大多数情况下不会。

【讨论】:

对,因此我对“好”算法的定义有些模糊。我将在问题描述中指定空间复杂度和叶节点数量的更严格界限。显然,考虑到我们正在处理的问题的规模,您所描述的本地算法既无法计算,也无法使用。 如果你想要高效的分类,为什么不简单地对所有实例的特征值进行散列并与你想要预测的值相关联呢? 注意问题大小> 100B点。由于数据集的变化,映射经常发生变化。缓存不实用。 如果您想要完美的分类,在任何情况下,您都无法在大小方面做得比存储整个数据集更好。除非你有一个特殊的案例,一切都很好地简化了。

以上是关于完善的决策树分类的主要内容,如果未能解决你的问题,请参考以下文章

sklearn-分类决策树

分类:基本概念、决策树与模型评估

决策树与随机森林

统计学习方法 李航 决策树

决策树、随机森林

决策树是啥东东?