随着工业物联网、大数据和人工智能的发展,传统工业正在向数字化和智能化升级,从而创造了大量的时间序列数据。通过分析这些数据,可以提供准确可靠的信息服务和决策依据,促进制造业的转型升级。工业物联网在传统工业向“工业 4.0”的数字化转型中发挥着重要作用。通过将传感器、仪器和其他工业设备连接到互联网,工业物联网促进了数据收集、数据分析和自动化控制,从而提高企业的生产率、效率以及由此产生的经济效益。由于工业物联网基础设施复杂,异常检测与诊断成为确保工业物联网效能的重要工具。
工业物联网可视为一种协同工作,提供以互联网为载体的业务与应用的技术集合,它能够借助于与所述物理对象相连接的电子设备,异构的传感器能够采集过程控制数据。这些设备包括工业自动化系统、医疗仪器及个人计算机。传感器内置于机器中以监控资源管理,还有许多变量,如温度、湿度和压力,以检测事件并触发适当的警报。这些传感器之间的数据存在高度相关性,并且这种相关性具有复杂的拓扑结构和非线性特性。举例来说,当阀门打开时,压力和流量等数据将发生变化,从而导致同一实体内的其他传感器按照内部机制发生进一步的连锁反应。然而,传感器之间的依赖性最初是隐藏的,在大多数现实场景中访问起来代价高昂,这导致了一个直观的问题,即如何在不知道先验信息的情况下对传感器之间如此复杂的关系进行建模。
在真实世界中收集的时间序列数据容易受到异常值的影响,这些异常值是与正常数据显著不同的数据样本。一方面,在工业物联网中,由于传感器设备本身的固有特性,或由于部署节点的恶劣环境,可能会出现异常值,数据质量可能会受到传感器故障、噪声、丢失或被恶意攻击的影响。因此,在任何数据处理(如融合或聚合数据)之前检测这些异常值非常重要,以限制这些错误数据的传播,并保持收集数据的有效性,以执行适当的决策。有效检测此类异常对于工业物联网的安全性和相关业务的成功至关重要。另一方面,许多行业数字化转型的好处之一是利用收集到的时间序列数据及时发现异常情况,甚至在异常情况实际发生之前就发现异常情况。没有进行适当的异常检测可能会导致巨大的经济损失。
另外,随着海量异构嵌入式设备的出现,这也增加了对于这种海量数据进行异常检测的复杂性。在这些情况下,传统的异常监测方法已经不能满足需求,因此需要有效地分析处理大规模多变量数据并对其进行检测。多变量数据的引入增加了异常检测的难度,因为需要考虑多个因素之间的相互作用和影响。此外,多变量数据通常具有高维度,在数据可视化和分析方面也带来了挑战。
因此,需要发展新的数据分析和处理方法,以应对这些挑战并有效地检测异常值。这些新方法可以利用机器学习、数据挖掘和人工智能等技术来处理多变量数据,并提供更好的可视化和分析工具,以便于识别和处理异常值。除了工业物联网,物联网上的异常检测与诊断在多种实际应用中均有广泛的应用。例如,医疗物联网广泛应用于医疗领域。它可以对患者健康状况进行持续监测,以及当指定的条件改变时进行远程协助与警报等。此外,在农业领域,传感器被部署在恶劣环境中,以实时监测和收集温度和湿度等诸多变量。在信息安全领域,异常可能是威胁网络安全的攻击。在智慧城市应用中,异常检测技术可用于许多情况,如监测水质,它提供实时信息和警告,以控制水污染。在金融领域,至关重要的是监控数据库中存储的金融交易的审计日志,然后报告和验证数据中检测到的异常行为。
鉴于此,采用信号处理方法对一维时间序列信号进行变化/事件/异常检测,运行环境为MATLAB 2018。
% function: r = crossrate(x, threshold)
%
% Input:
% x - signal in the time domain; x could be vector or
% matrix with time across columns and indexes across rows
% threshold - threshold level along which the crossing rate is measured
%
% Output:
% cr - threshold-crossing rate of the signal, crossings per sample
function cr = crossrate(x, threshold)
% input validation
validateattributes(x, {'single', 'double'}, ...
{'2d', 'real', 'nonnan', 'nonempty', 'finite'}, ...
'', 'x', 1)
validateattributes(threshold, {'single', 'double'}, ...
{'scalar', 'real', 'nonnan', 'nonempty', 'finite'}, ...
'', 'threshold', 2)
% check if x is vector and if it is
% represent it as a column-vector
if isvector(x), x = x(:); end
% calculate the threshold-crossing rate
cr = sum(abs(diff(x > threshold)))/size(x, 1);
end
完整数据和代码通过知乎学术咨询获得:
https://www.zhihu.com/consult/people/792359672131756032?isMe=1
工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。