问题
1. 什么是集成学习,以及为什么要使用集成学习
2. 集成学习常见思想都有哪些,以及它们都有什么作用
3. 哪些算法是基于集成学习的思想
1. 集成学习的概念以及为什么要使用集成学习
概念
集成学习 是将若干个同一类的弱学习器组合成一个强学习器
为什么要使用集成学习
a. 弱学习器可能存在错误,合并多个弱学习器后,可以减少整体的错误率
b. 对过大或过小的数据集,可进行有放回的抽样,产生不同的数据子集,并训练不同弱学习器,最后再合并成一个强学习器
c. 数据划分过于复杂,使用线性模型难以描述,可训练多个模型后再进行模型融合
d. 多个异构特征(如:线上线下的数据),难以融合,可对每个数据集构建一个模型,最后再将多个模型融合
2. 集成学习常见思想
a. Bagging 思想

在原数据集中,通过有放回的随机抽样,选择出S个子数据集,并对这些子数据集中的数据进行去重操作,再分别训练S个同一类的弱学习器。如果是分类问题,最终结果是各学习器结果中最多的类别,如果是回归问题,最终结果是各学习器结果的均值。
Bagging思想中的弱学习器可以是:Linear、Ridge、Lasso、Logistic、Softmax、决策树、SVM、KNN等
Bagging思想的主要目的是 缓解过拟合
oob 袋外数据: 由于是有放回的随机抽样,就会使得部分数据未能参与到模型训练中,所以可使用这部份数据对模型进行评估,这部分数据大约占比在36%
b. Boosting 思想

Boosting 是一种迭代的集成学习,构建过程是一种串行结构,每一个弱学习器是基于上一个弱学习器预测效果的基础上,对数据做一定的变化后进行构建的,最后将各个弱学习器预测效果融合之后作为最后的效果。
Boosting 思想的主要目的是 缓解欠拟合
3. 基于集成学习思想的算法
基于Bagging思想
随机森林算法流程

a. 从原始数据集中,用有放回采样,随机选出N个去重后的子数据集
b. 从子数据集中,随机选择K个属性来训练决策树
c. 重复 a 和 b 步骤,建立M棵决策树
d. 从M棵决策树的预测结果中,通过多数投票决定数据属于哪一类
随机森林算法优缺点
优点
1. 训练速度快,这是因为各个子模型是独立的,训练时可以并行
2. 训练性能高,这是因为在高维度的情况下,随机选择特征属性
3. 泛化能力强,由于在抽取样本时,是有放回的采样,训练出来的模型方差小
4. 对于部分缺失数据不敏感
5. 训练完后,可以给出特征重要性权重
缺点
1. 在某些噪声数据比较大的数据中,容易陷入过拟合
2. 在取值较多的划分特征属性中,可能会影响模型效果
基于Boosting思想
AdaBoost工作机制
首先基于等权重的训练样本数据训练一个弱学习器,其次根据该学习器的预测效果,增大预测错误样本数据的权重,减小预测正确样本数据的权重,以此构成新的训练样本数据,并训练下一个弱学习器,以此反复迭代,直到满足跳出迭代的条件,最后将所有弱学习器加权合并为强学习器。(各弱学习器权重跟学习器预测效果有关,效果好,权重大,反之权重小)

AdaBoost算法流程
1. 采用均值初始化训练样本权重
2. 使用带权重的样本训练模型,得到子模型
3. 计算训练样本误差率
4. 计算的权重
5. 更新训练样本权重, 分母用来归一化
6. 构建子模型
7. 最终模型
AdaBoost 算法优缺点
优点
构建灵活,预测精度较高,不易过拟合
缺点
对噪声样本数据比较敏感,因为噪声样本数据可能获得较高的权重
由于不是并行模型,在处理大量数据时没有优势
GBDT算法工作机制
将每一轮产生的残差作为下一轮回归树的输入,让下一轮尽可能的去拟合这个输入的残差,使得下一轮输出的残差不断变小,并将每一轮的残差和作为最后的预测值
注意一点的是,GBDT构建的树都是CART树

GBDT 损失函数
GBDT算法流程
a. 初始化预测值
b. 计算残差
c. 拟合残差 得到子模型
d. 更新
e. 循环T次后,得到模型预测值
GBDT 优缺点
优点
a. 可灵活处理离散值和连续值的特征
b. 在较少调参的情况下,能够有较好的预测结果
c. 使用一些健壮的损失函数,如Huber损失函数,对异常值有较好的鲁棒性
缺点
a. 难以并行处理数据,这是因为弱学习器之间有依赖
b. 数据维度增大时,会加大算法的运算复杂度
XGBoost算法 (为了优化GBDT中数据维度增大时,导致GBDT算法运算更为复杂),个人理解XGBoost是加了正则项后的GBDT,降低过拟合的可能性
XGBoost算法的损失函数
其中
XGBoost算法的优点
1.损失函数是用泰勒展开式二项逼近,而不是像GBDT里就是一阶导数
2.对树的结构进行了正则化约束,防止模型过度复杂,降低了过拟合的可能性
3.借鉴随机森林的做法,支持列抽样,不仅可以降低过拟合,还可以减少计算量
4.支持对缺失值的自动处理。对于特征的值有缺失的样本,可以自动学习分裂方向
5.支持并行,但是在树的构建过程中,还是串行构建的
6.弱学习器支持CART、线性回归、逻辑回归
7.支持自定义损失函数(要求损失函数二阶可导)
参考资料
网友评论