机器学习算法-集成学习
程序员文章站
2022-07-14 14:52:07
...
概念: 通过构建并结合多个模型来共同完成学习任务
目的: 通过集成, 提高多个子学习器的模型泛化能力
流程:
1. 构建多个子学习器
2. 使用某种集成策略将模型集成
3. 完成学习任务
子学习器筛选原则:
1. 每个子学习器都要有一定的准确性
2. 子学习器之间要保持相对独立性和多样性
学习策略:
Bagging: 并行式集成学习
基本原理:
同时训练多个子学习器, 最后以投票形式or均值形式返回集成预测结果
子学习器构建策略:
按比例有放回抽样
集成策略:
投票法或均值法
代表模型:
随机森林
Boosting: 提升式集成学习
基本原理:
现训练一个子学习器, 再计算误差或残差并作为下一个学习器的输入, 不断重复迭代使损失函数最小
梯度提升算法:
根据当前模型损失函数的负梯度信息来训练新加入的子学习器, 后以累加的形式混合到最终模型
代表模型: XGBOOST
XGBOOST:
基本思想: Gradient Boosting梯度提升
过拟合: L1 L2正则
子学习器: CART/线性回归/线性分类
集成策略: 在传统梯度提升的基础上融入随机森林随机取样策略
优化方法: 使用损失函数一阶二阶导数信息
工程优化: 并行计算
xgboost参数:
* 通用参数:分类or回归,线性or非线性等都需要设置的参数
booster:默认gbtree
gbliner:线性模型
gbtree:基于树的模型
nthread:最大线程数(学习效率参数)
objective:任务类型
回归任务:reg:squarederror(默认回归模型)
二元分类任务:
binary:logistic(输出概率)
binary:hinge(输出分类结果)
其他任务类型详解:https://xgboost.readthedocs.io/en/latest/parameter.html#learning-task-parameters
* 训练参数:根据子学习器来分别设置的参数
以tree booster为例:
n_estimators: 子学习器数量(不是越多越好,需要调参)
learning rate:训练步长(与n_estimators一起调节)
max_depth:树最大深度(控制模型复杂程度)
max_leaf_nodes:树最大节点或叶子数量
subsample:控制每棵树,训练样本抽样比例(融合了随机森林的优势)
colsample_bytree:控制每棵树,训练特征抽样比例
lambda:L2正则系数(控制复杂度,提高泛化能力)
alpha:L1正则系数
其他参数详解:https://xgboost.readthedocs.io/en/latest/python/python_api.html#module-xgboost.sklearn
上一篇: python时钟模型
下一篇: 集成学习—多算法融合