一个可扩展的无监督异常点检测框架(异常检测)
suod的Python项目详细描述
Deployment&Documentation&Stats
Build Status&Coverage&maintability&License
SUOD(S可伸缩Un监督Outlier^{str1}$D检测)是一个用于大规模无监督异常检测训练和预测的^{str1}$S加速框架。 值得注意的是,异常检测通常被描述为一个无监督的问题,因为获取地面真相的成本很高。 为了弥补无监督算法的不稳定性,从业者常常建立大量的模型进行进一步的组合和分析,例如取平均数或多数票。 ^然而,{str}在大的数据空间中,特别是在大的数据空间中,这对大的可扩展性提出了挑战。在
因此,SUOD被提议在三个互补的层次上解决这个挑战:随机投影(data level)、伪监督近似(model level)和平衡并行调度(系统级)。 如前所述,关键在于当出现大量异常检测器时,加速训练和预测,同时保持预测能力。 自2019年1月成立以来,SUOD已成功应用于各种学术研究和行业应用,包括PyOD [2]和IQVIA医疗索赔分析。在
SUOD的特点是:
- Unified api、详细文档和示例,以便于使用。在
- 尽可能使用JIT和并行化来优化性能,使用numba和joblib。在
- 与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. |
- 项目
标签: