1.8 - 集成学习
1.集成学习思想
1.1 Bagging
用一堆弱学习器,分别去解决同一个分类或回归问题,最终 投票决定分类结果 或 取均值决定回归结果。保证弱学习器的多样性。训练不同模型用的数据集采用【有放回随机抽样】。
1.2 随机森林
基学习器是 决策树,由原来的在所有特征的所有可能分裂点选取最佳分裂点,改成 每次从K个特征的所有可能分裂点选取最佳分裂点。重复M次,组成M棵决策树的随机森林模型。
训练不同决策树采用的数据集采用 【有放回随机抽样】。
随机森林过拟合问题:随机森林中决策树的数量可以控制过拟合问题。决策树数量过大,会过拟合(因为不断的对数据集进行学习,虽然学习器比较弱,但是数量多了还是可能会学习到多余的无效特征);决策树数量过低,会欠拟合。
2. 提升学习
提升学习是一种迭代算法,后面的弱学习器是在前面的弱学习器的基础上迭代的。
2.1 AdaBoost(主要用于分类)
每轮迭代会在数据集上产生一个新的学习器,学习器会对所有的训练样本进行预测并为每个样本分配一个权重,样本被预测得越正确,则这个样本在下一轮训练中占据得权重越低,反之,样本被预测的越错误,该样本在下一轮训练中被分配得权重越高,重复迭代过程,直到 【错误率足够小或达到最大迭代次数】 停止迭代。
最终得AdaBoost模型函数,每个弱学习器都会分配一个权重系数,累加组成最终得输出。在此基础上,还可以对总模型中得每个弱学习器乘一个 学习率 参数,这样可以控制最终总模型中学习器的个数,从而达到控制 过拟合和欠拟合 的目的。
2.2 GBDT(可用于分类和回归)
首先确定损失函数,然后给定一个常数函数作为GBDT的第一个弱学习器,然后更新 当前总学习器下每个样本的 损失函数负梯度值 作为样本的新目标属性,然后在此基础上训练新的决策树,重复迭代直到 【到达最大迭代次数】 停止迭代。
整个过程相当于梯度下降的过程,每经过一颗决策树,损失函数就会变小一些,总的模型也会预测的更好一些。无论分类还是回归问题,GBDT的基学习器都是 【CART回归树】,决策树的理念就是将整体的信息熵降到最低,而这里只是将信息熵变成了损失函数负梯度值,梯度降到最低损失最小,而CART回归树用的是均方误差MSE来衡量信息增益,而均方误差在这里对应整体样本的预测损失也是合理的。
最终得GBDT模型函数,每个弱学习器都会分配一个权重系数,累加组成最终得输出。在此基础上,还可以对总模型中得每个弱学习器乘一个 学习率 参数,这样可以控制最终总模型中学习器的个数,从而达到控制 过拟合和欠拟合 的目的。
2.2.1 XGBoost
对GBDT的优化,引入了正则项。
2.2.2 LightGBM
工业海量数据场景中,GBDT不能将全部数据都装入内存,而反复的磁盘IO是很耗时的,LightGBM在上述基础上进一步优化,使模型可以用于工业大数据场景。
实现方法:XGBDT在选择分裂点的时候,会暴力枚举所有样本中的分裂点;LightGBM则先将所有数据分桶,然后只在桶间选择最佳的分裂点。
3. Stacking
先使用多个最佳超参数的模型 通过K折验证的方式 获取所有训练数据的预测结果,这多个模型组成了Stacking的基学习器,在对这多个基学习器的预测结果组合训练出一个元学习器,得到最终的预测结果。