提升逻辑回归模型

机器算法验证 物流 adaboost
2022-02-04 12:36:24

Adaboost 是一种集成方法,它将许多弱学习器组合成一个强学习器。我读过的所有 adaboost 示例都使用决策树桩/树作为弱学习器。我可以在 adaboost 中使用不同的弱学习器吗?例如,如何实现 adaboost(一般是 boosting)来提升一个逻辑回归模型?

分类树和逻辑回归的一个主要区别是前者输出类别 (-1,1),而逻辑回归输出概率。一个想法是从一组特征中选择最好的特征 X 并选择一个阈值(0.5?)将概率转换为类,然后使用加权逻辑回归来找到下一个特征等。

但我认为存在一种通用算法来提升不同的弱学习器,而不是输出概率的决策树桩。我相信 Logitboost 是我问题的答案,但我试图阅读“Additive Logistic Regression”论文并被困在中间。

2个回答

不要混淆预测变量的处理(通过基础学习器,例如树桩)和 boosting 中损失函数的处理。虽然 AdaBoost 可以被认为是寻找基学习器的组合以最小化错误分类错误,但您引用的“Additive Logistic Regression”论文表明,它也可以被制定为最小化指数损失函数。这种见解为通过梯度提升最小化可微损失函数的一类广泛的机器学习问题开辟了提升方法在每一步拟合的残差是根据损失函数的梯度计算的伪残差。即使预测变量被建模为二元树桩,模型的输出也不必是二元选择。

正如另一个答案所述,线性基础学习器可能不适用于提升,但无论是标准还是逻辑意义上的“提升回归”,线性基础学习器都不需要。确定的非线性树桩可以组合为慢速基础学习器,以最小化适当的损失函数。它仍然被称为“增强回归”,尽管它与预测变量系数的线性标准回归模型相去甚远。对于线性模型和以树桩或树作为预测变量的“增强回归”模型,损失函数在功能上可以相同。ISLR的第 8 章非常清楚地说明了这一点。

因此,如果您想要一个与增强回归等效的逻辑回归,请关注损失函数而不是基础学习器。这就是您引用的论文中的 LogitBoost 方法所做的:最小化对数损失,而不是 adaboost 中隐含的指数损失。Wikipedia AdaBoost 页面描述了这种差异。

该站点的许多参与者会争辩说,基于对数赔率/概率的预测比严格的是/否分类预测更可取,因为前者更普遍地允许在假阳性和假阴性预测的额外成本之间进行不同的权衡. 正如您对相关问题的回答所表明的那样,可以从 AdaBoost 派生的强分类器中获得估计概率,但 LogitBoost 可能会提供更好的性能。

用于分类的梯度提升的实现可以提供有关潜在概率的信息。例如,关于梯度提升的这个页面展示了sklearn代码如何允许在逻辑回归的偏差损失和 AdaBoost 的指数损失之间进行选择,并记录了从梯度提升模型预测概率的函数。

事实上,我们在这里有一个关于回归案例的非常相似的问题。@Matthew Drury 给了我们一个很好的答案

线性回归的梯度提升 - 为什么它不起作用?

线性模型(例如逻辑回归)不利于提升。原因是如果将两个线性模型相加,结果是另一个线性模型。另一方面,添加两个决策树桩或树,将有一个更复杂和有趣的模型(不再是树。)

详细信息可以在这篇文章中找到。在这个链接中,我得出了为什么添加两个线性模型并不有趣。我展示了通过迭代提升决策树桩迭代的效果。

线性基础学习器如何在 boosting 中发挥作用?它在 xgboost 库中是如何工作的?

请注意,决策树/树桩不是类似于逻辑回归的“线性模型”。

有关详细信息,请参阅此帖子

决策树桩是线性模型吗?