需求和数据准备

oracle MSET 算法可以检测故障的早期症状,例如温度异常和振动配置文件中的更改。

要有效检测早期症状,数据概要必须符合特定标准。稍后将详细介绍这些标准,但简要地说,传感器读数必须是连续的。时间戳并不重要,但是传感器读数必须按严格的时间顺序排列,并且必须是数字。此外,培训数据应包含传感器读数,这些传感器读数没有异常,并且符合正常操作参数。

要求意味着在将数据输入异常检测模型之前,可能需要处理传感器中的原始数据。

服务要求

要获得有效的服务结果,您必须准备适当的培训和测试数据。

培训与测试数据只能包含时间戳和其他数字属性。数据通常来自传感器和信号读数。当前版本不支持分类字段。

在较高级别,该服务对培训数据有三项主要的数据质量要求:

  • 培训数据不应异常,也不应有异常值。它应仅包含对正常业务条件的意见。
  • 培训数据应涵盖所有属性上包含完整值范围的所有正常业务方案。
  • 数据中的属性应该相关或者属于同一系统或资产。如果属性来自不同的系统,我们建议培训单独的模型。

检测数据应具有与培训数据相同的属性。此外,它应该来自与培训数据相同的系统或资产。检测数据可能具有异常数据点。

Data Quality(数据质量)

模型培训和测试数据必须表示按时间顺序记录的多个属性(如信号和传感器)中的值。

要创建高质量的模型,请确保培训集中的数据符合以下要求列表。

时间戳
时间戳列是可选的。但是,如果存在,它必须是表中的第一列。
  • 时间戳列必须具有标签 "timestamp",所有小写均无空格。
  • 时间戳必须按升序排序。
  • 不能有重复的时间戳。
  • 时间戳可以具有可变频率。例如,在一小时内有 50 次观察,在下一个小时内有 200 次观察。
  • 如果没有时间戳列,则假定数据按时间顺序排序。
属性
每行数据都是给定时间戳中的一个观察值。
  • 属性值必须是数字。对于布尔值,请使用 1 表示 True,使用 0 表示 False。
  • JSON 文件中的 null 表示缺失值, CSV 文件中的字段为空。
  • 每行必须至少有一个不缺少的属性。也就是说,不能只有时间戳的行。
  • 数据应至少具有三个高度相关的属性。
  • 每个属性名称都必须唯一。
  • 属性数不应超过 300。
培训
要确定培训集中应该包含的行数,请将属性数乘以 8。在培训集中至少要有 40 行。
例如,如果您有 100 个传感器,则行数是 8000。如果只有 4 个传感器,则行数是 40。
Detection
使用批处理时,批处理中的最大数据点数为 30,000。数据点数是信号数乘以行数。
例如,如果有 50 个传感器,则单个批处理中最多允许 30,000/50 = 600 行。
其他注意事项
如果将来某个点添加一个或多个属性,则必须使用培训集中的新属性对模型进行重新培训。
在培训期间,Anomaly Detection Service 会自动删除确定为平面信号、单点信号、低相关信号或重复信号的属性。删除的属性可以存在于检测数据中,但将被忽略。

数据方案

异常检测服务接受两种数据格式:CSV 和 JSON。

对于 CSV 文件,每列都表示传感器数据。每一行表示与每个传感器在特定时间对应的值。

时间戳值必须采用 ISO 8601 格式。使用尽可能精确的时间避免培训数据重复。

CSV 格式的数据应以逗号分隔的行,第一行作为标题,其他行作为数据。第一列是时间戳列。下面是 CSV 格式的数据示例:

timestamp,sensor1,sensor2,sensor3,sensor4,sensor5
2020-07-13T14:03:46Z,,0.6459,-0.0016,-0.6792,0
2020-07-13T14:04:46Z,0.1756,-0.5364,-0.1524,-0.6792,1
2020-07-13T14:05:46Z,0.4132,-0.029,,0.679,0

注意:

CSV 文件不能包含任何空白行,包括最后一行。

以下是相同的数据,但 JSON 格式不同:

{
    "requestType": "INLINE",
    "signalNames": ["sensor1", "sensor2", "sensor3", "sensor4", "sensor5"],
    "data": [{
            "timestamp": "2020-07-13T14:03:46Z",
            "values": [null, 0.6459, -0.0016, -0.6792, 0]
        },
        {
            "timestamp": "2020-07-13T14:04:46Z",
            "values": [0.1756, -0.5364, -0.1524, -0.6792, 1]
        },
        {
            "timestamp": "2020-07-13T14:05:46Z",
            "values": [0.4132, -0.029, null, 0.679, 0]
        }
    ]
}