【问题标题】:Weak Classifier弱分类器
【发布时间】:2025-12-22 09:40:11
【问题描述】:

我正在尝试实现一个使用 AdaBoost 算法的应用程序。我知道 AdaBoost 使用一组弱分类器,但我不知道这些弱分类器是什么。你能用一个例子向我解释一下,并告诉我是否必须创建自己的弱分类器或者我应该使用某种算法?

【问题讨论】:

    标签: machine-learning artificial-intelligence classification adaboost


    【解决方案1】:

    Weak classifiers(或弱学习器)是性能仅比随机分类器稍好一点的分类器。因此,这些分类器对如何预测正确的标签有一些线索,但不像强分类器那样多,例如朴素贝叶斯、神经网络或 SVM。

    最简单的弱分类器之一是Decision Stump,它是一个单级决策树。它为一个特征选择一个阈值并在该阈值上分割数据。然后,AdaBoost 将训练一支这些决策树桩,每个决策树桩都专注于数据特征的一部分。

    【讨论】:

    • 我决定使用决策树桩。我对应用程序的想法是:识别大象的类型。我的 Elephant 类具有以下字段:int size、int weight、double sampleWeight、ElephantType 类型(可以是亚洲或非洲)。我想知道我是否应该只创建 2 个决策树桩(1 个用于尺寸,1 个用于重量)还是应该创建更多的决策树桩(很少用于尺寸,很少用于重量)?
    • @AjMeen 由于决策树桩根据定义仅是单级的,因此您不能一个接一个地使用两个决策树桩。解决您的问题 IMO 的最佳方法是根据这两个不同的特征创建一个 2d 决策树桩。这样,您将在(单个)决策树桩中考虑这两个特征:假设x=sizey=weight,那么您的树桩将是(例如)其二维欧几里得长度的阈值:if sqrt(x^2 + y^2) > 6 then return +1 else return -1 .我随机选择了条件> 6,只是为了说明问题。
    • @AjMeen 当我说你不能使用多个决策树桩时,我的意思是“..在一次迭代中”。您应该在 adaboost 的每次迭代中训练一个决策树桩。
    【解决方案2】:

    当我使用 AdaBoost 时,我的弱分类器基本上是每个数据属性的阈值。这些阈值需要具有超过 50% 的性能,否则将是完全随机的。

    以下是关于 Adaboost 以及如何计算这些弱分类器的精彩介绍: https://user.ceng.metu.edu.tr/~tcan/ceng734_f1112/Schedule/adaboost.pdf

    【讨论】: