机器学习——XGBoost
XGBoost是迄今为止最常用的决策树集成或决策树实现方法的一种算法,它运行快速,开源实现容易使用,也被非常成功地用于赢得许多机器学习比赛。
给定一个大小为m的训练集,重复B次,使用有放回抽样创建一个大小为m的新训练集,然后在新的数据集上训练决策树,因此第一次通过这个循环时,我们可能会像这样创建一个训练集,并像这样训练决策树,这里是我们要改变算法的地方,也就是每次通过这个循环,除了第一次,会有第二次、第三次,以此类推,在抽样时,不是以相同的概率选择每个训练样本,而是将以更高的概率选择那些在我们目前构建的树集合中表现较差的样本。但是第二次通过这个循环时,不是从所有m个样本中以相同的概率选择,让我们更有可能选择之前训练的树分类错误的样本或者之前训练的树表现不佳的样本。
我们将更多的注意力放在尚未处理好的例子子集上,并用新的决策树,构建集成来尝试处理这些问题。具体来说,我们会查看刚刚构建的决策树并回到原始训练集,注意是原始训练集,不是通过某种方式或替换生成的训练集,我们会查看所有的这10个例子,并查看这个学习的决策树对这10个例子的预测,所以第四列是它们的预测结果,在每个例子后边打✅,这取决于树的分类是否正确,所以在第二次循环中,我们会使用有放回的抽样来重新生成。另一个包含10个例子的训练集,每次从这10个例子中选取一个例子时,更有可能从这三个仍然分类错误的例子中挑选,所以这会让第二棵决策树通过一种类似可以练习的过程关注这些例子,这种提升过程将总共执行B次。在每次迭代中,你会查看第1棵树的集成结果,以此类推,当你构建第B棵树时,更有可能选择那些之前构建的树集成仍然分类错误的例子,增加选择这个例子而不是那个例子的概率相当,但是不需要担心这些细节来使用提升树的实现。
在各种实现提升的方法中,目前使用最广泛的是XGBoost,代表极端梯度提升,这是一个非常快速且高效的开源提升树实现,XGBoost还提供了默认的分裂标准和停止分裂的标准,XGBoost的一项创新是内置了正则化以防止过拟合。XGBoost实际上会为不同的训练样本分配不同的权重,所以它实际上不需要生成大量随机选择的训练集,这就使得它比使用有放回抽样程序更高效一些