Duncan's Blog

记录几个经典模型

参考网络博客和个人理解记录如下:


1.GBDT(Gradient Boosting Decision Tree)

1.优势

  • 效果还不错
  • 既可用于分类也可用于回归
  • 可以筛选特征

2.关键点

2.1 gbdt 的算法的流程?
gbdt通过多轮迭代,每轮迭代生成一个弱分类器,每个分类器在上一轮分类器的残差基础上进行训练.(弱分类器一般会选择CART TREE - 分类回归树)

最终的总分类器是将每轮训练得到的弱分类器加权求和得到. - 加法模型

模型最终可描述为:$F_M(x)=\sum_{m=1}^{M}T(x;\theta_{m})$
模型一共训练M轮,每轮产生一个弱分类器$T(x;\theta_m)$,弱分类器的损失函数

gbdt在每轮迭代的时候,都去拟合损失函数在当前模型下的负梯度.
2.2 gbdt 如何选择特征 ?
原始的gbdt做法非常暴力,首先遍历每个特征,然后对每个特征遍历它所有可能的切分点,找到最优特征m的最优切分点j.

2.3 gbdt 如何构建特征 ?
工业界做法是和逻辑回归结合,得到组合特征.

2.4 gbdt 如何用于分类?
gbdt多分类

对于多分类任务,GBDT的做法采用一对多的策略.一共有K个类别,训练M轮,每一轮都训练K个树,训练完成后一共有M*K个树.损失函数log loss

2.5 gbdt 通过什么方式减少误差 ?
拟合残差,梯度下降

2.6 gbdt的效果相比于传统的LR,SVM效果为什么好一些 ?

  • 1.结合了多个弱分类器,是集成学习,所以泛化能力和准确率更高
  • 2.SVM对于训练集不同的维度,数据量的大小,核函数的选择直接决定了模型的训练效果.gbdt相较于SVM和LR更不容易过拟合,因为它的超参学习能力较好,gbdt的泛化能力更多取决于数据集.

2.7 gbdt的参数有哪些,如何调参 ?
1.框架参数

  • 步长 - 选择一个较大的步长
  • 迭代次数或者说学习器的个数 - 100左右
  • 学习率$\eta$
  • 损失函数 - 分类问题和回归问题不一样(分类问题有对数似然和指数似然函数;回归模型有均方误差,绝对损失,Huber损失和分位数损失)

2.弱学习器参数

  • 树的深度 - 10-100
  • 最大特征数 - 划分时考虑的最大特征数
  • 最小叶子结点样本数
  • 最大叶子结点个数 - 限制最大叶子结点数,防止过拟合

2.8 gbdt的优缺点 ?
1.优点

  • 泛化能力强,不容易过拟合
  • 不需要复杂的特征工程

2.缺点

  • 难以实行并行化
  • 模型复杂度较高,深入分析和调优有一定难度

2.XgBoost(Extreme Gradient Boosting)

1.xgboost和GBDT区别

  • 传统GBDT以CART作为基分类器,xgboost还支持线性分类器.
  • 传统GBDT在优化时只用到一阶导数信息,而xgboost进行了二阶泰勒展开
  • xgboost在代价函数中加入了正则项
  • 对于缺失值的处理,xgboost可以自动学习出它的分裂方向
  • xgboost支持并行,并行过程是在确定最佳分割点时,每一轮的训练还是前向分步法,这个过程不能并行.选择最佳分割点时使用近似直方图算法

3.SVM(Support Vector Machine)

参考该篇博客: https://blog.csdn.net/szlcw1/article/details/52259668 (谢谢作者整理)

4.CNN(Convolutional Neural Network)

分享