异常点检测算法工具库(pyod)介绍+代码

异常点检测算法工具库(pyod)

*
一、PyOD介绍
二、PyOD主要亮点
三、工具库相关重要信息汇总:
四、作者介绍:
五、API介绍与实例(API References & Examples)
六、代码及效果图

+ 6.1 代码
+ 6.2 效果图

项目地址
https://github.com/yzhao062/Pyod#ramaswamy2000efficient
参考资料
知乎-用PyOD工具库进行「异常检测」
使用PyOD库在Python中进行离群值检测
PyOD在线文档
CSDN-离群点异常检测及可视化分析工具pyod测试

☆☆☆☆☆ 作者写的异常检测方向的资料,强烈推荐阅读☆☆☆☆☆
👍🏻【强烈推荐阅读】异常检测算法应用与实践_CMU赵越

一、PyOD介绍

异常检测(又称outlier detection、anomaly detection,离群值检测)是一种重要的数据挖掘方法,可以找到与”主要数据分布”不同的异常值(deviant from the general data distribution),比如从信用卡交易中找出诈骗案例,从正常的网络数据流中找出入侵,有非常广泛的商业应用价值。同时它可以被用于机器学习任务中的预处理(preprocessing),防止因为少量异常点存在而导致的训练或预测失败。

二、PyOD主要亮点

● 包括近20种常见的异常检测算法,比如经典的LOF/LOCI/ABOD以及最新的深度学习如对抗生成模型(GAN)和集成异常检测(outlier ensemble)
● 支持不同版本的Python:包括2.7和3.5+;支持多种操作系统:windows,macOS和Linux
● 简单易用且一致的API,只需要几行代码就可以完成异常检测,方便评估大量算法
● 使用JIT和并行化(parallelization)进行优化,加速算法运行及扩展性(scalability),可以处理大量数据

三、工具库相关重要信息汇总:

● Github地址: pyod
● PyPI下载地址: pyod
● 文档与API介绍(英文): Welcome to PyOD documentation!
● Jupyter Notebook示例(notebooks文件夹): Binder (beta)
● JMLR论文: PyOD: A Python Toolbox for Scalable Outlier Detection

四、作者介绍:

异常点检测算法工具库(pyod)介绍+代码

微调
数据挖掘 | 机器学习系统 | 前咨询师 | 在读博士
职业经历:
斯坦福大学 (Stanford University) · Visiting Student Researcher
艾昆纬 (IQVIA) · machine learning research intern
普华永道 · 高级数据科学家
教育经历:
卡内基梅隆大学 (Carnegie Mellon University) · 信息系统
多伦多大学 (University of Toronto) · 计算机科学
辛辛那提大学 · 计算机工程(CE)
山西省实验中学
个人简介

  1. 机器学习系统架构师,参与设计了10个工具库/系统,GitHub Star>10000,下载量>300,0000
  2. 生物制药 x 机器学习: https://github.com/mims-harvard/TDC
  3. 大规模异常检测模型 SUOD:https://github.com/yzhao062/suod
  4. PyOD异常检测工具库:https://github.com/yzhao062/pyod
  5. 个人主页:https://www.andrew.cmu.edu/user/yuezhao2
  6. GayHub: https://github.com/yzhao062
  7. Google Scholar: https://scholar.google.com/cita

; 五、API介绍与实例(API References & Examples)

Examples可下载github项目中查看和运行。

异常点检测算法工具库(pyod)介绍+代码
特别需要注意的是,异常检测算法基本都是无监督学习,所以只需要X(输入数据),而不需要y(标签)。PyOD的使用方法和Sklearn中聚类分析很像,它的检测器(detector)均有统一的API。所有的PyOD检测器clf均有统一的API以便使用,完整的API使用参考可以查阅(API CheatSheet – pyod 0.6.8 documentation):
  • fit(X): 用数据X来”训练/拟合”检测器clf。即在初始化检测器clf后,用X来”训练”它。
  • fit_predict_score(X, y): 用数据X来训练检测器clf,并预测X的预测值,并在真实标签y上进行评估。此处的y只是用于评估,而非训练
  • decision_function(X): 在检测器clf被fit后,可以通过该函数来预测未知数据的异常程度,返回值为原始分数,并非0和1。返回分数越高,则该数据点的异常程度越高
  • predict(X): 在检测器clf被fit后,可以通过该函数来预测未知数据的异常标签,返回值为二分类标签(0为正常点,1为异常点)
  • predict_proba(X): 在检测器clf被fit后,预测未知数据的异常概率,返回该点是异常点概率
    当检测器clf被初始化且fit(X)函数被执行后,clf就会生成两个重要的属性:
  • decision_scores: 数据X上的异常打分,分数越高,则该数据点的异常程度越高
  • labels_: 数据X上的异常标签,返回值为二分类标签(0为正常点,1为异常点)
    不难看出,当我们初始化一个检测器clf后,可以直接用数据X来”训练”clf,之后我们便可以得到X的异常分值(clf.decision_scores)以及异常标签(clf.labels_)。当clf被训练后(当fit函数被执行后),我们可以使用decision_function()和predict()函数来对未知数据进行训练。
    在有了背景知识后,我们可以使用PyOD来实现一个简单的异常检测实例:
from pyod.models.knn import KNN

clf_name = 'kNN'
clf = KNN()
clf.fit(X_train)

y_train_pred = clf.labels_
y_train_scores = clf.decision_scores_

y_test_pred = clf.predict(X_test)
y_test_scores = clf.decision_function(X_test)

不难看出, PyOD的API和scikit-learn非常相似,只需要几行就可以得到数据的异常值。当检测器得到输出后,我们可以用以下代码评估其表现,或者 直接可视化分类结果(图2)。


print("\nOn Test Data:")
evaluate_print(clf_name, y_test, y_test_scores)

visualize(clf_name, X_train, y_train, X_test, y_test, y_train_pred,
    y_test_pred, show_figure=True, save_figure=False)

异常点检测算法工具库(pyod)介绍+代码

六、代码及效果图

6.1 代码

`python

“””
@File : outlierDetection.py
@Modify Time @Author @Version @Description

Original: https://blog.csdn.net/SeafyLiang/article/details/121780425
Author: SeafyLiang
Title: 异常点检测算法工具库(pyod)介绍+代码

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/720697/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球