导读:
XGBoost被认为是各类赛事排名第一的算法
Ensenble是集成算法,分为两类:bagging和boosting
bagging:每个人都是专家(List of experts),容易过拟合;把多个拼接到一起,降低方差,即模型的稳定性
boosting:每个人都是普通人(List of weak learners),容易欠拟合
XGBoost
1.优势:
- 速度和表现可以超过大部分机器学习模型;
- 可以并行化计算
- 有大量可调节参数,例如γ\gammaγ,λ\lambdaλ
2.学习路径:
- 如何构造目标函数(Objective function)
- 如何近似目标函数(Objective function,优化,求最小/最大值)
- 如何引入树到目标函数,改造目标函数
- 如何使用贪心算法构造树
其中 从1到2使用了泰勒展开式
1.构造目标函数
假设有KKK棵树:
yi^=∑k=1Kfk(xi),fk∈F(1) \hat{y_{i}} = \sum_{k=1}^{K}f_{k}(x_{i}), f_{k} \in \mathcal{F} \tag{1} yi^=k=1∑Kfk(xi),fk∈F(1)
目标函数:
Obj=∑i=1nl(yi,yi^)+∑k=1KΩ(fk)(2) Obj = \sum_{i=1}^{n}l(y_{i},\hat{y_{i}})+ \sum_{k=1}^{K}\Omega(f_{k}) \tag{2} Obj=i=1∑nl(yi,yi^)+k=1∑KΩ(fk)(2)
Additive Training
- 第零个树的预测值:yi^(0)=0\hat{y_{i}}^{(0)} = 0yi^(0)=0 ---------base case
- 第一个树的预测值:yi^(1)=f1(xi)=yi^(0)+f1(xi)\hat{y_{i}}^{(1)} = f_{1}(x_{i}) = \hat{y_{i}}^{(0)} + f_{1}(x_{i})yi^(1)=f1(xi)=yi^(0)+f1(xi)
- 第二个树的预测值:yi^(2)=f1(xi)+f2(xi)=yi^(1)+f2(xi)\hat{y_{i}}^{(2)} = f_{1}(x_{i}) + f_{2}(x_{i}) = \hat{y_{i}}^{(1)} + f_{2}(x_{i})yi^(2)=f1(xi)+f2(xi)=yi^(1)+f2(xi)
- 第三个树的预测值:yi^(3)=f1(xi)+f2(xi)+f3(xi)=yi^(2)+f3(xi)\hat{y_{i}}^{(3)} = f_{1}(x_{i}) + f_{2}(x_{i}) + f_{3}(x_{i}) = \hat{y_{i}}^{(2)} + f_{3}(x_{i})yi^(3)=f1(xi)+f2(xi)+f3(xi)=yi^(2)+f3(xi)
…… - 第t个树的预测值:yi^(t)=∑k=1tfk(xi)=yi^(t−1)+ft(xi)\hat{y_{i}}^{(t)} = \sum_{k=1}^{t}f_{k}(x_{i}) = \hat{y_{i}}^{(t-1)} + f_{t}(x_{i})yi^(t)=∑k=1tfk(xi)=yi^(t−1)+ft(xi)
训练第i棵树时,例如第2棵树f2(xi)f_{2}(x_{i})f2(xi),要拟合残差,即真实值和已有的预测之差:yi−y1^(1)y_{i} - \hat{y_{1}}^{(1)}yi−y1^(1)。
下面就是构造目标函数:
第ttt轮的预测值为:yt^(t)=yt^(t−1)+ft(xi)\hat{y_{t}}^{(t)} = \hat{y_{t}}^{(t-1)} + f_{t}(x_i)yt^(t)=yt^(t−1)+ft(x