背景
工业控制系统安全至关重要,在事故表现出人能感知的征兆之前对异常进行预测是减小事故损失的有效方法之一。
SBM(Simularity-based modeling,相似性建模)算法能够有效实现正常工况估计这一功能,并在浙能集团的生产中得到了大规模的应用。课程要求使用SBM来实现正常工况的预测和异常检测功能。
- 数据集:训练集包括2461个时间点,时间点间隔为1小时,每个时间点包括10个测点数据,这10个测点经过专家筛选。测试集格式和训练集一样,包含1000个时间点,包含若干个异常点,每处时间长度50单位左右,均为单一参数故障。
- 输出:每一个时间点$X^i$的正常工况估计值$X_{est}^i$,相对误差,以及相关曲线,异常点位置。
- 评分标准:共三个得分项,
- N处异常,识别出1处位置加5分,判定出异常参数加5分。
- 测试数据中正常工况数据预估值与真实值相对误差绝对值的平均数,0.05-0.01得10分,0.01以下,每降低0.001加5分。
- 状态矩阵向量数,100及以上得10分,100以下每减少10条加5分。
SBM基本算法
- 构建D矩阵
$$
\begin{align}
D &=[X(1),X(2),\cdots,X(m)]\\
&=\left[ \begin{matrix}
X_1(1) & X_1(2) & \cdots & X_1(m) \
X_2(1) & X_2(2) & \cdots & X_2(m) \
\cdots & \cdots & \cdots & \cdots \
X_n(1) & X_n(2) & \cdots & X_n(m)
\end{matrix} \right]_{n\times m} \\ \
\end{align}
$$
- 输入真实值
$$ X_{in}=[X_{in}^1,X_{in}^2,\cdots,X_{in}^n]^T $$
- 产生估计值
$$
\begin{align}
\mathbf a &=D^T\cdot X_{in} \\
\mathbf{\omega_0} &=G^{-1}\cdot \mathbf a \\
G &=D^T\otimes D \\
\mathbf{\omega} &=\frac{\mathbf{\omega_0}}{\sum_{i=0}^m{\omega_0^i}}\\
X_{est} &=D\cdot \mathbf{\omega}
\end{align}
$$
Ps: $\otimes$ is a distance function
- 判断是否工作正常
$$
\left{
\begin{aligned}
\ \ \ &\left|\frac{X_{est}-X}{X}\right|>\sigma&,alarm
\ \ \ &others &,no\ alarm
\end{aligned}
\right.
$$