1、GBDT 算法原理简介2017年 7月 14日内容 泰勒公式 最优化方法 梯度下降法( Gradient descend method) 牛顿法( Newtons method) 从参数空间到函数空间 从 Gradient descend 到 Gradient boosting 从 Newtons method 到 Newton Boosting Gradient Boosting Tree 算法原理 Newton Boosting Tree 算法原理:详解 XGBoost 更高效的工具包 LightGBM 参考文献泰勒公式 定义 : 泰勒公式是 一个用函数在某点的信息描述其 附近 取值的 公
2、式 。 局部有效性泰勒公式 定义 : 泰勒公式是 一个用函数在某点的信息描述其 附近 取值的 公式 。 局部有效性 基本形式 : 一阶泰勒展开: 二阶泰勒展开:() = =0 (0! 0)() (0)+(0)(0() (0)+(0)(0)+(0) 022泰勒公式 定义 : 泰勒公式是 一个用函数在某点的信息描述其 附近 取值的 公式 。 局部有效性 基本形式 : 一阶泰勒展开: 二阶泰勒展开: 迭代 形式 : 假设 , 将 在 1 处进行泰勒展开() = =0 (0! 0)() (0)+(0)(0() (0)+(0)(0)+(0) 022 = 1 + = 1 + 1 + 1 + 1 22梯度下
3、降法( Gradient Descend Method)在机器学习任务中,需要最小化损失函数 ,其中 是要求解的模型参数。梯度下降法常用来求解这种无约束最优化问题,它是一种迭代方法:选取初值 ,不断迭代,更新 的值,进行损失函数的极小化。 0 梯度下降法( Gradient Descend Method)在机器学习任务中,需要最小化损失函数 ,其中 是要求解的模型参数。梯度下降法常用来求解这种无约束最优化问题,它是一种迭代方法:选取初值 ,不断迭代,更新 的值,进行损失函数的极小化。 迭代公式: 0 1tt 梯度下降法( Gradient Descend Method)在机器学习任务中,需要最
4、小化损失函数 ,其中 是要求解的模型参数。梯度下降法常用来求解这种无约束最优化问题,它是一种迭代方法:选取初值 ,不断迭代,更新 的值,进行损失函数的极小化。 迭代公式: 将 在 处进行一阶泰勒展开: 0 1tt tL1t 11 1ttttLLLL 梯度下降法( Gradient Descend Method)在机器学习任务中,需要最小化损失函数 ,其中 是要求解的模型参数。梯度下降法常用来求解这种无约束最优化问题,它是一种迭代方法:选取初值 ,不断迭代,更新 的值,进行损失函数的极小化。 迭代公式: 将 在 处进行一阶泰勒展开: 要 使得 , 可取: ,则: 0 1tt tL1t 11 1t
5、tttLLLL 1ttLL 1tL 1 1t t tL 梯度下降法( Gradient Descend Method)在机器学习任务中,需要最小化损失函数 ,其中 是要求解的模型参数。梯度下降法常用来求解这种无约束最优化问题,它是一种迭代方法:选取初值 ,不断迭代,更新 的值,进行损失函数的极小化。 迭代公式: 将 在 处进行一阶泰勒展开: 要 使得 , 可取: ,则:这里 是 步长,可通过 line search确定,但一般直接赋一个 小的数 。 0 1tt tL1t 11 1ttttLLLL 1ttLL 1tL 1 1t t tL 牛顿 法( Newtons Method) 将 在 处 进
6、行 二 阶 泰勒展开: tL1t 21 1 1 2t t t tL L L L 牛顿 法( Newtons Method) 将 在 处 进行 二 阶 泰勒展开:为了简化分析过程,假设参数是标量 ( 即 只有一维),则可将一阶和二阶导数分别记为 g 和 h: tL1t 21 1 1 2t t t tL L L L 21 2ttL L g h 牛顿 法( Newtons Method) 将 在 处 进行 二 阶 泰勒展开:为了简化分析过程,假设参数是标量 ( 即 只有一维),则可将一阶和二阶导数分别记为 g 和 h: 要使得 极小,即让 极小,可令:求得 , 故 tL1t 21 1 1 2t t
7、t tL L L L 21 2ttL L g h tL 22gh 22 0gh gh 11t t t gh 牛顿 法( Newtons Method) 将 在 处 进行 二 阶 泰勒展开:为了简化分析过程,假设参数是标量 ( 即 只有一维),则可将一阶和二阶导数分别记为 g 和 h: 要使得 极小,即让 极小,可令:求得 , 故参数 推广到向量形式,迭代公式:这里 H 是 海森矩阵 tL1t 21 1 1 2t t t tL L L L 21 2ttL L g h tL 22gh 22 0gh gh 11t t t gh 11tt Hg 从参数空间到函数空间 GBDT 在函数空间中利用梯度下降
8、法进行优化 XGBoost 在函数空间中用牛顿法进行优化注:实际上 GBDT泛指所有梯度提升树算法,包括 XGBoost,它也是 GBDT的一种变种 , 这里为了区分它们, GBDT特指“ Greedy Function Approximation: A Gradient Boosting Machine”里提出的算法,它只用了一阶导数信息。从 Gradient Descend 到 Gradient Boosting参数空间1tt t 第 t次迭代后的参数第 t-1次迭代后的参数第 t次迭代的参数增量 t t tg参数更新方向为负梯度方向 0Ttt 最终参数等于每次迭代的增量的累加和,为初值0
9、从 Gradient Descend 到 Gradient Boosting参数空间 函数 空间1tt t 第 t次迭代后的参数第 t-1次迭代后的参数第 t次迭代的参数增量 t t tg参数更新方向为负梯度方向 0Ttt 最终参数等于每次迭代的增量的累加和,为初值0 1tt tf x f x f x第 t次迭代后的函数第 t-1次迭代后的函数第 t次迭代的函数增量 t t tf x g x 0TttF x f x 最终函数等于每次迭代的增量的累加和,为 模型初始值,通常为常数 0fx同样地,拟合负梯度从 Newtons Method 到 Newton Boosting参数空间 函数 空间1t
10、t t 第 t次迭代后的参数第 t-1次迭代后的参数第 t次迭代的参数增量1t t tHg 0Ttt 最终参数等于每次迭代的增量的累加和,为初值0 1tt tf x f x f x第 t次迭代后的函数第 t-1次迭代后的函数第 t次迭代的函数增量 tttgxfxhx 0TttF x f x 最终函数等于每次迭代的增量的累加和,为模型初始值,通常为常数 0fx与梯度下降法唯一不同的就是参数增量小结 Boosting 算法是一种加法模型( additive training) 0TttF x f x 小结 Boosting 算法是一种加法模型( additive training) 基分类器 常采
11、用 回归 树 Friedman 1999 和逻辑回归Friedman 2000。下文以回归树展开介绍。树模型有以下优缺点: 可 解释性强 可处理混合类型 特征 具体伸缩不变性(不用归一化特征) 有特征组合的作用 可自然地处理缺失值 对异常点鲁棒 有特征选择作用 可扩展性强,容易并行 0TttF x f x f 缺乏平滑性(回归预测时输出值只能输出有限的若干种数值) 不 适合处理高维稀疏数据Gradient Boosting Tree 算法原理 Friedman于论文 ” Greedy Function Approximation”中最早提出 GBDTGradient Boosting Tree
12、 算法原理 Friedman于论文 ” Greedy Function Approximation”中最早提出 GBDT 其模型 F 定义为加法模型:其中, x为输入样本, h为分类回归树, w是分类回归树的参数,是每棵树的权重。 00; ; ;TTt t t t tttF x w h x w f x wGradient Boosting Tree 算法原理 Friedman于论文 ” Greedy Function Approximation”中最早提出 GBDT 其模型 F 定义为加法模型:其中, x为输入样本, h为分类回归树, w是分类回归树的参数,是每棵树的权重。 通过最小化损失函数
13、求解最优模型:NP难问题 - 通过贪心法,迭代求局部最优解 00; ; ;TTt t t t tttF x w h x w f x w *0a r g m in , ;NiiF iF L y F x w Gradient Boosting Tree 算法原理输入 :1. 初始化2. for t = 1 to T do2.1 计算响应:2.2 学习第 t棵树:2.3 line search找步长:2.4 令更新模型:3. 输出 , , ,iix y T L0f 1, , 1 , 2 , .iiii tF x F xL y F xy i NFx 2*1a r g m in ;N i t iw iw
14、 y h x w * 11a r g m in , ( ) ;N i t i t iiL y F x h x w ( ; )ttf h x w 1t t tF F fTFGradient Boosting Tree 算法原理输入 :1. 初始化2. for t = 1 to T do2.1 计算响应:2.2 学习第 t棵树:2.3 line search找步长:2.4 令更新模型:3. 输出 , , ,iix y T L0f 1, , 1 , 2 , .iiii tF x F xL y F xy i NFx 2*1a r g m in ;N i t iw iw y h x w * 11a r
15、g m in , ( ) ;N i t i t iiL y F x h x w ( ; )ttf h x w 1t t tF F fTFGradient Boosting Tree 算法原理输入 :1. 初始化2. for t = 1 to T do2.1 计算响应:2.2 学习第 t棵树:2.3 line search找步长:2.4 令更新模型:3. 输出 , , ,iix y T L0f 1, , 1 , 2 , .iiii tF x F xL y F xy i NFx 2*1a r g m in ;N i t iw iw y h x w * 11a r g m in , ( ) ;N i
16、 t i t iiL y F x h x w ( ; )ttf h x w 1t t tF F fTFGradient Boosting Tree 算法原理输入 :1. 初始化2. for t = 1 to T do2.1 计算响应 :2.2 学习第 t棵树:2.3 line search找步长:2.4 令更新模型:3. 输出 , , ,iix y T L0f 1, , 1 , 2 , .iiii tF x F xL y F xy i NFx 2*1a r g m in ;N i t iw iw y h x w * 11a r g m in , ( ) ;N i t i t iiL y F x
17、 h x w ( ; )ttf h x w 1t t tF F fTFGradient Boosting Tree 算法原理输入 :1. 初始化2. for t = 1 to T do2.1 计算响应:2.2 学习第 t棵树:2.3 line search找步长:2.4 令更新模型:3. 输出 , , ,iix y T L0f 1, , 1 , 2 , .iiii tF x F xL y F xy i NFx 2*1a r g m in ;N i t iw iw y h x w * 11a r g m in , ( ) ;N i t i t iiL y F x h x w ( ; )ttf h
18、 x w 1t t tF F fTFGradient Boosting Tree 算法原理输入 :1. 初始化2. for t = 1 to T do2.1 计算响应:2.2 学习第 t棵树:2.3 line search找步长:2.4 令更新模型:3. 输出 , , ,iix y T L0f 1, , 1 , 2 , .iiii tF x F xL y F xy i NFx 2*1a r g m in ;N i t iw iw y h x w * 11a r g m in , ( ) ;N i t i t iiL y F x h x w ( ; )ttf h x w 1t t tF F fTFGradient Boosting Tree 算法原理输入 :1. 初始化2. for t = 1 to T do2.1 计算响应:2.2 学习第 t棵树:2.3 line search找步长:2.4 令更新模型:3. 输出 , , ,iix y T L0f 1, , 1 , 2 , .iiii tF x F xL y F xy i NFx 2*1a r g m in ;N i t iw iw y h x w * 11a r g m in , ( ) ;N i t i t iiL y F x h x w ( ; )ttf h x w 1t t tF F fTF