【MATLAB第31期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理回归问题MATLAB代码实现(持续更新)

【MATLAB第31期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理回归问题MATLAB代码实现(持续更新)

本文敏感性分析主要分析回归问题,下期分析分类问题(fisher、rf、arf、nca等)。

内容更新:

增加视频解说:

基于MATLAB的局部敏感性分析降维方法简易操作演示

一、降维方法(回归)

常见的降维方法:
常见的敏感性分析法:

*(一).全局敏感性分析(sobol、蒙特卡洛方法)


(二).非全局敏感性分析
1.变量归类(主成分分析PCA、核主成分分析KPCA)
2.变量筛选(临近成分分析NCA、RF随机森林、ARF自适应随机森林、皮尔逊系数PCC、Relief-F、Term Variance、garson、极差分析法)
特征选择和降维
1、相同点和不同点
特征选择和降维有着些许的相似点,这两者达到的效果是一样的,就是试图去减少特征数据集中的属性(或者称为特征)的数目;但是两者所采用的方式方法却不同:降维的方法主要是通过属性间的关系,如组合不同的属性得新的属性,这样就改变了原来的特征空间;而特征选择的方法是从原始特征数据集中选择出子集,是一种包含的关系,没有更改原始的特征空间。
2、降维的主要方法
Principal Component Analysis(主成分分析),详细见“简单易学的机器学习算法——主成分分析(PCA)”
Singular Value Decomposition(奇异值分解),详细见“简单易学的机器学习算法——SVD奇异值分解”
Sammon’s Mapping(Sammon映射)
特征提取和特征选择都是从原始特征中找出最有效(同类样本的不变性、不同样本的鉴别性、对噪声的鲁棒性)的特征。
特征提取:将原始特征转换为一组具有明显物理意义(Gabor、几何特征[角点、不变量]、纹理[LBP HOG])或者统计意义或核的特征
特征选择:从特征集合中挑选一组最具统计意义的特征,达到降维
两者作用:
1 减少数据存储和输入数据带宽
2 减少冗余
3 低纬上分类性往往会提高
4 能发现更有意义的潜在的变量,帮助对数据产生更深入的了解

二、案例数据

案例数据data 1000×31 ,前30列为变量,第31列为因变量
在这里插入图片描述

三、实际应用

(1)主成分分析PCA

%% 1.降维方法
%
clc
clear all

load data
x=data(:,1:end-1);

%% (1)主成分分析PCA
addpath('D:\特征排序\PCA')
ContributeRate=0.9;  %贡献率90%
[xpca,result_report]=mypca(x,ContributeRate) ;

在这里插入图片描述
三十个变量通过降维成16个变量组合。
在这里插入图片描述

(2)核主成分分析KPCA

核函数可选择四种,分别为:
1-高斯核函数
2-二阶多项式核
3-线性核
4-sigmoid核(tanh)

%% (2)核主成分分析KPCA  
addpath('D:\特征排序\KPCA')
sigma=0.3;
ContributeRate=0.9;
KindKernel=2;% 1-高斯核函数,2-二阶多项式核,3-线性核,4-sigmoid核(tanh)
[xkpca] =kpca(x,sigma, KindKernel,ContributeRate); 

当采用高斯核函数时,出现复数,结果报错。
故选择二阶多项式核进行运算得:
在这里插入图片描述
3-线性核运行结果在这里插入图片描述
在这里插入图片描述
4-sigmoid核(tanh),出现复数,结果报错。

(3)临近成分分析NCA

%% (3)近邻成分分析NCA
addpath('D:\特征排序\NCA')
ContributeRate=0.9;
xtrain =data(:,1:end-1);
ytrain =data(:,end);
[xx,mdl]=myfsrnca(xtrain,ytrain,0.9);
xnca=data(:,xx);

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

(4)随机森林RF

%% (4)随机森林RF
addpath('D:\特征排序\RF')
ContributeRate=0.9;
[XT,RFModel,w]= myrf(data,ContributeRate);
xrf=data(:,XT);

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

(5)自适应随机森林ARF

%% (5)自适应随机森林ARF
addpath('D:\特征排序\ARF')
ContributeRate=0.9;
params.RFLeaf=[5,10,20,50,100,200,500]; %RFLeaf定义初始的叶子节点个数,这里设置了从5到500。
params.Maxepoch=500; % 选择叶子节点个数对应的最大训练步数
[XT,RFModel,w,params]= myarf(data,ContributeRate,params);
xarf=data(:,XT);

在这里插入图片描述
nTree = 470;nLeaf = 5;
在这里插入图片描述
在这里插入图片描述

(6)皮尔逊相关系数PCC

%% (6)皮尔逊相关系数PCC
addpath('D:\特征排序\PCC')
ContributeRate=0.9;
xtrain =data(:,1:end-1);
ytrain =data(:,end);
opts.Nf =size(xtrain,2);    % 选择因素数量
FS     = mypcc(xtrain,ytrain,opts); % 皮尔逊相关系数法 函数调用
sf_idx = FS.sf;
 % 绘图  ,特征排序
extra()
 xpcc=yt(1:mm);%取前MM个数据

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

(7)Relief-F算法

%% (7)Relief-F算法
addpath('D:\特征排序\Relief-F')
ContributeRate=0.9;
xtrain =data(:,1:end-1);
ytrain =data(:,end);
opts.Nf =size(xtrain,2);    % 选择因素数量
FS     = myReliefF(xtrain,ytrain,opts); %  函数调用
sf_idx = FS.sf;
extra()
 xReliefF=yt(1:mm);%取前MM个数据

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

