失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 偏最小二乘算法(PLS)回归建模 (Matlab代码实现)

偏最小二乘算法(PLS)回归建模 (Matlab代码实现)

时间:2020-08-10 15:02:03

相关推荐

偏最小二乘算法(PLS)回归建模 (Matlab代码实现)

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

在实际问题中,经常遇到需要研究两组多重相关变量间的相互依赖关系,并研究用一组变量(常称为自变量或预测变量)去预测另一组变量(常称为因变量或响应变量),除了最小二乘准则下的经典多元线性回归分析(MLR),提取自变量组主成分的主成分回归分析(PCR)等方法外,还有近年发展起来的偏最小二乘(PLS)回归方法。

偏最小二乘回归提供一种多对多线性回归建模的方法,特别当两组变量的个数很多,且都存在多重相关性,而观测数据的数量(样本量)又较少时,用偏最小二乘回归建立的模型具有传统的经典回归分析等方法所没有的优点。

偏最小二乘回归分析在建模过程中集中了主成分分析,典型相关分析和线性回归分析方法的特点,因此在分析结果中,除了可以提供一个更为合理的回归模型外,还可以同时完成一些类似于主成分分析和典型相关分析的研究内容,提供更丰富、深入的一些信息。

本文介绍偏最小二乘回归分析的建模方法;通过例子从预测角度对所建立的回归模型进行比较。

📚2 运行结果

🎉3 参考文献

[1]陆洪涛. 偏最小二乘回归数学模型及其算法研究[D].华北电力大学,.

👨‍💻4 Matlab代码

主函数部分代码:

clc;

clear;

%% 数据导入

load('RAW.mat');

RAW1=RAW(:,:);

RAW=RAW1(:,1:254);

LLL=RAW1(:,255);

[oo, pp]=size(RAW);

temp = randperm(oo);

data_train = RAW(temp(1:300),:);

target_out = LLL(temp(1:300),:);

data_predict = RAW(temp(301:end),:);

predict_out = LLL(temp(301:end),:);

%% 数据处理

var=[data_train,target_out];

mu=mean(var); %求均值

sig=std(var); %求标准差

rr=corrcoef(var); %求相关系数矩阵

ab=zscore(var); %数据标准化

a=ab(:,[1:254]);b=ab(:,end); %提出标准化后的自变量和因变量数据

[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] =plsregress(a,b);

xw=a\XS; %求自变量提出成分系数

yw=b\YS; %求因变量提出成分的系数

a_0=PCTVAR(1,:);b_0=PCTVAR(2,:);%PCTVAR是一个两行的矩阵,第一行为自变量提取成分的贡献率,第二行为因变量提取成分的贡献率

a_1=cumsum(a_0);b_1=cumsum(b_0);

%% 判断提出成分对的个数

i=1;

while ((a_1(i)<0.95)&&(a_0(i)>0.05)&&(b_1(i)<0.95)&&(b_0(i)>0.05))

i=i+1;

end

ncomp=i;

fprintf('主成分个数为:%d\n',ncomp);

fprintf('%d对成分分别为:\n',ncomp);

for i=1:ncomp

fprintf('第%d对成分:\n',i);

fprintf('u%d=',i);

for k=1:254 %此处为变量x的个数

fprintf('+(%f*x_%d)',xw(k,i),k);

end

fprintf('\n');

fprintf('v%d=',i);

for k=1 %此处为变量y的个数,假如因变量是3个的话就要写成1:3

fprintf('+(%f*y_%d)',yw(k,i),k);

end

fprintf('\n');

end

如果觉得《偏最小二乘算法(PLS)回归建模 (Matlab代码实现)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。