核主元分析KPCA的降维特征提取以及故障检测应用-data.rar

上传者: 39841882 | 上传时间: 2022-03-22 10:16:23 | 文件大小: 184KB | 文件类型: -
核主元分析KPCA的降维特征提取以及故障检测应用-data.rar
本帖最后由 iqiukp 于 2018-11-9 15:02 编辑      核主元分析(Kernel principal component analysis ,KPCA)在降维、特征提取以及故障检测中的应用。主要功能有:(1)训练数据和测试数据的非线性主元提取(降维、特征提取)
(2)SPE和T2统计量及其控制限的计算
(3)故障检测

参考文献:
Lee J M, Yoo C K, Choi S W, et al. Nonlinear process monitoring using kernel principal component analysis[J]. Chemical engineering science, 2004, 59: 223-234.

1. KPCA的建模过程(故障检测):
(1)获取训练数据(工业过程数据需要进行标准化处理)
(2)计算核矩阵
(3)核矩阵中心化
(4)特征值分解
(5)特征向量的标准化处理
(6)主元个数的选取
(7)计算非线性主成分(即降维结果或者特征提取结果)
(8)SPE和T2统计量的控制限计算
function model = kpca_train
% DESCRIPTION
% Kernel principal component analysis
%
%       mappedX = kpca_train
%
% INPUT
%   X            Training samples
%                N: number of samples
%                d: number of features
%   options      Parameters setting
%
% OUTPUT
%   model        KPCA model
%
%
% Created on 9th November, 2018, by Kepeng Qiu.



% number of training samples
L = size;

% Compute the kernel matrix
K = computeKM;

% Centralize the kernel matrix
unit = ones/L;
K_c = K-unit*K-K*unit unit*K*unit;

% Solve the eigenvalue problem
[V,D] = eigs;
lambda = diag;

% Normalize the eigenvalue
V_s = V ./ sqrt';

% Compute the numbers of principal component


% Extract the nonlinear component
if options.type == 1 % fault detection
    dims = find) >= 0.85,1, 'first');
else
    dims = options.dims;
end
mappedX  = K_c* V_s ;

% Store the results
model.mappedX =  mappedX ;
model.V_s = V_s;
model.lambda = lambda;
model.K_c = K_c;
model.L = L;
model.dims = dims;
model.X = X;
model.K = K;
model.unit = unit;
model.sigma = options.sigma;

% Compute the threshold
model.beta = options.beta;% corresponding probabilities
[SPE_limit,T2_limit] = comtupeLimit;
model.SPE_limit = SPE_limit;
model.T2_limit = T2_limit;

end复制代码2. KPCA的测试过程:
(1)获取测试数据(工业过程数据需要利用训练数据的均值和标准差进行标准化处理)
(2)计算核矩阵
(3)核矩阵中心化
(4)计算非线性主成分(即降维结果或者特征提取结果)
(5)SPE和T2统计量的计算
function [SPE,T2,mappedY] = kpca_test
% DESCRIPTION
% Compute the T2 statistic, SPE statistic,and the nonlinear component of Y
%
%       [SPE,T2,mappedY] = kpca_test
%
% INPUT
%   model       KPCA model
%   Y           test data
%
% OUTPUT
%   SPE         the SPE statistic
%   T2          the T2 statistic
%   mappedY     the nonlinear component of Y
%
% Created on 9th November, 2018, by Kepeng Qiu.


% Compute Hotelling's T2 statistic
% T2 = diag)*model.mappedX');

% the number of test samples
L = size;

% Compute the kernel matrix
Kt = computeKM;

% Centralize the kernel matrix
unit = ones/model.L;
Kt_c = Kt-unit*model.K-Kt*model.unit unit*model.K*model.unit;

% Extract the nonlinear component
mappedY = Kt_c*model.V_s;

% Compute Hotelling's T2 statistic
T2 = diag)*mappedY');

% Compute the squared prediction error
SPE = sum.^2,2)-sum;

end复制代码 3. demo1: 降维、特征提取
源代码
% Demo1: dimensionality reduction or feature extraction
% ---------------------------------------------------------------------%
clc
clear all
close all

addpath)

% 4 circles
load circledata

%
X = circledata;
for i = 1:4
    scatter:250*i,1),X:250*i,2))
    hold on
end

% Parameters setting
options.sigma = 5;   % kernel width
options.dims  = 2;   % output dimension
options.type  = 0;   % 0:dimensionality reduction or feature extraction
                     % 1:fault detection
options.beta  = 0.9; % corresponding probabilities
options.cpc  = 0.85; % Principal contribution rate


% Train KPCA model
model = kpca_train;

figure
for i = 1:4
    scatter:250*i,1), ...
        model.mappedX:250*i,2))
    hold on
end
复制代码(2)结果 (分别为原图和特征提取后的图)
demo1-1.png demo1-2.png

4. demo2: 故障检测(需要调节核宽度、主元贡献率和置信度等参数来提高故障检测效果)
(1)源代码
% Demo2: Fault detection
% X: training samples
% Y: test samples

% Improve the performance of fault detection by adjusting parameters
% 1. options.sigma = 16;   % kernel width
% 2. options.beta          % corresponding probabilities
% 3. options.cpc  ;        % principal contribution rate


% ---------------------------------------------------------------------%
clc
clear all
close all

addpath)

%
X = rand;
Y = rand;
Y = rand 3;
Y = rand*3;

% Normalization
% mu = mean;
% st = std;
% X = zscore;
% Y = bsxfun,st);

% Parameters setting
options.sigma = 16;   % kernel width
options.dims  = 2;   % output dimension
options.type  = 1;   % 0:dimensionality reduction or feature extraction
                     % 1:fault detection
options.beta  = 0.9; % corresponding probabilities
options.cpc  = 0.85; % principal contribution rate

% Train KPCA model
model = kpca_train;

% Test a new sample Y
[SPE,T2,mappedY] = kpca_test;

% Plot the result
plotResult;
plotResult;
复制代码(2)结果(分别是SPE统计量和T2统计量的结果图)
demo2-1.png demo2-2.png
  

附件是基于KPCA的降维、特征提取和故障检测程序源代码。如有错误的地方请指出,谢谢。
Kernel Principal Component Analysis .zip KPCA




文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明