(8)Term Variance算法

%% (8)Term Variance算法
addpath('D:\特征排序\TV')
ContributeRate=0.9;
xtrain =data(:,1:end-1);
ytrain =data(:,end);
opts.Nf =size(xtrain,2);    % 选择因素数量
FS     = mytv(xtrain,ytrain,opts); %  函数调用
sf_idx = FS.sf;
extra()
 xTV=yt(1:mm);%取前MM个数据

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

​(9)Garson算法

(9)Garson算法 
addpath('D:特征排序\GARSON')
ContributeRate=0.9;
xtrain =data(:,1:end-1);
ytrain =data(:,end);
[xgarson,Q]=mygarson(data,ContributeRate);

在这里插入图片描述

在这里插入图片描述

四、代码获取

私信回复‘31’即可获取下载链接。

  • 13
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
### 回答1: MATLAB Morris全局敏感性分析方法是一种用于评估模型输入参数对输出结果的影响程度的方法。它通过将参数值修改为不同的水平,并记录输出结果的变化来分析参数的重要性。 该方法基于Morris采样算法,该算法通过扰动输入参数的取值来快速估计敏感性。在MATLAB中,通过使用Global Sensitivity Analysis Toolbox(全局敏感性分析工具箱)中的函数来实施Morris全局敏感性分析。 这个方法有以下几个特点: 1. 不要求模型的全局数学函数形式或概率分布假设,因此适用于各种复杂模型。 2. 该方法能够同时处理连续变量和离散变量。 3. 使用Morris采样算法,可以在较少的采样次数下得到较为准确的敏感性指标。 实施Morris全局敏感性分析的步骤如下: 1. 选择感兴趣的输入参数和输入范围。 2. 根据选择的参数范围,选择合适的参数取样点数和取样水平数,令参数个数为p,取样点数为n,取样水平数为r。 3. 利用Morris采样算法生成取样点,并结合模型运行,记录相应输出结果。 4. 通过对取样点间距的排序分析参数对模型输出结果的主要影响。 5. 根据Morris全局敏感性指标,计算每个参数的敏感性,指标越大表示该参数对输出结果的影响越大。 通过Morris全局敏感性分析,可以帮助研究人员确定模型中最重要的参数,从而提供有效的决策依据。此外,MATLAB还提供了其他一些全局敏感性分析方法,如Sobol分析和FAST分析,用于更全面地评估参数对模型输出的敏感性。 ### 回答2: Morris全局敏感性分析是一种常用于评估模型的输入变量对输出结果的影响程度的方法。它通过对输入变量进行随机扰动,观察输出结果的变化,从而判断不同输入变量的敏感性程度。 Matlab中提供了用于执行Morris全局敏感性分析的工具箱,可以帮助研究人员进行这种分析。这个工具箱提供了一系列函数,可以根据用户给定的输入参数范围和分辨率,生成一组随机采样点,并计算相应的模型输出。 该工具箱中最重要的函数是"Morris"函数,它可以执行Morris分析并生成相应的结果。这个函数需要输入用户自定义的模型函数,以及模型的输入参数范围、分辨率等信息。在执行分析后,"Morris"函数将返回包含敏感性指数和其它统计数据的结果结构体。 结果结构体包含几个重要的字段,包括元素敏感性(ElementaryEffect)、总体敏感性(TotalEffect)和标准差等。元素敏感性表示每个输入参数对输出结果的影响程度,总体敏感性则是所有输入参数的元素敏感性的平均值。标准差是用于评估结果的稳定性和可靠性的指标。 使用Matlab进行Morris全局敏感性分析,研究人员可以得到各个输入参数的敏感性指数,从而判断它们对模型输出结果的重要性。这些指数可以帮助研究人员识别关键的输入参数,优化模型的设计和参数选择,提高模型的可靠性和准确性。 ### 回答3: MATLAB Morris全局敏感性分析方法是一种用于评估输入参数对系统输出结果的敏感性的统计方法。它基于Morris采样设计和元分析,适用于单一输出的低维和中等维度的非线性、非光滑和复杂模型。 该方法通过随机地变化输入参数值,观察系统的输出结果,从而量化每个输入参数对系统输出的影响程度。具体步骤如下: 1. 设计采样:首先,根据输入参数的分布情况,生成一组随机采样点。采样点的数量通常较小,以降低计算成本。 2. 构建采样路径:对于每个采样点,按照某种规则选择相邻的参数值进行变化。采样路径主要用于评估参数的一阶效应。 3. 确定输出:根据采样路径和参数值,计算系统的输出结果。输出可以是某个目标函数的取值,也可以是系统的响应曲线。 4. 分析敏感性:使用Morris敏感度指标来评估参数的敏感性。Morris敏感度指标包括一阶和总方差敏感度,分别反映参数的线性和非线性输入效应。 5. 元分析:对于较小的采样点数量,重复多次采样并计算敏感度指标的均值和置信区间,以提高可靠性。 MATLAB Morris全局敏感性分析方法的优点是简化了参数敏感性分析的复杂度和计算工作量,适用于中等维度的模型。然而,由于采样点数量较少,可能会存在评估结果的不确定性。因此,在实际应用中,需要结合其他敏感性分析方法进行综合评估,以获得更准确的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风飘摇的土木狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值