欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

机器学习算法-集成学习

程序员文章站 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 算法