由公式转换结果可知:Ed = 偏差 + 方差 + 数据本身的噪声
最后的噪声一般是数据本身的特征,所以需要对数据进行处理
subset 子集
Bagging算法,又称装袋算法,是一种团体学习算法。最初由Leo Breiman于1996年提出。Bagging算法可与其他分类、回归算法结合,提高其准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。
分别构造多个弱学习器,多个弱学习器相互之间是并行的关系,可以同时训练,最终将多个弱学习器结合。
特点在于随机采样,那么什么是随机采样(自组采样)呢?
随机采样(bootstrap sample)从n个数据点中有放回地重复随机抽取一个样本(即同一个样本可被多次抽取),共抽取n次。创建一个与原数据大小相同得数据集,但有些数据点会缺失(大约1/3),有些会重复。
举例说明:
原数据集:[‘a’, ‘b’, ‘c’, ‘d’]
随机采样1:[‘c’, ‘d’, ‘c’, ‘a’]
随机采样2:[‘d’, ‘d’, ‘a’, ‘b’]
…
bagging对于弱学习器没有限制,这和Adaboost一样。但是最常用的一般也是决策树和神经网络。
Combine learners by averaging the out puts (regression) or majority voting (classification):bagging的集合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。
replace = true 随机采样
predict返回在第一个维度做均值
bagging适合应用到不稳定的学习器当中,bagging主要起到降低方差的效果,在采样过程中的均值一般保持一致。
如图,在决策树中变化明显,但在线性回归中因为本来就比较稳定,所以变化不多
相关参考博文:
https://blog.csdn.net/starter_____/article/details/79328749
https://blog.csdn.net/weixin_39923623/article/details/110586085
https://zhuanlan.zhihu.com/p/87685747
集成学习:通过构建并结合多个机器学习器来完成学习任务,首先通过训练集数据训练得到若干个个体学习器,再通过一定的结合策略,最终形成一个强学习器,达到博采众长的目的。
Boosting算法:首先使用初始权重从训练集中训练出一个弱学习器,根据弱学习器的学习误差率来更新样本的权重,提高之前弱学习器学习率较高的训练样本点的权重,使得这些误差率高的样本在后面的弱学习器中得到更多的重视。如此循环,直到得到指定数量的学习器,再通过结合策略进行整合,得到最终的强学习器。Boosting算法属于集成学习的一种
按顺序学习N个弱模型,多个弱模型组成一个比较强的模型,Bagging是降低方差,Boosting是降低偏差。
先训练一个模型,把做的不好的样本重新拿出来。
在残差上训练,用真实值yi减去预测值,每个Ht是把之前没有拟合好的残差重新去拟合,也用到了学习率的概念,虽然Ht能够完全拟合,但也不要太相信他。
决策树本身是比较强的,所以这里用的层数较少的决策树,在Learner增加的时候,没有过拟合,说明了GBDT的一定效果,第二张图,训练误差小于验证误差即说明过拟合。
和Bagging类似,但是bagging每次是在不同的数据上训练同一个模型,但stacking是在同一数据上训练不同模型。
对第一层的模型要求应该是:效果准确,结构不同。所以我们应当选择的是结构不同的强模型。
使用多层,由图可以看到,在L2的输入中,不仅有L1预测得到的结果concat,而且有原始的训练集数据。
使用同样的数据集多次提取特征,通常会很容易出现过拟合现象,在这里可以采取重复K折的方式。通过划分,对每一块数据,使用其它的数据进行训练,训练出的模型用于当前数据预测值,重复在所有数据块上训练,得到了的便是在所有数据集上的结果,也可以进行多层的训练,最后取平均,这样可以进一步降低方差,但是时间开销显然也很大了。