BAGGING:有放回的从训练集中选取T个采样集(m个样本)分别给T个弱学习器,这样采样初始训练集会有63.2%出现在这T个样本中,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合,对新样本的预测是通过这T个弱学习器进行投票来决出(分类),或者求均值(回归)
随机森林:RF在以决策树位基学习器构建bagging基础上,进一步在决策树训练过程中引入了随机属性选择。在每一个决策树中,假定采样集中的有d个属性,从中随机选择包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分
BOOSTING:先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将T个基学习器进行加权结合。
BOOSTING家族:AdaBoost->GBDT->XGBoost->LightGBM
AdaBoost:加法模型+用前一轮的误差率来更新权重,分错的权重越大,反之越小,弱学习器不限。
GBDT:加法模型+前向分布算法,弱学习器只限CART回归树
前向分布算法:从第一轮到最后一轮,每一轮都优化损失函数,当前伦需要优化的损失函数是前一轮优化完的损失函数+当前分类器的损失函数,难以并行,但是可以并行。在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是f_t−1(x), 损失函数是L(y,f_t−1(x)), 我们本轮迭代的目标是找到一个CART回归树模型的弱学习器h_t(x),让本轮的损失函数L(y,f_t(x)=L(y,f_t−1(x)+h_t(x))最小。简单来说就是改label,把label编程残差来进行训练
XGBoost:和GBDT最大的区别是,目标函数中不是只有损失函数,还添加了正则化项,并且在f_t=0处用泰勒二阶展开此目标函数。
XGBoost的想法是利用其在f_t=0处的泰勒二阶展开近似它。所以,目标函数近似为:
其中g_i为一阶导数,h_i为二阶导数:
由于前t-1棵树的预测分数与y的残差对目标函数优化不影响,可以直接去掉。简化目标函数为
LightGBM:lgb是对xgb的改进,LightGBM基于histogram算法来代替xgb的pre-sorted所构建的数据结构。
来源:CSDN
作者:保持动力
链接:https://blog.csdn.net/qq_36342034/article/details/104233411