通过金属学习自动检测异常值(为新数据集选择/推荐OD模型)

metaod的Python项目详细描述


PyPI versionGitHub starsGitHub forksCircle CIhttps://travis-ci.org/yzhao062/MetaOD.svg?branch=masterDevelopment Status截至2020年9月26日,MetaOD正在积极开发中,并处于其alpha阶段。请跟随star和fork获取最新更新! 有关纸张的再现性,请参阅纸张再现性文件夹中的说明。在

给定一个新数据集的无监督异常值检测(OD)任务,如何自动选择一个好的异常值检测方法及其超参数(统称为模型)? 到目前为止,OD的模型选择一直是一门“黑色艺术”;因为任何模型评估都是不可行的,因为缺乏(i)带有标签的数据,以及(ii)通用的目标函数。 在这项工作中,我们开发了第一个原则性的数据驱动的OD模型选择方法,称为MetaOD,基于元学习。 简言之,MetaOD在广泛的OD基准数据集上进行培训,以利用先前的经验,以便it可以为看不见的数据集选择潜在的最佳性能模型。在

使用MetaOD很容易。 您可以传入一个数据集,MetaOD将为它返回最执行异常值检测模型,这既提高了检测质量,又降低了运行多个模型的成本。在

API演示,用于选择新数据集上的异常值检测模型(3行以内)

frommetaod.models.utilityimportprepare_trained_modelfrommetaod.models.predict_metaodimportselect_model# load pretrained MetaOD modelprepare_trained_model()# use MetaOD to recommend models. It returns the top n model for new data X_trainselected_models=select_model(X_train,n_selection=100)

Preprint paper| Reproducibility instruction

引用MetaOD

如果您在科学出版物中使用MetaOD,我们将不胜感激 引用以下论文:

^{pr2}$

或者:

Zhao, Y., Rossi, R., and Akoglu, L., 2020. Automating Outlier Detection via Meta-Learning. arXiv preprint arXiv:2009.10606.

目录

系统介绍

如下图所示,MetaOD包含离线元学习者培训和在线模式选择。 对于一个新的数据集选择离群点检测模型,只需要在线模型选择。具体来说,要完成。在

metaod_flow

安装

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

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

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

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

必需的依赖项

  • Python 3.5、3.6或3.7
  • joblib>;=0.14.1
  • 联席会议
  • 数量=1.18.1
  • scipy>;=0.20
  • scikit_learn==0.22.1
  • 熊猫>;=0.20
  • pyod>;=0.8

{str}我们需要学习{/str}的模型,因为我们需要安装 到0.20。我们建议您在完全新鲜的env中使用MetaOD,以获得正确的依赖性。在

选型快速入门

“examples/model_selection_example.py” 提供一个使用MetaOD在完全无监督的新数据集上选择顶级模型的示例。在

关键步骤如下:

  1. 加载一些合成数据集

    # Generate sample dataX_train,y_train,X_test,y_test= \
        generate_data(n_train=1000,n_test=100,n_features=3,contamination=0.5,random_state=42)
  2. 使用MetaOD选择前100个型号

    frommetaod.models.utilityimportprepare_trained_modelfrommetaod.models.predict_metaodimportselect_model# load pretrained modelsprepare_trained_model()# recommended models. this returns the top model for X_trainselected_models=select_model(X_train,n_selection=100)
  3. 显示所选模型的性能评估。在

    1stmodelAveragePrecision0.972983316133471110thmodelAveragePrecision0.963178702925674250thmodelAveragePrecision0.9228434081007967100thmodelAveragePrecision0.9228434081007967

元特征生成快速入门

获取任意数据集的嵌入是MetaOD的第一步 由我们专门的元特征生成功能来完成。在

它也可用于其他目的,例如,测量 两个数据集。在

# import meta-feature generatorfrommetaod.models.gen_meta_featuresimportgen_meta_featuresmeta_features=gen_meta_features(X)

使用TSNE和 我们的元特性如下所示。左边的环境是合成的 100个相似的数据集,同一颜色代表同一组数据集。 左边的环境是合成的 62个没有已知相似性的数据集。我们的元功能成功捕获 潜在的sim卡左图中的ilarity。在

meta_viz

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

推荐PyPI第三方库


热门话题
java为游戏添加声音。需要帮助   java在获取数据时忽略模型类中的forign键映射   java为什么Microsoft JDBC驱动程序忽略failoverPartner主机名   java可以下载mozswing文件   java等价于ObjectOutputStream,不仅保存其状态,还保存整个对象?   Java Android LiveData根据其他LiveData调用房间查询   java如何使用jackson jsonNode实现这一点并获得所需的输出   在web服务器上作为web应用程序运行java应用程序?   groovy中java类的元类属性   返回空指针的java图形对象   标头中包含用户名和密码的java SOAP客户端请求   具有堆栈实现和递归的Hanoi算法塔(Java)   java当我运行这两个类时,我的老鼠不会移动   使用图像进行java相似图像搜索   Java8并行流机制   使用单例对象作为枚举元素的java Scala枚举,是否有可能对它们进行迭代?   java Webview更改高度大小   不可序列化对象和函数的java Spark Scala编程   java my app在eclipse中运行良好,而不是在jar中