今天看啥  ›  专栏  ›  焰雨追虹

集成学习

焰雨追虹  · 简书  ·  · 2020-02-04 22:23

集成学习,即通过构建并结合多个模学习器来共同完成学习任务。集成学习的一般结构:先产生一组“个体学习器”,再用某种策略将它们结合起来。通过这种方式,集成学习可以获得比单一学习器显著优越的泛化性能。简单来说,集成学习就相当于用团队力量来解决问题,如何产生并结合团队成员便是集成学习研究的核心。

根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类,即个体学习器存在依赖关系、必须串行生成的路劣化方法,以及个体个体学习器间不存在强依赖关系、可同时生成的并行化方法。前者代表是Boosting,后者代表是Bagging。

一、Bagging与随机森林

基本原理 :同时训练多个学习机,分别对y进行预测,最后所有子学习机以投票的形式(分类)或者均值的形式(回归),返回集成的预测结果。

子学习机的构建策略 :对样本按一定比例有放回的抽样,抽出m个样本子集,然后构建m个子学习机分别在m个样本子集上进行训练。

继承策略 :投票法或均值法。

随机森林

  • 子学习器:决策树模型
  • 子学习器构建方法:按一定比例同时对样本和特征进行有放回的抽样,抽样出m个特征和样本都存在差异的样本子集,再在这m个子集上训练m个决策树模型。
  • 集成方法:投票(分类)或者均值(回归)。
  • sklearn相关模块: from sklearn.ensemble import RandomForestClassifier ,随机森林分类器
    • 相关参数:
      • n_estimators :子学习器的个数
      • max_features :每棵树选择的特征的最大数量,默认为auto
      • bootstrap :构建决策树模型时是否使用有放回的抽样方式,默认为True

二、Boosting

基本原理 :先训练一个子学习器,再计算子学习器的误差或残差,并以此作为下一个子学习器的输入,之后不断迭代重复整个过程,使得模型损失函数不断减小。

集大成者:xgboost

首先说说gboosting(gradient boosting),即梯度提升模型,根据当前模型损失函数的负梯度信息来训练新加入的子学习器,然后将所有训练好的子学习器以累加的形式混合到最终模型中。

xgboosting就是极限梯度提升模型。

  • 基本思想:gboosting
  • 避免过拟合的手段:加入L1和L2正则系数
  • 子学习器:CART决策树、线性回归、线性分类器
  • 集成策略:在gboosting的基础上,融入随机森林对子学习器训练样本和特征进行随机抽样的策略。
  • 优化方法:同时使用损失函数一阶、二阶导数信息,加快优化速度。
  • 工程优化:提高训练效率,支持并行计算。
  • 相关代码:需要用pip安装xgboost,具体文档: https://xgboost.readthedocs.io/en/latest/python/index.html import xgboost as xgb
    • xgb.XGBClassifier 参数简介:
      • max_depth=3, 树最大深度
      • learning_rate=0.1, 训练步长
      • n_estimators=100, 子学习器数量,不需要过多,也不宜太少
      • verbosity=1,
      • silent=None,
      • objective='binary:logistic' , 任务类型,binary:logistic为二元分类,输出概率,回归任务为reg:squarederror,还有binary:hinge也是二元分类,不过输出为分类结果,其它任务类型可见: https://xgboost.readthedocs.io/en/latest/parameter.html#learning-task-parameters
      • booster='gbtree' , 子学习器,有gbtree和gbliner两种,前者是基于树的模型,后者是线性模型
      • n_jobs=1,
      • nthread=None, 最大线程数
      • gamma=0,
      • min_child_weight=1,
      • max_delta_step=0,
      • subsample=1, 控制每棵树,选取训练样本比例
      • colsample_bytree=1, 控制每棵树,训练特征比例
      • colsample_bylevel=1,
      • colsample_bynode=1,
      • reg_alpha=0, L1正则系数
      • reg_lambda=1,
      • scale_pos_weight=1,
      • base_score=0.5,
      • random_state=0,
      • seed=None,
      • missing=None,



原文地址:访问原文地址
快照地址: 访问文章快照