赞
踩
XGBOOST算法
1.简介
XGboost是一种集成算法(boosting),boosting算法的核心思想就是将多个弱分类器集中在一起做成一个强分类器。XGBOOST模型又被称为提升树模型,即将多个树模型整合到一起,组成一个强分类器。其中依托的树模型为cart回归模型。
2.CART回归树模型
其基本原理,假设树为二叉树,通过不同特征来分裂树。实质上就是通过不同特征纬度对样本空间进行划分,但是优化问题(如何找到最佳的特征和最佳的分裂点)是个很棘手的问题,CART算法的解决办法依次去求所有切分点,并求其最小值(二次代价函数),可以求得最小值即最佳切分特征和切分点。
3.XGBOOST算法
此算法的核心是通过持续不断的添加树,每次添加的树相当于一个新的F(X),用此函数来拟合上次的残差。即,当我们训练完成之后,我们就可以得到N个树,每个叶子的连接点都有各自对应的分数。比如要预测一个样本的得分,就是根据这个样本的特征,去寻找在这个叶子上对应的分数之和,然后求和就可以得到最终分数。
如下图所示:
3.基本gongs
公式中第一项就是代价函数,比如线性回归中的二次代价函数,又譬如逻辑回归中的对数代价函数。第二项则被称为正则项。(即每棵数的复杂度,为了控制模型复杂度,防止过拟合)。优化参数的模型的训练是每次都保留原模型不变,加入一个新函数到模型中。如下图所示:
4.主要参数
1.eta[默认0.3]
通过为每一颗树增加权重,提高模型的鲁棒性。
典型值为0.01-0.2。
2.min_child_weight[默认1]
决定最小叶子节点样本权重和。
这个参数可以避免过拟合。当它的值较大时,可以避免模型学习到局部的特殊样本。
但是如果这个值过高,则会导致模型拟合不充分。
3.max_depth[默认6]
这个值也是用来避免过拟合的。max_depth越大,模型会学到更具体更局部的样本。
典型值:3-10
4.gamma[默认0]
在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。这个参数的值和损失函数息息相关。
5.max_delta_step[默认0]
这参数限制每棵树权重改变的最大步长。如果这个参数的值为0,那就意味着没有约束。如果它被赋予了某个正值,那么它会让这个算法更加保守。
但是当各类别的样本十分不平衡时,它对分类问题是很有帮助的。
6.subsample[默认1]
这个参数控制对于每棵树,随机采样的比例。
减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。
典型值:0.5-1
7.colsample_bylevel[默认1]
用来控制树的每一级的每一次分裂,对列数的采样的占比。
subsample参数和colsample_bytree参数可以起到相同的作用,一般用不到。
8.alpha[默认1]
权重的L1正则化项。(和Lasso regression类似)。
可以应用在很高维度的情况下,使得算法的速度更快。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。