(黄色文本表示没有完全理解,待完善)
XGBOOST,全称eXtreme Gradient Boosting,是一种监督学习模型。给定输入,预测
。
XGBOOST是GBDT(Gradient Boosted Decision Trees)的一种。是一个加性回归模型,通过 boosting 迭代的构造一组弱学习器,相对 LR 的优势如不需要做特征的归一化,自动进行特征选择,模型可解释性较好, 可以适应多种损失函数如 SquareLoss,LogLoss 等等。但作为非线性模型,其相 对线性模型的缺点也是显然的:boosting 是个串行的过程,不能并行化,计算复 杂度较高,同时其不太适合高维稀疏特征。
首先来看一个小例子,希望能通过这个例子知道为什么要用XGBOOST。
憨憨和哈哈是形影不离的好朋友,一天,他们一起去山里摘苹果。按照计划,他们打算去摘山谷底部的那棵大苹果树。虽然哈哈聪明而富有冒险精神,而憨憨有些谨慎和迟钝,但他们中会爬树的只有憨憨。那么他们的路径是什么呢?
如上图所示,憨憨和哈哈所在的位置是a点,他们的目标苹果树位于g点。山里环境复杂,要怎么做才能确定自己到了山谷底部呢?他们有两种方法。
1.由哈哈计算“a”点的斜率,如果斜率为正,则继续朝这个方向前进;如果为负,朝反方向前进。
斜率给出了前进的方向,但没有说明他们需要朝这个方向移动多少。为此,韩梅梅决定走几步台阶,算一下斜率,确保自己不会到达错误位置,最终错过大苹果树。但是这种方法有风险,控制台阶多少的是学习率,这是个需要人为把控的值:如果学习率过大,憨憨和哈哈很可能会在g点两侧来回奔走;如果学习率过小,可能天黑了他们都未必摘得到苹果。
听到可能会走错路,憨憨不乐意了,他不想绕远路,也不愿意错过回家吃饭的时间。看到好友这么为难,哈哈提出了第二种方法。
2.在第一种方法的基础上,每走过特定数量的台阶,都由哈哈去计算每一个台阶的损失函数值,并从中找出局部最小值,以免错过全局最小值。每次哈哈找到局部最小值,她就发个信号,这样憨憨就永远不会走错路了。但这种方法对女孩子不公