)
GBDT算法一、思想和概念二、推导为啥负梯度就是残差三、GBDT实战推导四、残差给下一轮和实际弱学习器计算的值不一致我能理解但是为啥还要给下一轮分割点呢五、学习XGboost前置知识一定搞清这个算法Boosting核心思想它采用加法模型和前向分步算法每一步都针对前一步的错误进行修正不断提升整体预测能力常见算法包括 AdaBoost权重Boosting和 GBDT、XGBoost、LightGBM梯度Boosting等一、思想和概念二、推导为啥负梯度就是残差先区别 平方损失损失函数最小二乘损失函数: MSE , MAE ,还有一个开MSE根号得RMSE平方损失是单个样本的损失函数平方损失 和损失函数 对比平方损失 和 最小二乘 对比下面这个推导没看明白重新问ai才看明白推导看了下面这个推导才知道为啥负梯度是真实值减去预测值(下面这只是单个样本只是GBDT实战只是多了∑ i 1 n \sum_{i1}^{n}i1∑n)三、GBDT实战推导开始构建第一个弱学习器开始构建第二个弱学习器一轮算出预测值从而就算出负梯度。这个负梯度就是第二轮的目标值但是光负梯度还不够还要找分割点。(算出分割点左右的平均负梯度,让当前弱机器学习返回负梯度即参照更准确点)(用到上一轮的负梯度和最优分割点从而根据分割点求出左右两侧的预测值算出负梯度。重复左右负梯度均值算平方损失找到第二个弱学习器最优分割点)开始构建第三个弱学习器(重复第二轮步骤)下面这张截图说的实际残差就是当前这个树的输出四、残差给下一轮和实际弱学习器计算的值不一致我能理解但是为啥还要给下一轮分割点呢残差只是一个粗糙的“纠错信号”:第一轮预测值全是 7.31目标值有高有低5.56 到 9.05。这时算出来的负梯度残差是 -1.75、-1.61 … 1.74。这个残差告诉你“每个样本该往哪调”.把样本按特征 x 排序找一个切分点比如 6.5把样本分成左右两组。然后分别计算左右两组的“平均残差”用这两个平均值去代替原本每个样本各自的残差。这就是项目里:弱学习器实际返回的残差为什么这么做为啥需要这个最优分割点因为决策树CART不是线性模型它不能给每个样本一个独立的预测值它只能给“落在同一片叶子里的样本”一个相同的输出值。所以 GBDT 必须把样本分组然后给每组算一个“代表值”。这个“代表值”就是该组残差的均值它是对该组所有样本“最优的纠错力度”。五、学习XGboost前置知识一定搞清这个算法上面截图说的实际残差就是当前这个树的输出搞明白第t轮的预测值 前t-1轮的预测值 第t棵树的输出