本文共 1277 字,大约阅读时间需要 4 分钟。
引用源github:https://github.com/pandali1/DataScience/tree/main/%E9%9B%86%E6%88%90%E5%AD%A6%E4%B9%A0/ch3
Adaboost的算法内容,我们需要通过计算M个基本分类器,每个分类器的错误率、样本权重以及模型权重。我们可以认为:Adaboost每次学习单一分类器以及单一分类器的参数(权重)。在Adaboost模型中,我们把每个基本分类器合成一个复杂分类器的方法是每个基本分类器的加权和,即:
其中, 𝑏(𝑥;𝛾𝑚) 为即基本分类器, 𝛾𝑚 为基本分类器的参数, 𝛽𝑚 为基本分类器的权重,把 𝑏(𝑥;𝛾𝑚) 看成是函数就是一个加法模型。 给定训练数据以及损失函数 𝐿(𝑦,𝑓(𝑥)) 的条件下,学习加法模型 𝑓(𝑥) 就是:Adaboost算法是前向分步算法的特例,Adaboost算法是由基本分类器组成的加法模型,损失函数为指数损失函数。
Adaboost算法,并没有涉及回归的例子。上一节提到了一个加法模型+前向分步算法的框架,可以用加法模型+前向分步算法的框架实现回归问题。
使用加法模型+前向分步算法的框架解决问题之前,首先需要确定框架内使用的基函数,这里使用决策树分类器。回归树等树算法最重要是寻找最佳的划分点,分类树用纯度来判断最佳划分点使用信息增益(ID3算法),信息增益比(C4.5算法),基尼系数(CART分类树)。但是在回归树中的样本标签是连续数值,可划分点包含了所有特征的所有可取的值。所以再使用熵之类的指标不再合适,取而代之的是平方误差,它能很好的评判拟合程度。基函数确定了以后,我们需要确定每次提升的标准。 Adaboost算法内使用了分类错误率修正样本权重以及计算每个基本分类器的权重,回归问题没有分类错误率也就没办法在这里使用了,因此我们模仿分类错误率,用每个样本的残差表示每次使用基函数预测时没有解决的那部分问题。因此,我们可以得出如下算法: 能够建立起依靠加法模型+前向分步算法的框架解决回归问题的算法,叫提升树算法。该算法还有提升的空间提升树利用加法模型和前向分步算法实现学习的过程,当损失函数为平方损失和指数损失时,每一步优化是相当简单的,也就是我们前面探讨的提升树算法和Adaboost算法。但是对于一般的损失函数而言,往往每一步的优化不是那么容易,对比以下损失函数:
针对上面的问题,Freidman提出了梯度提升算法(gradient boosting),这是利用最速下降法的近似方法,利用损失函数的负梯度在当前模型的值作为回归问题提升树算法中的残差的近似值,拟合回归树。与其说负梯度作为残差的近似值,不如说残差是负梯度的一种特例。 梯度提升算法:转载地址:http://ragwi.baihongyu.com/