摘要:本次练习,采用了三个数据集,generate_data,breast cancer以及癫痫数据集,对于feature bagging ,使用breast cancer数据集,探索提高基分类器的个数,发现测试集的precision @ n 的精度先升高后下降,后来针对基分类器的个数,画出了breast cancer数据集的曲线。该开始没有控制train_test_split的random_state,没有单一变量,所以结果不对,但是后来发现,控制完以后,每次的结果也是不一样的。但是大部分情况下,曲线是比较稳定的,偶尔会有一个小的上冲,随后下降。基分类器的数目,只要影响的是训练集的precision @ n所以,基本上,选择默认的个数就可以了,也可能存在一定概率会有更好的可能性。random_state会影响最后的结果,尤其对于异常数目较少的数据。
这一节主要讲的是,高维数据的异常检测,包含三个部分:简介维度诅咒,以及两种方法(Feature Bagging和Isolation Forests)的详细论述。
这部分讲述了维度诅咒的含义,以及解决方案。
这部分主要讲解了简介、基检测器以及组合的方法
主要简介集成方法的分类,方差与偏差
主要有两种方法,第一种是广度优先的方法,第二种是平均法。第一种理解起来比较有难度,建议看原文,在本文最后附件里面。
路径的计算,是在经过多少次分类的次数+调整值,调整值是如果树的高度达到上限了,那么这个调整值代表的就是还没有建立的树所对应的路径。
画图均采用前两个维度的数据,因此,有的图,可能有的奇怪
提高基分类器的个数,可以提高测试集的精度,之前大概0.6左右,现在可以0.8,偶尔1.0(极端情况,测试集就一个异常值),但是再增高的话,精度反而降低了
n_estimators 从10到100,间隔10,roc,precision @ n,在训练集和测试集上面的表现。每个estimator,做三次实验,取平均值。发现取值为30的时候是precision @ n最好的时候。这次结果错误的原因是,没有控制train_test_split的random_state,控制好以后,结果大致是稳定的,n_estimator=100做了两次,小数据集,受到random_state的应先还是比较大的,尤其是异常的个数很少的时候,受到n_estimator影响较小。
n_estimators影响很小,从100-1000间隔100
因为变量之间具备相关性,不是完全独立的
为什么说bagging是减少variance,而boosting是减少bias? - 过拟合的回答 - 知乎
超高维度的话,有些维度,也可能是一直不被选中的;
从d/2到d-1之间不再是随机的了,采用二分法进行
评估的算法,没有规定。
可以使用不同类型的算法,也可以针对数据集,采取某些算法
特征选择原文(英文)
孤立森林原文(英文)
思维导图.xmind
feature bagging jupyter 代码
iForest jupyter 代码