集成学习
着重于在训练集上做文章:将训练集划分为各种子集或权重变换后用较弱的基模型拟合,然后综合若干个基模型的预测作为最终整体结果。
两种算法:Bagging method、Boosting method
Bagging method:若干个模型在若干个子集上单独训练,预测时使用所有基模型预测得到结果(投票表决或求平均)
Boosting method:模型训练按顺序进行,每个基模型训练后都进行预测、根据预测结果选择下一次训练数据集,预测时使用所有基模型预测得到结果
偏差和方差:进行模型预测时,每组预测值与真值之间的差值组成错误值集合,使用高斯分布拟合错误值集合,可以得到参数u和σ2,使得 Error~N(u,σ2),其中u可以理解为**偏差**,σ2为方差
偏差对应“拟合不足”的情况,方差对应“过度拟合”的情况。
为什么集成多个弱模型会得到比较好的效果呢?
弱模型通常存在拟合不足的情况,即高偏差、低方差,预测时综合各模型效果可以看成是这些错误高斯分布求平均的过程。根据高斯分布的计算公式有:Error~N((u1+u2+...)/N,(σ12+σ22+...),其中N是弱模型的数量。因为偏差有正有负,因此会起到降低偏差的作用,因此集成学习达到了能自动找到最优错误偏差和方差的效果。
随机森林
是Bagging Method的一个典型代表,是一种使用决策树作为基模型的集成学习方法。上图抽样子训练集的方式通常采用 有放回采样。
一般选用有较大偏差、较小方差的树模型,具体表现在:
1.样本裁剪:通过随机采样,每个弱模型只训练部分样本数据。(剩余数据可以作为各基模型的测试集)
2.特征裁剪:每个基模型的决策树只选用数据特征中的一部分进行训练和预测,随机抽样保证了所有特征都能被部分弱模型学习到。
3.小树:由于特征和样本数量有限每个弱模型决策树都长不高,所以不需要像普通决策树那样在训练结束后为避免过度拟合而执行剪枝。
自适应增强
即AdaBoost,是Boosting Method类集成算法的典型代表,其全称是Adaptive Boosting。
通过调整训练集中每个样本的权重使得每次迭代在不同的训练集上运行。
AdaBoost 的每次迭代中都使用了全部训练样本,但训练集中的每个样本都被赋予了权值,基模型必须支持基于样本权值的训练方法(常见算法如支持向量机、朴素贝叶斯、决策树等都支持基于样本权值进行训练)。
每次训练降低预测正确的样本的权值,提高预测错误的样本的权值。
由于模型是不断进化的,因此在最终决策后生成的基模型往往比先生成基模型的决策权更大,预测时可采用加权投票或平均。
引用
1.从机器学习到深度学习:基于scikit-learn与tensorflow的高效开发实战