MATLAB小技巧(21)矩阵分析--偏最小二乘回归

MATLAB小技巧(21)矩阵分析--偏最小二乘回归

前言

MATLAB进行图像处理相关的学习是非常友好的,可以从零开始,对基础的图像处理都已经有了封装好的许多可直接调用的函数,这个系列文章的话主要就是介绍一些大家在MATLAB中常用一些概念函数进行例程演示!

偏最小二乘法是一种数学优化技术,它通过最小化误差的平方和找到一组数据的最佳函数匹配。 用最简的方法求得一些绝对不可知的真值,而令误差平方之和为最小。 很多其他的优化问题也可通过最小化能量或最大化熵用最小二乘形式表达。

与传统多元线性回归模型相比,偏最小二乘法的特点是:

1、能够在自变量存在严重多重相关性的条件下进行回归建模。

2、允许在样本点个数少于变量个数的条件下进行回归建模。

3、偏最小二乘回归在最终模型中将包含原有的所有自变量。

4、偏最小二乘回归模型更易于辨识系统信息与噪声。

5、在偏最小二乘回归模型中,每一个自变量的回归系数将更容易解释。

在计算方差和协方差时,求和号前面的系数有两种取法:当样本点集合是随机抽取得到时,应该取1/(n-1);如果不是随机抽取的,这个系数可取1/n。搜寻资料的时候看到的这个示例,这里分享给大家,MATLAB版本为MATLAB2015b。

一. MATLAB仿真

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:矩阵分析--偏最小二乘回归
%环境:Win7,Matlab2015b
%Modi: C.S
%时间:2022-06-26
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% I. 清空环境变量
clear all
clc

tic
%% II. 导入数据
load spectra;

%% III. 随机划分训练集与测试集
temp = randperm(size(NIR, 1));
% temp = 1:60;
%%
% 1. 训练集——50个样本
P_train = NIR(temp(1:50),:);
T_train = octane(temp(1:50),:);
%%
% 2. 测试集——10个样本
P_test = NIR(temp(51:end),:);
T_test = octane(temp(51:end),:);

%% IV. PLS回归模型
%%
% 1. 创建模型
k = 2;
[Xloadings,Yloadings,Xscores,Yscores,betaPLS,PLSPctVar,MSE,stats] = plsregress(P_train,T_train,k);

%%
% 2. 主成分贡献率分析
figure
percent_explained = 100 * PLSPctVar(2,:) / sum(PLSPctVar(2,:));
pareto(percent_explained)
xlabel('主成分')
ylabel('贡献率(%)')
title('主成分贡献率')

%%
% 3. 预测拟合
N = size(P_test,1);
T_sim = [ones(N,1) P_test] * betaPLS;

%% V. 结果分析与绘图
%%
% 1. 相对误差error
error = abs(T_sim - T_test) ./ T_test;
%%
% 2. 决定系数R^2
R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2)); 
%%
% 3. 结果对比
result = [T_test T_sim error]

%% 
% 4. 绘图
figure
plot(1:N,T_test,'b:*',1:N,T_sim,'r-o')
legend('真实值','预测值','location','best')
xlabel('预测样本')
ylabel('辛烷值')
string = {
    
    '测试集辛烷值含量预测结果对比';['R^2=' num2str(R2)]};
title(string)
toc

二. 仿真结果


result =

   88.9000   88.6958    0.0023
   88.7500   88.3616    0.0044
   87.0500   87.0516    0.0000
   88.3500   88.4744    0.0014
   88.8500   89.1747    0.0037
   88.5500   88.6033    0.0006
   87.3000   87.4689    0.0019
   88.7000   88.9760    0.0031
   84.6000   84.6464    0.0005
   89.6000   88.6938    0.0101

时间已过 1.684586 秒。

在这里插入图片描述
在这里插入图片描述

三. 小结

偏最小二乘回归进行预测分析的示例,最小二乘是比较常用的在各类算法中的都比较常见的基础算法,对算法感兴趣的同学,建议还是从原理,公式推导好好理解学习,本示例后期可能会用到,所以这里做个笔记。每天学一个MATLAB小知识,大家一起来学习进步阿!

猜你喜欢

转载自blog.csdn.net/sinat_34897952/article/details/125463075