使用 PyCaret 进行时间序列异常检测
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
这是一篇逐步的、对初学者友好的教程,介绍如何使用 PyCaret 的无监督异常检测模块检测时间序列数据中的异常。
什么是异常检测?异常检测的类型。
异常检测在业务中的用例。
使用 PyCaret 训练和评估异常检测模型。
标记异常并分析结果。
PyCaret 是一个开源、低代码的机器学习库,也是一个端到端的模型管理工具,用 Python 构建,用于自动化机器学习工作流。它因其易用性、简洁性以及快速高效地构建和部署端到端 ML 原型的能力而广受欢迎。
PyCaret 是一个替代性的低代码库,只需几行代码即可替代数百行代码。这使得实验周期呈指数级加快且更高效。
PyCaret 简单易用。在 PyCaret 中执行的所有操作都按顺序存储在 Pipeline 中,该管线完全自动化,可用于**部署**。无论是填充缺失值、独热编码、转换分类数据、特征工程,甚至是超参数调优,PyCaret 都能自动化完成。
安装 PyCaret 非常简单,只需几分钟。我们强烈建议使用虚拟环境,以避免与其他库潜在的冲突。
异常检测是一种用于识别稀有项目、事件或观察的技术,这些项目、事件或观察通过与数据主体显著不同而引起怀疑。
通常,异常项会转化为某种类型的问题,例如
银行欺诈,
结构缺陷,
医疗问题,
错误等。
异常检测算法大致可分为以下几类
**(a) 监督式:**当数据集具有标识哪些事务是异常、哪些是正常的标签时使用。(这类似于监督式分类问题)。
**(b) 无监督式:**无监督意味着没有标签,模型在完整数据上训练,并假定大多数实例是正常的。
(c) 半监督式:模型仅在正常数据上训练(不包含任何异常)。当训练好的模型用于新的数据点时,它可以预测新的数据点是否正常(基于训练模型中数据的分布)。
由于算法无法直接处理日期或时间戳数据,我们将在训练模型之前从时间戳中提取特征,并丢弃实际的时间戳列。
无论何时在 PyCaret 中初始化 setup 函数,它都会对数据集进行分析并推断所有输入特征的数据类型。在这种情况下,你可以看到 day_name 和 is_weekday 被推断为分类类型,其余被推断为数值类型。你可以按 Enter 键继续。
要查看所有可用算法的列表
注意,附加了两个新列,即 Anomaly,其中离群点值为 1,正常点值为 0;以及 Anomaly_Score,这是一个连续值,也称为决策函数(在内部,算法根据此分数确定异常)。
我们现在可以在图表上绘制异常点进行可视化。
注意,模型在 1 月 1 日(新年夜)附近检测到了一些异常。模型还在 1 月 18 日至 1 月 22 日左右检测到了一些异常,当时北美暴雪** **(一场****快速移动的破坏性暴风雪)穿过东北部,在纽约市周边地区倾泻了 30 厘米的积雪。
如果你搜索图中其他红点附近的日期,你很可能能够找到这些点被模型检测为异常的原因(希望如此)。
我希望你能体会到 PyCaret 的易用性和简洁性。只需几行代码和几分钟的实验,我就训练了一个无监督异常检测模型,并标记了数据集,用于检测时间序列数据中的异常。
使用这个轻量级的 Python 工作流自动化库,你可以实现无限可能。如果你觉得这很有用,请不要忘记在我们的 GitHub 仓库上给我们 ⭐️。
点击下方链接查看文档和工作示例。
要了解更多关于 PyCaret 的信息,请查看其.
PyCaret 的默认安装是 pycaret 的精简版,仅安装硬依赖项,它们是.
当你安装 pycaret 的完整版时,所有可选的依赖项(例如也会被安装。
PyCaret 的** 模块是一个无监督机器学习模块,用于识别稀有项目、事件或**观察**。它提供了超过 15 种算法和用于分析训练模型的结果。
我将使用 NYC 出租车乘客数据集,该数据集包含 2014 年 7 月至 2015 年 1 月期间每半小时的出租车乘客数量。你可以从此处下载数据集.
PyCaret 所有模块的共同点是,setup 函数是在 PyCaret 中开始任何机器学习实验的第一步,也是唯一必须的一步。除了默认执行一些基本处理任务外,PyCaret 还提供了广泛的预处理功能。要了解 PyCaret 中所有预处理功能的更多信息,你可以查看此.
在本教程中,我使用的是 Isolation Forest,但你可以将下方代码中的 ID ‘iforest’ 替换为任何其他模型 ID 来更改算法。如果你想了解更多关于 Isolation Forest 算法的信息,你可以参考此.
下周我将写一篇关于使用 PyCaret 训练自定义模型的教程,使用。你可以在, 、和关注我,以便在新教程发布时获得即时通知。
要了解更多关于 PyCaret 的信息,请关注我们和.
加入我们的 Slack 频道。邀请链接.