一个用于异常检测的紧凑的Python工具箱。
anomatools的Python项目详细描述
醇
anomatools
是一个小Python包,包含最近的异常检测算法。
异常检测致力于从给定(大型)数据集中检测异常或异常数据点。
该软件包包含两种最先进的(2018年和2020年)半监督和两种非监督异常检测算法。在
安装
使用以下命令直接从PyPi安装包:
pip install anomatools
或者使用setup.py
文件安装包:
或者直接从GitHub自身安装:
pip install git+https://github.com/Vincent-Vercruyssen/anomatools.git@master
内容及用途
半监督异常检测
给定一个具有属性X和标签Y的数据集,该数据集指示数据点是normal还是{em1}$异常,半监督异常检测算法使用所有实例^{str1}$X和一些标签{em1}$Y训练。
半监督异常检测方法通常优于无监督方法,因为它们可以使用标签信息来修正无监督检测过程所依据的假设。
anomatools
包实现了两种最新的半监督异常检测算法:
- SSDO(离群值半监督检测)算法首先计算一个无监督的先验异常分数,然后用已知的标签信息修正该分数[1]。在
- SSkNNO(半监督k近邻异常检测)算法是著名的kNN分类器和kNNO(k-最近邻离群值检测)方法的组合[2]。在
给定一个训练数据集X_train,标签为Y_train,以及一个测试数据集X_test,算法的应用如下:
fromanomatools.modelsimportSSkNNO,SSDO# traindetector=SSDO()detector.fit(X_train,Y_train)# predictlabels=detector.predict(X_test)
同样,也可以计算X_检验中每个点正常或异常的概率:
probabilities=detector.predict_proba(X_test,method='squash')
有时我们对检测培训数据中的异常感兴趣(例如,当我们进行事后分析时):
# traindetector=SSDO()detector.fit(X_train,Y_train)# predictlabels=detector.labels_
无监督异常检测:
当检测数据集中的异常时,无监督异常检测器不使用标签信息(用户反馈)。给定一个具有属性X和标签Y的数据集,无监督检测器仅使用X进行训练。
anomatools
包实现了两种最新的半监督异常检测算法:
- kNNO(k-最近邻离群值检测)算法计算每个数据点的异常分数,作为到数据集[3]中k-最近邻居的距离。在
- iNNE(isolation nearest neighbor ensembles)算法根据每个数据点与其余数据的隔离程度大致计算异常分数[4]。在
给定一个训练数据集X_train,标签为Y_train,以及一个测试数据集X_test,算法的应用如下:
fromanomatools.modelsimportkNNO,iNNE# traindetector=kNNO()detector.fit(X_train,Y_train)# predictlabels=detector.predict(X_test)
包装结构
异常检测算法位于:anomatools/models/
有关如何使用这些算法的更多示例,请参阅笔记本:anomatools/notebooks/
依赖关系
anomatools
包需要安装以下python包:
联系人
请与包的作者联系:vincent.vercruyssen@kuleuven.be
参考文献
[1]Vercruyssen,V.,Meert,W.,Verbruggen,G.,Maes,K.,Bäumer,R.,Davis,J.(2018)半监督异常检测及其在水分析中的应用。IEEE国际数据挖掘会议(ICDM),Sin盖博。p527--536页。在
[2]Vercruyssen,V.,Meert,W.,Davis,J.(2020)$通过局部和无监督实例选择进行异常检测的转移学习。美国人工智能协会人工智能会议,纽约。在
- 项目
标签: