一个可扩展的无监督异常点检测框架(异常检测)

suod的Python项目详细描述


Deployment&Documentation&Stats

PyPI versionDocumentation StatusGitHub starsGitHub forksDownloadsDownloadsBuild Status&Coverage&maintability&License

Build StatusCircle CIAppveyorCoverage StatusLicenseSUODS可伸缩Un监督Outlier^{str1}$D检测)是一个用于大规模无监督异常检测训练和预测的^{str1}$S加速框架。 值得注意的是,异常检测通常被描述为一个无监督的问题,因为获取地面真相的成本很高。 为了弥补无监督算法的不稳定性,从业者常常建立大量的模型进行进一步的组合和分析,例如取平均数或多数票。 ^然而,{str}在大的数据空间中,特别是在大的数据空间中,这对大的可扩展性提出了挑战。在

因此,SUOD被提议在三个互补的层次上解决这个挑战:随机投影(data level)、伪监督近似(model level)和平衡并行调度(系统级)。 如前所述,关键在于当出现大量异常检测器时,加速训练和预测,同时保持预测能力。 自2019年1月成立以来,SUOD已成功应用于各种学术研究和行业应用,包括PyOD [2]IQVIA医疗索赔分析。在

SUOD Flowchart

SUOD的特点是:

  • Unified api、详细文档和示例,以便于使用。在
  • 尽可能使用JIT和并行化来优化性能,使用numbajoblib。在
  • 与PyOD中的模型完全兼容。在
  • 可定制的模块和灵活的设计:每个模块都可以打开/关闭,或者完全由自定义函数代替。在
API演示

fromsuod.models.baseimportSUOD# initialize a set of base outlier detectors to train and predict onbase_estimators=[LOF(n_neighbors=5,contamination=contamination),LOF(n_neighbors=15,contamination=contamination),LOF(n_neighbors=25,contamination=contamination),HBOS(contamination=contamination),PCA(contamination=contamination),OCSVM(contamination=contamination),KNN(n_neighbors=5,contamination=contamination),KNN(n_neighbors=15,contamination=contamination),KNN(n_neighbors=25,contamination=contamination)]# initialize a SUOD model with all features turned onmodel=SUOD(base_estimators=base_estimators,n_jobs=6,# number of workersrp_flag_global=True,# global flag for random projectionbps_flag=True,# global flag for balanced parallel schedulingapprox_flag_global=False,# global flag for model approximationcontamination=contamination)model.fit(X_train)# fit all models with Xmodel.approximate(X_train)# conduct model approximation if it is enabledpredicted_labels=model.predict(X_test)# predict labelspredicted_scores=model.decision_function(X_test)# predict scorespredicted_probs=model.predict_proba(X_test)# predict outlying probability
可以在arxiv上访问初步版本(accepted at AAAI-20 Security Workshop)。 扩展版本(在KDD 2020 (ADS track)提交)可以访问here。在

如果您在科学出版物中使用SUOD,我们将非常感谢您引用以下论文:

@inproceedings{zhao2020suod,
  author  = {Zhao, Yue and Ding, Xueying and Yang, Jianing and Haoping Bai},
  title   = {{SUOD}: Toward Scalable Unsupervised Outlier Detection},
  journal = {Workshops at the Thirty-Fourth AAAI Conference on Artificial Intelligence},
  year    = {2020}
}
^{pr2}$

目录

安装

建议使用pip进行安装。请确保 安装了最新版本,因为suod经常更新:

pip install suod            # normal install
pip install --upgrade suod  # or update if needed
pip install --pre suod      # or include pre-release version for new features

或者,您可以克隆并运行设置.py文件:

git clone https://github.com/yzhao062/suod.git
cd suod
pip install .

必需的依赖项

  • Python 3.5、3.6或3.7
  • 作业库
  • 数量=1.13
  • pandas(可选,用于构建成本预测模型
  • 皮奥德
  • scipy>;=0.19.1
  • scikit_learn>;=0.19.1

Python 2上的注释: Python2.7的维护将于2020年1月1日停止(参见official announcement)。 为了与Python变更和suod的依赖库保持一致,例如scikit learn, ^{str1}$SUOD只支持python3.5+,我们鼓励您使用 Python3.5或更高版本以获取最新的函数和错误修复。更多信息可以 在Moving to require Python 3找到。在

API备忘单和参考

完整的API引用:(https://suod.readthedocs.io/en/latest/api.html)。在

  • fit(X,y):拟合估计量。y对于无监督方法是可选的。在
  • approximate(X):使用有监督的模型来近似无监督的基检测器。首先应该调用Fit。在
  • predict(X):对特定sampl进行预测一旦估计量被拟合。在
  • predict_proba(X):一旦估计量被拟合,就预测属于每个类的样本的概率。在

示例

所有三个模块都可以分别执行,演示代码位于/examples/module\uexamples/{M1_RP、M2_BPS和M3_PSA}。 例如,您可以导航到/M1_RP/demo_random_投影.py. 演示代码都以“Demo\*.py”开头。在

完整框架的示例可以在/examples文件夹下找到;run“demo_基准.py“为了 一个简化的例子。运行“演示_完整.py“一个完整的例子。在

值得注意的是,使用多个可用的内核可以获得最佳性能。在

更多… 最后更新日期:2020年4月20日。在

随时为未来的更新出演:)

参考文献

[1]Johnson, W.B. and Lindenstrauss, J., 1984. Extensions of Lipschitz mappings into a Hilbert space. Contemporary mathematics, 26(189-206), p.1.
^{tb2}$

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java谷歌地图将地址转换为坐标   java舍入错误给了我无效的答案   JavaSpring3。0 mvc问题(请求的资源不可用)   java在关闭GraphStream时不关闭Swing主应用程序   java使用特定的orderby从包含多个子节点的FireBase数据库检索数据   java是否可以不安全地访问JVM未使用的对象?   java读取单词的第一个字母并选择其字母表编号   java在同一个包中导入类   安卓 java。lang.IndexOutOfBoundsException:索引0无效,大小为0   java JTextPane仅以单行显示插入的组件   java系统应用程序如何在CyanogenMod 11中以编程方式读取整个logcat?   java如何访问保存在中的变量。MatlabBuilder JA构建的jar文件中的mat文件?   Java不必要的图像覆盖   数组javajsonarray。包含(字符串)没有这样的函数?   javacamel:如何在文件组件中使用相同的头   java smack setKeystorePath不工作?   JavaJackcessDatabaseBuilder。开放式失败   对Jetty Jersey应用程序的java请求在1分钟后终止   在客户端断开连接后,java进程是否仍在继续   安全Java签名代码小程序混合代码警告即使在TrustedLibrary之后:true