机器学习算法推导——xgboost

1、首先是模型

基学习器为树模型、采用boosting集成方法

机器学习算法推导——xgboost

2、接下来设定目标函数=损失函数+正则项。

机器学习算法推导——xgboost

2.1 不限定损失函数的具体形式,只要其二阶可导。这样我们不需要为每一个具体的损失函数单独推导一个模型,而是得到一个通用的模型

2.2 再看正则项

机器学习算法推导——xgboost
用这个来控制树的复杂度

后一项是L2,是树的每个节点的L2正则的平方。前一项是xgboost的主要贡献,gamma相当于预剪枝,T是叶子节点数。

机器学习算法推导——xgboost

γ和λ是需要手动调整的超参,它们值越大那么树的模型就越简单。

3、如何得到树

在第t轮,只考虑本轮的优化目标

机器学习算法推导——xgboost
然后通过泰勒展开,将f拿出来

机器学习算法推导——xgboost

机器学习算法推导——xgboost

并忽略可视为常数的第一项,即得到了

机器学习算法推导——xgboost

这样就实现了工程上的模块化,只有g、h与损失函数有关,而树的结构无关。这样一方面f可以自定义,一方面g和h可以并行计算。

3.1 树怎么转换成权重

对于f的定义做一下细化,把树拆分成结构函数q(输入x输出叶子节点索引)和叶子权重部分w(输入叶子节点索引输出叶子节点分数),结构函数q把输入映射到叶子的索引号上面去,而w给定了每个索引号对应的叶子分数是什么。

机器学习算法推导——xgboost

这样,目标函数可以改写成

机器学习算法推导——xgboost
再令

机器学习算法推导——xgboost

目标函数改为

机器学习算法推导——xgboost

求偏导得出:

机器学习算法推导——xgboost

参考:

https://zhuanlan.zhihu.com/p/91817667

https://www.jianshu.com/p/dcb75ec3145e

https://blog.csdn.net/guoxinian/article/details/79243307