您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 池州分类信息网,免费分类信息发布

【python数据挖掘实战】之一:异常检测

2023/8/28 7:50:19发布36次查看
一、关于异常检测
异常检测(outlier detection)在以下场景:
数据预处理
病毒木马检测
工业制造产品检测
网络流量检测
等,有着重要的作用。由于在以上场景中,异常的数据量都是很少的一部分,因此诸如:svm、逻辑回归等分类算法,都不适用,因为:
监督学习算法适用于有大量的正向样本,也有大量的负向样本,有足够的样本让算法去学习其特征,且未来新出现的样本与训练样本分布一致。
以下是异常检测和监督学习相关算法的适用范围:
异常检测:信用卡诈骗、制造业产品异常检测、数据中心机器异常检测、入侵检测 监督学习:垃圾邮件识别、新闻分类
二、异常检测算法
1. 基于统计与数据分布
假设数据集应满足正态分布(normal distribution),即:
分布的平均值为μ和方差为σ 。
当满足上图训练数据的正态分布,如果x的值大于4或者小于-4,都可以认为是异常值。
以下以“600680”股票成交量为例:
import tushare from matplotlib import pyplot as plt df = tushare . get_hist_data ( 600680 ) v = df [ - 90 : ] . volume v . plot ( kde ) plt . show ()
近三个月,成交量大于200000就可以认为发生了异常(天量,嗯,要注意风险了……)
算法示例:
2. 箱线图分析
箱线图,不做过多说明了:
import tushare from matplotlib import pyplot as plt df = tushare . get_hist_data ( 600680 ) v = df [ - 90 : ] . volume v . plot ( kde ) plt . show () 图:
import tusharefrom matplotlib import pyplot as plt df = tushare.get_hist_data(600680)v = df[-90: ].volumev.plot(kde)plt.show()
大体可以知道,该股票在成交量少于20000,或者成交量大于80000,就应该提高警惕啦!
3. 基于距离/密度
典型的算法是:“局部异常因子算法-local outlier factor”,该算法通过引入“k-distance,第k距离”、“k-distance neighborhood,第k距离邻域”、“reach-distance,可达距离”、以及“local reachability density,局部可达密度 ”和“local outlier factor,局部离群因子”,来发现异常点,详情可参考:异常点/离群点检测算法--lof - wangyibo0201的博客 - 博客频道 - csdn.net
4. 基于划分思想
典型的算法是 “孤立森林,isolation forest”,其思想是:
假设我们用一个随机超平面来切割(split)数据空间(data space), 切一次可以生成两个子空间(想象拿刀切蛋糕一分为二)。之后我们再继续用一个随机超平面来切割每个子空间,循环下去,直到每子空间里面只有一个数据点为止。直观上来讲,我们可以发现那些密度很高的簇是可以被切很多次才会停止切割,但是那些密度很低的点很容易很早的就停到一个子空间了。
这个的算法流程即是使用超平面分割子空间,然后建立类似的二叉树的过程:
详情见:
iforest (isolation forest)孤立森林 异常检测 入门篇 isolationforest example
示例代码:
结果如下,其中:红色即为异常点,白色是训练集,绿色是测试数据
注意:孤立森林不适用于特别高维的数据。由于每次切数据空间都是随机选取一个维度,建完树后仍然有大量的维度信息没有被使用,导致算法可靠性降低。高维空间还可能存在大量噪音维度或无关维度(irrelevant attributes),影响树的构建。孤立森林算法具有线性时间复杂度。因为是ensemble的方法,所以可以用在含有海量数据的数据集上面。通常树的数量越多,算法越稳定。由于每棵树都是互相独立生成的,因此可以部署在大规模分布式系统上来加速运算。
池州分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录