除了svm,其他几个都属于集成学习的,所以在这之前,先了解下集成学习。
https://blog.csdn.net/qq_28031525/article/details/70207918
集成学习:ensemble learning:构建并结合多个学习器来完成学习任务。
对于个体学习器的要求:”好而不同“,即个体学习器要有一定的准确性,并且还要有多样性,即学习器之间要有差异性
----“博采众长”
集成学习方法分类
- 个体学习器之间存在很强的依赖关系、必须串行生成序列化方法---Boosting
- 个体学习器之间不存在强依赖关系、可同时生成的并行化方法---Bagging,RF
集成学习对于基学习器最终的结合策略
- 平均法:数值型输出
,
其中是最终结果,是基学习器的个数,是基学习器i的输出结果
- 加权平均:
其中是个体学习器的权重,
- 投票法:预测结果为的票最多的标记,若有相同的票数,则随机选取一个
- 学习法:当训练数据很多是,通过另一个学习器来学习所有基学习器产生的结果,此时,个体学习器为初级学习器,用于结果的学习器叫次级学习器。
Boosting:一族可以将弱学习器提升为强学习器的算法,工作机制类似,如下:
- 先从初始训练集训练出一个基学习器,
- 再根据基学期的表现对训练样本的分布进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注
- 基于调整后的样本训练下一个基学习器
- 重复2,3步骤,直达基学习器的数目达到事先指定的值T,
- 最后将T个基学习器进行加权结合
图片来源于:https://www.cnblogs.com/pinard/p/6133937.html
bagging:随机采样获取个体学习器的训练集
给定包含m个样本的数据集,先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样的时候该样本还可能被选中,经过m次随机采样操作,得到m个样本的采样集,初始训练集中有的样本可能出现多次,有的可能一次也没有出现。
-------放回抽样,多数表决或简单平均
对分类任务:简单投票,若票数一样,则随机选取一个
对回归任务:简单平均
RF:随机森林
随机森林是bagging的扩展变体
RF:以决策树为基学习器构建Bagging集成的基础,在决策树的训练过程中引入随机属性选择(随机特征选择)
RF包括4个部分:随机选择样本(放回抽样);随机特征选择;构建决策树;随机森林投票
GBDT:Gradient Boosting Decision Tree,梯度提升树
(regression decision tree,gradient boosting ,shrinkage缩减)
GBDT里面的树都是回归树,预测实数值。
通过采用加法模型(基函数的线性组合)以及不断减小训练过程中的残差来达到将数据分类或者回归的算法
假设前一轮学习器,损失函数,本轮学习的目的:找一个cart回归树模型的弱学习器,让本轮的损失函数最小:即GBDT的每棵树学习的是之前所有树的结论和残差。
适用范围:可以用于所有回归问题,相对于logistic regression 仅能用于线性回归,也可以用于二分类问题(设定阈值)
GBDT和adaboost比较:
相同点:都重复的选择一个模型进程训练而且每次都基于先前的模型进行调整
不同点:adaboost通过提升错误分类的数据的权重;GBDT通过计算梯度,GBDT可以适用于多中类型的目标函数
GBDT正则化
- 给每个模型*一个系数,降低每个模型对拟合损失函数的贡献
- 按比例随机抽样训练模型,类似bagging,可以减少方差但是回增加偏差
- 控制基学习器CART树的复杂度
GBDT常用的参数
- 树的个数
- 树的深度
- 缩放因子
- 损失函数
- 数据采样比
- 特征采样比
XGBoost:paper
在损失函数中考虑了模型的复杂度在里面
目标函数
其中,t表示第t轮,表示第t轮所生成的树模型,表示正则项
利用泰勒公式
对上述目标函数进行展开
可以看出目标函数依赖于每个数据点在误差函数上的一阶导数和二阶导数。
正则化项
正则化项是模型的复杂度的一个度量,将树拆分成结构部分q和叶子权重部分w
树的复杂度:
改写目标函数:
其中,表示每个叶子结点上的样本集合
令
目标函数改写为:
将目标函数对w进行一阶求导。并令一阶导数为0
损失函数变为: