集成学习

作者: 清梦载星河 | 来源:发表于2020-02-04 22:23 被阅读0次

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

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

    相关文章

      网友评论

        本文标题:集成学习

        本文链接:https://www.haomeiwen.com/subject/vsadxhtx.html