正则化
正则化衡量函数的光滑程度,正则性越高,表明函数约光滑,也即函数n介可导。 正则化可以有效防止模型的过拟合,正则化可以自动削弱不重要的特征变量,保留重要的特征变量,达到减少特征数量的效果。 常见的正则化有L1正则化和L2正则化。 其中,L1正则化是变量的绝对值之和,在二维空间中其为一各个定点在坐标轴上的正方形,与目标函数的等高线第一次相交在坐标轴上,因此,经过L1正则化后,在角的位置会产生稀疏性,不重要的特征直接被剔除。 L2正则化是变量平方和,在二维空间中为一圆,与目标函数等高线可能相交在任意位置,因此不太可能产生稀疏性,不重要的特征经过L2正则化后会趋向于0,而不会等于0。
集成树
集成模型大致分为两种框架,基于并行的bagging和基于串行的boosting。 其中,bagging的代表是随机森林,从样本集中采样,分别构建多颗树,共同进行决策,对于分类算法,采用投票发,对于回归算法采用均值预测,随机性体现在两点,样本的随机和特征属性的随机。输出特征重要性的原理是依靠每个特征在每颗树上特征分裂重要性的均值。随机森林着重降低方差,因而不太容易过拟合,单看每颗树是过拟合的,但是多颗树一起过拟合程度互相抵消掉了。
boosting为提升法,其代表是Adaboost和基于GBDT的梯度提升框架。 Adaboost训练总是关注前一次分裂错误的样本,为其赋予更大的权重,最终加和。 GBDT为梯度提升机,其关注的点是样本残差而非样本权重,用损失函数的负梯度在该模型处拟合残差来学习一个弱分类器。 XGBoost为梯度提升树的具体实现框架,其对FBDT的改进有以下7点:
- GBDT的基学习器为CART,XGBoost还可以使用线性学习器,相当于带L1和L2正则项的逻辑回归或线性回归。
- GBDT只有一介导数,XGBoost进行了二阶泰勒展开,不仅有一介导数,而且有二阶导数,使得梯度下降的又快又准,允许自主定义损失函数。
- 相比于GBDT,XGBoost在目标函数中引入了模型复杂度,防止了模型的过拟合。
- 梯度衰减,每次通过学习降低梯度下降的步伐,减小了过拟合的可能性。
- 列采样,学习了随机森林的采样方法,不仅降低过拟合的可能,增强其泛化性能,而且降低运算量。
- 包容缺失值,缺失值可按其设定好的方向分裂。更高效。
- 预排序增强了其并行化的效率,可并行训练。
boosting算法注重降低偏差。