1、对于树形结构为什么不需要归一化?
答:数值缩放,不影响分裂点位置。因为第一步都是按照特征值进行排序的,排序的顺序不变,那么所属的分支以及分裂点就不会有不同。对于线性模型,比如说LR,我有两个特征,一个是(0,1)的,一个是(0,10000)的,这样运用梯度下降时候,损失等高线是一个椭圆的形状,这样我想迭代到最优点,就需要很多次迭代,但是如果进行了归一化,那么等高线就是圆形的,那么SGD就会往原点迭代,需要的迭代次数较少。
另外,注意树模型是不能进行梯度下降的,因为树模型是阶跃的,阶跃点是不可导的,并且求导没意义,所以树模型(回归树)寻找最优点事通过寻找最优分裂点完成的。
2、为什么xgboost要用泰勒展开,优势在哪里?
最终的目标函数只依赖于每个数据点的在误差函数上的一阶导数和二阶导数。这么写的原因很明显,由于之前的目标函数求最优解的过程中只对平方损失函数时候方便求,对于其他的损失函数变得很复杂,通过二阶泰勒展开式的变换,这样求解其他损失函数变得可行了。
另外:为什么要用二阶泰勒呢?
3、xgboost如何寻找最优特征?是又放回还是无放回的呢?
4、观察增益gain, alpha和gamma越大,增益越小?
5、xgboost有哪些优点呢?
优点:速度快、效果好、能处理大规模数据、支持多种语言、支 持自定义损失函数等等。
1)目标函数通过二阶泰勒展开式做近似
2)定义了树的复杂度,并应用到目标函数中
3)分裂结点处通过结构打分和分割损失动态生长
4)分裂结点的候选集合通过一种分布式Quantile Sketch得到
5)可以处理稀疏、缺失数据
6)可以通过特征的列采样防止过拟合
关于xgboost的好文章:
http://blog.csdn.net/a819825294/article/details/51206410
http://x-algo.cn/index.php/2016/07/24/xgboost-principle/