线性与非线性数据降维方法汇总(Python代码实现)

Posted 府学路18号车神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性与非线性数据降维方法汇总(Python代码实现)相关的知识,希望对你有一定的参考价值。

💖作者简介:大家好,我是车神哥,府学路18号的车神🥇

📝个人主页:应无所住而生其心的博客_府学路18号车神_CSDN博客
🎉点赞评论收藏 == 养成习惯(一键三连)😋

⚡希望大家多多支持🤗~一起加油 😁

其他专栏

前言

11月份了,目前再准备开题, 依旧搞故障诊断,在工业过程中的过程监控现状大多是从数据驱动的角度进行监控和诊断,然鹅,我们遇到的很多工况数据确实非线性的,在实际生产中,大部分都是非线性的数据,但也有一些线性的,由此我们可以从全局和局部出发,来对数据进行挖掘和分析,对此,近期我做了很多关于数据降维的一些工作用于毕业论文,现在在下面讲讲我的一些见解和Python代码的复现。

Python代码在文末哟!~

大纲

线性数据降维

线性降维方法,如主元分析(PCA)"、部分最小二乘化(PLS)及独立元分析(ICA),线性辨别分析(LDA)等。

主元分析(PCA)

之前有过一篇blog介绍过这一部分,-> 看这里

过程监控中的应用可看 -> 这里

还是在介绍一遍吧~


PCA是一种统计方法,广泛应用于工程和科学应用中,与傅里叶分析相比,尤其适用于质量监测。

x ∈ R m \\boldsymbol{x} \\in \\mathfrak{R}^{m} xRm表示 m m m个传感器矢量的样本测量值。

假设每个传感器有 N N N个样本,数据矩阵 X = [ x 1 x 2 ⋯ x N ] T ∈ R N × m \\mathbf{X}=\\left[\\begin{array}{llll} \\boldsymbol{x}_{1} & \\boldsymbol{x}_{2} & \\cdots & \\boldsymbol{x}_{N} \\end{array}\\right]^{T} \\in \\mathfrak{R}^{N \\times m} X=[x1x2xN]TRN×m,由代表样本 x i T x^T_i xiT的每一行组成。

正常数据矩阵 X X X的一个重要要求是,它应具有丰富的正常变化,以代表过程的共同原因变化。矩阵 X X X被缩放为零均值,通常为PCA建模的单位方差。矩阵 X X X通过奇异值分解(SVD)分解为得分矩阵 T T T加载矩阵 P P P
X = T P T + X ~ (1) \\mathbf{X}=\\mathbf{T P}^{T}+\\tilde{\\mathbf{X}}\\tag{1} X=TPT+X~(1)

其中 T = X P T=XP T=XP包含 l l l 个左前导奇异向量和奇异值,P 包含 l l l个右前导奇异向量, X ~ \\tilde{\\mathbf{X}} X~ 是残差矩阵。因此,T 的列是正交的,P 的列是正交的。将样本协方差矩阵表示为
S = 1 N − 1 X T X (2) \\mathbf{S}=\\frac{1}{N-1} \\mathbf{X}^{T} \\mathbf{X}\\tag{2} S=N11XTX(2)

作为SVD的替代方法,可以对 S 进行特征分解,以获得 P 作为 S l l l 个前导特征向量,特征值表示为

Λ = diag ⁡ { λ 1 , λ 2 , … , λ l } (3) \\mathbf{\\Lambda}=\\operatorname{diag}\\left\\{\\lambda_{1}, \\lambda_{2}, \\ldots, \\lambda_{l}\\right\\}\\tag{3} Λ=diag{λ1,λ2,,λl}(3)
i i i 个特征值可与得分矩阵 T 的第 i i i 列相关,如下所示:
λ i = 1 N − 1 t i T t i ≈ var ⁡ { t i } (4) \\lambda_{i}=\\frac{1}{N-1} \\mathbf{t}_{i}^{T} \\mathbf{t}_{i} \\approx \\operatorname{var}\\left\\{\\mathbf{t}_{i}\\right\\}\\tag{4} λi=N11tiTtivar{ti}(4)

这是第 i i i个得分向量 t i ∈ R N \\mathbf{t}_{i} \\in \\mathfrak{R}^{N} tiRN的样本方差。主成分子空间(PCS)是 S p = span ⁡ { P } \\mathcal{S}_{p}=\\operatorname{span}\\{\\mathbf{P}\\} Sp=span{P},剩余子空间(RS) S r S_r Sr S p S_p Sp的正交补。将测量空间划分为PCS和RS,使得RS仅包含微小的奇异值,这些奇异值对应于通常具有较小变化的子空间,或者主要是噪声的子空间。因此,残差类似于根据质量平衡和能量平衡建立的数学模型中的方程误差

样本向量 x ∈ R m \\mathbf{x} \\in \\mathfrak{R}^{m} xRm可以分别投影到PCS和RS上,

x ^ = P t = P P T x ∈ S p (5) \\hat{\\boldsymbol{x}}=\\mathbf{P} \\boldsymbol{t}=\\mathbf{P P}^{T} \\boldsymbol{x} \\in \\mathcal{S}_{p}\\tag{5} x^=Pt=PPTxSp(5)

其中,

t = P T x ∈ R l (6) \\boldsymbol{t}=\\mathbf{P}^{T} \\boldsymbol{x} \\in \\mathfrak{R}^{l}\\tag{6} t=PTxRl(6)

l l l 个潜在变量得分的向量。

残差向量:

x ~ = x − x ^ = ( I − P P T ) x ∈ S r (7) \\tilde{\\boldsymbol{x}}=\\boldsymbol{x}-\\hat{\\boldsymbol{x}}=\\left(\\mathbf{I}-\\mathbf{P P}^{T}\\right) \\boldsymbol{x} \\in \\mathcal{S}_{r}\\tag{7} x~=xx^=(IPPT)xSr(7)

因为 S p S_p Sp S r S_r Sr 是正交的,

x ^ T x ~ = 0 (8) \\hat{\\boldsymbol{x}}^{T} \\tilde{\\boldsymbol{x}}=0\\tag{8} x^Tx~=0(8)

x = x

以上是关于线性与非线性数据降维方法汇总(Python代码实现)的主要内容,如果未能解决你的问题,请参考以下文章

流形学习+数据降维

降维方法-LDA线性判别分析

PCA降维

数据降维方法介绍(六)

降维线性判别分析LDA

无监督学习:非线性降维