XGBOOST—eXtreme Gradient Boosting算法原理

XGBOOST算法是由华盛顿大学陈天奇博士以GBDT和RandomForest为基础提出的,并开发了C++版本。该算法由于精度高、可并行化处理和可移植性,被广泛应用于各个领域, 这也是Kaggle竞赛者最常用的方法之一。


假设样本集D = {(xi, yi)...} i = 1、...n

XGBOOST预测函数可表示为

我们使用分部加法,可将此式变换为



其中K代表迭代K轮;方程左侧为预测值;映射fk如下:


目标函数:误差函数+正则化


所以目标函数就可变化为


由前面的公式,我们可知道


我们可以使用泰勒二阶展开:


接下来我们使用L2构建正则化函数:


最后目标函数可变换为:


对公式进行整理:


得到:


这里为了找到wj,我们可以求导,并令导数等于0,可以得到:


这里为了找出最优树结构,定义了结构分数就是上边的目标函数Obj,


利用枚举法来得到最优树结构集合,其结构会很复杂的,所以通常选择贪心法,对已有的叶节点,引入新的分裂点,这里我们要定义一个增益


其中GL为原叶节点左儿子的误差函数一阶导数之和;GL为原叶节点右儿子的误差函数一阶导数之和;

例如分裂点a


但由于又引进了一个新的量复杂度代价,所以增益衡量是否引进行的分裂还有一些问题,我们可以设置一个阀值,小于于阀值不引入新的分裂,大于阀值引入新的分裂。

XGBOOST还采用了随机森林的行随机和列随机,以及还针对缺失值的划分做了详细的讨论,详细了解可以看看陈天奇博士的论文。

XGBOOST的优缺点:

优点:

1、可分布式处理;

2、精度高;

3、可适应特征维度高的情况;

4、可移植性;

5、可有效防止过拟合;

6、噪音的鲁棒性强;

缺点:

1、调节参数复杂

参考

http://dataunion.org/15787.html

猜你喜欢

转载自blog.csdn.net/fengziyihang/article/details/79663050