由于在Dream Challenge的比赛中提取中众多feature后采用的分类器是xgboost,取得了不错效果,记录下对xgboost的理解。
xgboost是GBDT的改进,既可以用于分类也可以用于回归的问题。
boosting的集成学习,下一棵决策树的输入样本与前面的决策树的训练和预测相关。 Random Forest中各个决策树是独立的。
集成学习方法是指将多个学习模型组合,以获得更好的效果,使组合后的模型具有更强的泛化能力,xgboost是以分类回归(CART树)进行组合。
预测模型
xgboost的思路,希望建立
加法模型案例,将模型的预测值与实际值的残差作为下一棵树的分裂参考
![c9a4b5fcade02eb6113166cb4159c3c8.png](https://i-blog.csdnimg.cn/blog_migrate/efa4efbdec50626aa44a4b6805cd7436.png)
加法策略表示为初始化时,对样本
往模型中加入第一棵树
往模型中加入第二棵树
往模型中加入第
每次加入树时,损失函数会发生变化,加入第
损失函数采用均方误差,加入
![0ce8895dfca0ac93dcbe84204850bf99.png](https://i-blog.csdnimg.cn/blog_migrate/8ef0265e576509c5a239b8cde43eef78.png)
对于目标函数中的正则项(复杂度)部分,可以从单一的树考虑,每棵回归树可以写成关于
复杂度可写成
![21a47d32fd6839f9260b4473449d7043.png](https://i-blog.csdnimg.cn/blog_migrate/8b57c1fd1d0ad4f5cf3f3b95a6db7496.png)
最终的目标函数可写为:
![a130a50789f963331fa5dcba1ebdfc51.png](https://i-blog.csdnimg.cn/blog_migrate/1c3406eaa27c7556465da28146e46b17.png)
![7a08b189aa14770da3a480ddd6cb4d6c.png](https://i-blog.csdnimg.cn/blog_migrate/359c777b7ce2722d11fa2e432d1d39e4.png)
在加入 第
![9b30075a4462ed14c6d2eda60e49325c.png](https://i-blog.csdnimg.cn/blog_migrate/ce04bf0e2e345afd6905a826d7e82cd9.png)
![0d43fb764f6915c8a629cd888b37c262.png](https://i-blog.csdnimg.cn/blog_migrate/8033c57b63c9afd92a9e81d601471d17.png)
将
![7090a09f25ea1d8a419975a59c808e02.png](https://i-blog.csdnimg.cn/blog_migrate/a1e4a4a526f92c9f8dded8a75eb525f4.png)
将目标函数全部换成在第
![8558d002b92f214bb7126b14820b8d42.png](https://i-blog.csdnimg.cn/blog_migrate/97375925cb918e3d2879bccf73cecc75.png)
可以看作是每个样本在第第
![39322b2da13c62143e3fdac1568a9373.png](https://i-blog.csdnimg.cn/blog_migrate/7a0f07c6917bef186bf550236430d1a2.png)
![c13b033112faec39b3ffc3f88f0cb64f.png](https://i-blog.csdnimg.cn/blog_migrate/f06356a0245b0ddd3ed7f71811d77441.png)
表示第
![b924119d39cfa4b4f20b834a356b4e87.png](https://i-blog.csdnimg.cn/blog_migrate/7126a168ad3bfef356703caf5db05884.png)
![2cda0464fa05d1e695418783f92ba110.png](https://i-blog.csdnimg.cn/blog_migrate/ca2f2851777230cd7f4f06eb9682d322.png)
![36951d2601f33a15cb36c791997c2ad7.png](https://i-blog.csdnimg.cn/blog_migrate/6e7f5d6e7c4981974f18bdda1dcfdb96.png)
参数为
则有
![024d766b038b67a46f7c70f27daac78c.png](https://i-blog.csdnimg.cn/blog_migrate/1315ba6bf883bec4d4397ef41a741b78.png)
![1e48c7fbfa44f1f82b2485944cc050b8.png](https://i-blog.csdnimg.cn/blog_migrate/c8fde6b703d948004845e626758aed78.png)
目标函数为
![eb53b5650d320a2e678dd0e435cb608c.png](https://i-blog.csdnimg.cn/blog_migrate/5a5ad78440639f42ef8048a6f9d6fd07.png)
![ea1775719c72eef8c99fe1542290bcf0.png](https://i-blog.csdnimg.cn/blog_migrate/0dcb120757b38ad776902850d654206f.jpeg)
![605b93f08a5a1666956f8f0be145817f.png](https://i-blog.csdnimg.cn/blog_migrate/a0cdea0183241b51556156ce106ed7c4.jpeg)
xgboost需要求解
对离散取值可以枚举,对连续值可划分区间,对于确实样本可以假设特征的缺失的样本属于右子树和左子树,并在不缺失的样本上进行迭代,分别计算缺失样本属于右子树和左子树的增益,选择增益最大的方向为缺失数据的默认方向。
除了在目标函数中引入正则项,为了防止过拟合,xgboost引入缩减和列采样,通过每一步的boosting中引入缩减系数,降低每个树和叶子对结果的影响。列采样借鉴随机森林的思想。
模型学习的 关键在于如何寻找最优分割点,第一种方法称为基本精确贪心算法(exact greedy algorithm):枚举所有特征的所有可能划分,寻找最优分割点。该算法要求为连续特征枚举所有可能的切分,这个对计算机要求很高,为了有效做到这一点,XGBoost首先对特征进行排序,然后顺序访问数据,累计loss reduction中的梯度统计量。
![08c2dfb497719ebbac4c4829b07b1f51.png](https://i-blog.csdnimg.cn/blog_migrate/29083d77e49098e4c3e8cd7dbe251153.jpeg)
寻找最优分割点,全局近似和局部近似,通常情况下特征的百分数使得数据均匀分布在数据上。
![fd0e381cc82a7832969ce30a3229bec5.png](https://i-blog.csdnimg.cn/blog_migrate/c7312d7fedc494fc4902f1c9ec11a5d2.jpeg)
文章参考:
机器学习--boosting家族之XGBoost算法 - 理想几岁 - 博客园www.cnblogs.com![13e41c35a6778232b4f9cf48f0ee4976.png](https://i-blog.csdnimg.cn/blog_migrate/15c04a0631157a3609492f00e1e32e24.jpeg)