Adaboost可不可以利用其他的损失函数?

匿名用户 2018-10-19 189 adaboost 分类器 损失函数
Adaboost是通过最小化指数损失,得到基分类器的权重和对样本分布进行更新。那么,Adaboost 可不可以使用其他损失函数,比如 log loss?因为对数几率回归使用log loss是问题使然。那么,Adaboost使用指数损失是从哪方面? 个人理解,使用其他损失函数比如log loss,Adaboost求解不出来每个基分类器的权重。不然对数几率回归也不用梯度下降了。
其他回答
Gradient boosting是ensemble learning中降低bias的方法之一, Adaptive boost (ADABOOST) 使用boosting + 指数损失,实质上可以看作Steepest gradient descent算法的实现。在boosting中也可以使用其他的损失函数,比如gradient boost for regression使用的是平方误差。

adaboost每次根据上一轮训练误差给每个样本更新权重u_{t+1},其中正确分类的样本的权重就除以\lambda,而错误分类的样本权重则乘以\lambda。如果把\lambda设为\sqrt{\frac{1-e_t}{e_t} } , 而e_t
使用0-1损失,那么原有模型的加权损失就刚好是1/2,在加权之后的数据上分类效果最差。

Adaboost给样本更新权重的过程其实可以看Gradient descent的过程。
u_{t+1}=u_t*\lambda^{-y_n*g_t},其中yn是第n个样本的观测值,gt是第t轮训练的预测值。
\alpha_t=ln(\lambda),
那么
u_{t+1}=u_0*e^{-y_n*\sum_{1}^{t}{ \alpha_t*g_t}}
其中的u_{0}=1/(样本量N), y_n*\sum_{1}^{t}{\alpha_t*g_t} 可以写成向量点积形式:y_n(\alpha\cdot g),这个刚好是支持向量机的中对margin的定义。margin越大越好,因此权重u_{t+1}越小越好,把所用的样本n都加起来就得到了adaboost的exponential loss function:1/N*\sum_{n=1}^{N}{x} e^{-y_n*\sum_{1}^{t}{ \alpha_t*g_t}}.
可以看国立台湾大学的机器学习技法课程视频中的具体推导过程,有了损失函数,可以证明\alpha_t就是Steepest Descent的learning rate,gt就是相应的gradient。
机器学习技法
大象 2018-10-19 12:46:09 0条评论
我对AdaBoost的了解仅限于维基百科上的介绍。

维基百科页面上Derivation一节中的推导,是依赖于指数损失的,另外还依赖于每个弱分类器都是二分类器。在这种模型中,当然只能使用指数损失。

不过说实话,AdaBoost是我见过的唯一使用指数损失的模型,指数损失真不能算是一种典型的损失函数。维基百科在下面的几节中提到了一些更常用的损失函数。如果要使用其它损失函数,模型的推导过程必须做出修改。修改后的模型是不是还能叫做AdaBoost,我就不确定了。
王赟 Maigo 2018-10-19 12:46:09 0条评论
相关问答