XGBOOST—eXtreme Gradient Boosting算法原理

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


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

XGBOOST预测函数可表示为

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

XGBOOST—eXtreme Gradient Boosting算法原理_第1张图片


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

XGBOOST—eXtreme Gradient Boosting算法原理_第2张图片

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

XGBOOST—eXtreme Gradient Boosting算法原理_第3张图片

所以目标函数就可变化为


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

XGBOOST—eXtreme Gradient Boosting算法原理_第4张图片

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

XGBOOST—eXtreme Gradient Boosting算法原理_第5张图片

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

XGBOOST—eXtreme Gradient Boosting算法原理_第6张图片

最后目标函数可变换为:

XGBOOST—eXtreme Gradient Boosting算法原理_第7张图片

对公式进行整理:


得到:

XGBOOST—eXtreme Gradient Boosting算法原理_第8张图片

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


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

XGBOOST—eXtreme Gradient Boosting算法原理_第9张图片

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

XGBOOST—eXtreme Gradient Boosting算法原理_第10张图片

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

例如分裂点a

XGBOOST—eXtreme Gradient Boosting算法原理_第11张图片

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

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

XGBOOST的优缺点:

优点:

1、可分布式处理;

2、精度高;

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

4、可移植性;

5、可有效防止过拟合;

6、噪音的鲁棒性强;

缺点:

1、调节参数复杂

参考

http://dataunion.org/15787.html

你可能感兴趣的:(XGBOOST—eXtreme Gradient Boosting算法原理)