5、练习
1.使用PyOD库生成toy example并调用feature bagging
2.使用PyOD库生成toy example并调用Isolation Forests
3.(思考题:feature bagging为什么可以降低方差?)
Bagging对样本重采样,对每一重采样得到的子样本集训练一个模型,最后取平均。由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的variance(事实上,各模型的分布也近似相同,但不独立)。
此时不会降低variance。bagging方法得到的各子模型是有一定相关性的,属于上面两个极端状况的中间态,因此可以一定程度降低variance。为了进一步降低variance,Random forest通过随机选取变量子集做拟合的方式de-correlated了各子模型(树),使得variance进一步降低。
4.(思考题:feature bagging存在哪些缺陷,有什么可以优化的idea?)
在高维或者大量数据的情况下bagging会损失一部分样本或者特征始终无法被采样也无法被模型训练到。
缺陷:
bagging的比例始终建议在0.5到0.99之间,特别是存在过多的相关性特征的情况下,bagging很容易不停的采样相关性很高的特征,比如100个特征中有80个相关性非常高的特征,则不管怎么采样这一组高相关特征总会进入到基模型的训练过程中,所以当引入bagging的时候,无论是异常检测集成还是随机森林或者是xgb、lgb、cab的列采样之前,都必须进行严格的相关性分析,人们常常忽视这一点因为很多时候大量相关性特征存在的情况并不多,但是一旦出现就会导致很差的bagging泛化性能的表现。
优化:
衍生出了rotated bagging,对数据进行采样之后使用主成分分析等方式进行rotate然后训练子模型。
就是每次采样之后得到的特征子集进行主成分分析然后再引入基学习器或者基检测器。