在上述场景中,异常的数据与整个测试数据样本相比是很少的一部分,常见的分类算法例如:SVM、逻辑回归等都不合适。而孤立森林算法恰好非常适合上述场景,首先测试数据具备一定的连续性,其次异常数据具备显著的离群特征,最后异常数据的产生是小概率事件,因此,孤立森林算法在网络安全、交易欺诈、疾病监测等方面也有着广泛的应用。
孤立森林算法属非监督学习算法,不需要定义参数模型和进行历史训练样本,通过采用多次迭代的方式构建二叉搜索树(Binary Search Tree),然后将这些二叉树组成森林,默认二叉搜索树的高度为 8,每 100 棵树组成一个森林,每次最多生成 256 个森林。算法主要构建思想如下:
常见机器学习聚类算法通常根据空间距离或者密度来寻找异常数据,孤立森林算法独辟蹊径,采用构建二叉树森林再进行中序遍历计算叶子结点平均高度的方式来寻找异常数据,算法实现了对于海量数据的异常检测仅需 O(n) 的线性时间复杂度,能够在短暂的批处理时间间隔内有效检测出离群数据点。
AI项目体验地址 https://loveai.tech
本项目数据由 JMeter 压测工具生成,包括 CPU.csv 和 HEC.csv 两部分,部分数据形态如下:
运行程序:
python Detect.py
初始数据折线图
初始数据散点图
过滤后数据折线图
过滤后数据散点图