PCA故障检测步骤

PCA故障检测步骤

1. 利用正常数据作为训练集,例如 A = 4 * 5;(此处4 * 5代表行列数,以下相同)

2. 标准化处理这个矩阵,即减去均值的方法,使得每列元素的平均值为0,那么各个元素的平方和就是方差;

3. 求得这个矩阵A的协方差矩阵,即C = (1 / 5) * (AT * A)C =  5 * 5

4. 需要求出协方差矩阵的特征向量以及特征值,记为P1P2P3P4P5 λ1,λ2,λ3,λ4,λ5;

5. 按照特征值大小排列,取前一些的大的特征值,按照例子,应该是5个特征值,(这里有固定的方法决定选取几个,例如贡献率法,读者自己查一下吧)若取3个作为主元,那么取P1P2P3这三个向量组成负荷矩阵P =P1P2P3=  5 * 3;

6. 规定得分矩阵为T = X * P,这里的T就是降维后的结果,由于P是正交矩阵(即P * PT = E),所以有些论文中在最开始写成X = T * (PT )

7. 而我们规定的主元模型就是  P *PT) = 5 * 5;(这里是我们所规定的故障检测用的模型,不是降维结果,请读者分辨清楚)

8. 故障检测方法,这里只记录一下SPE统计(还有一个T²统计):

利用  原数据 X  * 主元模型(即P *PT) = 4* 5* 5*5= 4 * 5= X~

这里 X~ 其实就是正常数据在主元模型上的投影

设定一个e  =  X  -  X~ ,(差不多算是误差吧);

9. 那么SPE = eT *  e,(就是取误差的平方,所以也叫平方预测误差)

因为是在正常数据下确定的这个SPE,所以就一定小于一个Q值(称为控制限,也叫阈值,也可以认为是最大值),这个Q值是通过我们计算的特征值等相关量计算得出的,我们在训练数据的时候,主要目的就是为了得到这个值。

10. 然后在有新的测量数据时,通过以上9条计算出(新测量数据的)SPE值,然后和正常数据下确定的Q值(控制限)对比,如果高于这个值就认为是故障数据(实际测试时要高于好几次以上才算)。


下面给一下PCA降维的步骤:

还是假设有n个样本,每个样本的特征用n维表示,生成矩阵A(n * m);
1. 将A的每一列进行零均值化,即用每一列的数据减去该列的均值得到矩阵X;
2. 计算协方差矩阵C = XT X;
3. 计算协方差矩阵C的特征值与特征向量; 
4. 将特征向量按照对应特征值的大小按列排列生成矩阵P 
5. 假设我们要将m维的向量降维k,只需要取P的前k列构成矩阵P1 

6. 求解降维后的数据S = X * P1

本篇没有讲解PCA的原理,如果想了解原理的找相关文献查一下就能懂了。

我一直没弄懂用代码如何实现上面讲的故障检测,如果有大神刚好路过,必要留下联系方式把酒言欢一下。

转载一下PCA降维的matalab举例:https://blog.csdn.net/qq_22625309/article/details/76396201


阅读更多
文章标签: 故障诊断
下一篇sum函数在matlab中的应用
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