我有两个问题。1、为了提高分类器的性能,大部分时候我们使用bagging或者boosting的方法。可以使用boosting来提高决策树分类器的准确率吗?2. 我们计算某些属性的概念层次。在数据挖掘之前计算它们的目的是什么。当元数据不可用时,是否存在任何半监督方法来获取它?
2 回答
我们可以使用boosting来提高决策树分类器的准确性吗?
我假设您所说的决策树是“深层”决策树。以我的经验,提升可以用作组合深度决策树的集成方法。但是,性能增益非常有限。提升更适用于“弱”分类器,例如非常浅的决策树或“决策树桩”(深度 1 决策树)。
下面是我从ESL - Elements of Statistical Learning -Chapter10 复制的图。在这张图中,我们改变了树的大小(从 1 个节点到 100 个节点)(弱分类器),我们绘制了测试误差与提升迭代的关系。你会看到树桩表现最好。这背后的直觉是,树中的更多节点会引入更高级别的变量之间的交互。当使用决策树桩时,不允许交互。当节点数为 3 时,允许二元交互作用,以此类推。然而,adaBoost 背后的生成函数是相加的,因此节点数 > 2 的 boosting 模型会产生不必要的方差,从而导致更高的测试误差。作者建议保持节点数<= 6。
我们计算某些属性的概念层次结构。在数据挖掘之前计算它们的目的是什么。
数据集群的动机之一可能是可扩展性。让我们以 SVM 分类器为例。标准 SVM 的训练时间为O(n^3)
. 因此,它对于非常大的数据集是不可扩展的。解决这个问题的一个想法是增加一个预处理步骤:聚类特征,使每个聚类的质心成为整个聚类的代表特征。见下图。每个圆圈代表一个集群。现在将每个集群的质心用作特征来进行 SVM 训练。这大大减少了实例空间。假设您现在有m
集群。那么训练时间是O(m^3)
。因为m << n
,问题解决了。有关此分层集群 SVM 的详细信息,请参见此处。
当元数据不可用时,是否存在任何半监督方法来获取它?
有关无监督方法,请参阅凝聚聚类。还有监督方法,通常用于学习特征空间上的层次结构。最先进的是:
我从未使用过任何半监督层次聚类算法,但这是我通过谷歌搜索找到的一种。
由于 boosting 算法试图钳制正确的预测并且只为随后的训练轮提供错误分类的观察结果,因此在后期的训练阶段会导致相当严重的过度拟合,因为树的样本有限并且不适合那种预言。
与 bagging 相比,用于后续轮次训练的子集是随机选择的,而不是被选为错误标记的样本。这意味着装袋步骤中的每个弱分类器都有合理的机会辨别数据中的结构,并且不会被人为地限制在一个小的子集上。对于决策树,这非常重要。定性地说,这是为什么 bagging(随机森林)在决策树中很常见,而 boosting 不太常见的原因之一。
最后,最近有一个关于提升面对分类噪声(训练标签中的错误)的准确性的有争议的研究:“Random Classification Noise Defeats All Convex Potential Boosters”. 结论是,对于给定的提升算法(来自此类算法的一个特殊家族)、基分类器类型和噪声率,您可以构建一个适合这种情况的数据集,如果噪声率为零,则可以有效地学习,但是在存在任何非零噪声率的情况下,无法以优于 1/2 的最终(增强后)预测精度来学习。这样做的目的是在多大程度上劝阻从业者使用凸助推器仍然存在争议,还有其他类别的助推器不受相同限制,但在开源学习库中不太常见且不太广泛可用。