GB与HGB:
梯度提升的计算专注于单个数据,而直方图梯度提升是先把连续的数据特征分箱,然后在分箱后的特征上构建模型,这样减少理论算法复杂度和内存使用,所以更加适用的大的数据集。
梯度提升的思想在于,按照顺序学习,通过逐步添加弱学习器来最小化损失函数,后续的模型专注于怎么减少前一个模型的残差。
但在有的情况下即使是在小量数据集上,HGB的表现也可能会更好,这可能与数据随机性或者数据内部结构有关,但通常情况下,HGB更适合用于大数据集。
对于GB,在梯度提升算法中,为每个类别都构建独立的模型来估计该类别的概率,所以对于一个n分类的任务,每次需要构建n棵树。在每轮迭代中,每棵树负责预测其对应类别的残差,以这种方式来逐步改进该模型的效果。所以如果总共进行了m论梯度提升,总共需要m*n棵树,这对于计算的要求是巨大的,所以对于类别过多的分类任务,推荐使用HGB。
RF:
对于随机森林,其主要思想是:每个子树在随机的数据子集上进行训练,预测的最后结果通过平均或者回归多棵子树的结果或者采用vote来得出。
subsampling:
这是梯度提升算法中的一个参数用于控制训练的数据集大小。可以避免过拟合,增加数据的随机性以及减少训练时间。如果要使用类似的思想应用与特征上,可以对max_features进行设置。
ExtraTrees:
超随机树也叫极端随机森林,与随机森林比较其特点上在每个分裂点上是随机选择的,增加了更大的随机性和泛化性。
Bagging meta-estimator:
Bagging 元估计器主要是通过结合多个模型来提高机器学习算法的稳定性和准确性。
主要有:
Pasting:不同的模型在不同的数据子集上训练
Bagging:通过在有放回的方法上抽取形成的多个数据集上进行训练(自举采样)
Ranom Subsaces:在不同的特征子集上进行训练
Ranom Patches:结合Pasting和Random Subspecies,在具有不同特征和数据的自己上训练不同的模型
以上多个方法的目的就在于增加模型的泛化性和随机性。
Stacked generalization:
堆叠泛化的思想在于先在训练数据上训练一些初级模型,然后在用这些初级模型进行预测,然后把这些初级模型预测的结果作为次级模型的输入,然后再训练次级模型。
AdaBoost:
自适应提升,主要是在样本中赋予权重,对于预测错的样本就增加其权重,以便在下一个迭代过程中加大解决这个预测错误问题的力度,然后通过不断迭代来提升效果。
梯度提升需要计算当前模型的残差并通过梯度下降的方法来优化下一步的训练,所有所比较复杂适合较为复杂的学习器,而对于AdaBoost是通过根据预测效果不断改变错误样本的权重来优化,但这容易受噪声数据影响进而导致过拟合。