异常检测 初识pyod TASK5

摘要:本次练习,采用了三个数据集,generate_data,breast cancer以及癫痫数据集,对于feature bagging ,使用breast cancer数据集,探索提高基分类器的个数,发现测试集的precision @ n 的精度先升高后下降,后来针对基分类器的个数,画出了breast cancer数据集的曲线。该开始没有控制train_test_split的random_state,没有单一变量,所以结果不对,但是后来发现,控制完以后,每次的结果也是不一样的。但是大部分情况下,曲线是比较稳定的,偶尔会有一个小的上冲,随后下降。基分类器的数目,只要影响的是训练集的precision @ n所以,基本上,选择默认的个数就可以了,也可能存在一定概率会有更好的可能性。random_state会影响最后的结果,尤其对于异常数目较少的数据。

1.笔记

1.1 简介

这一节主要讲的是,高维数据的异常检测,包含三个部分:简介维度诅咒,以及两种方法(Feature Bagging和Isolation Forests)的详细论述。
在这里插入图片描述

1.1.1 维度诅咒

这部分讲述了维度诅咒的含义,以及解决方案。

在这里插入图片描述

1.2 Feature Bagging

这部分主要讲解了简介、基检测器以及组合的方法

1.2.1简介

主要简介集成方法的分类,方差与偏差

在这里插入图片描述

1.2.2 基检测器

主要讲述常用算法以及通用算法流程
在这里插入图片描述

1.2.3 组合方法

主要有两种方法,第一种是广度优先的方法,第二种是平均法。第一种理解起来比较有难度,建议看原文,在本文最后附件里面。

  • 主要就是,某种算法算出所有样本的异常得分之后,是进行了排序的
  • 然后依次选出异常得分最大的样本(已经选出的,不再选),直到选出数据集样本数目个样本。也相当于把所有算法得出的异常分数,进行降序排列,依次选择,选过的样本不再选,每一个异常得分都会对应一个异常的索引,索引到原始数据集里面的对应样本。
  • 字符有时候容易搞混,建议带入具体数值进行理解

在这里插入图片描述

1.3 Isolation Forests

1.3.1 简介

在这里插入图片描述

1.3.2 原理

在这里插入图片描述
路径的计算,是在经过多少次分类的次数+调整值,调整值是如果树的高度达到上限了,那么这个调整值代表的就是还没有建立的树所对应的路径。

1.3.3 步骤

在这里插入图片描述

2.练习

2.1 feature bagging

画图均采用前两个维度的数据,因此,有的图,可能有的奇怪

2.1.1 Generate data

在这里插入图片描述
在这里插入图片描述

2.1.2 breast cancer(10 abnormal)

提高基分类器的个数,可以提高测试集的精度,之前大概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影响较小。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.1.3 癫痫数据集

在这里插入图片描述
在这里插入图片描述

2.2 Isolation Forests

2.2.1 generate data

在这里插入图片描述
在这里插入图片描述

2.2.2 breast cancer(10 abnormal)

在这里插入图片描述

在这里插入图片描述

2.2.3癫痫数据集

n_estimators影响很小,从100-1000间隔100
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.3 思考题:feature bagging为什么可以降低方差?

因为变量之间具备相关性,不是完全独立的
为什么说bagging是减少variance,而boosting是减少bias? - 过拟合的回答 - 知乎

2.4 思考题:feature bagging存在哪些缺陷,有什么可以优化的idea?

超高维度的话,有些维度,也可能是一直不被选中的;
从d/2到d-1之间不再是随机的了,采用二分法进行

评估的算法,没有规定。
可以使用不同类型的算法,也可以针对数据集,采取某些算法

3.附件

特征选择原文(英文)
孤立森林原文(英文)
思维导图.xmind
feature bagging jupyter 代码
iForest jupyter 代码



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章