楼主: jingweimo
7675 5

GA-PLS及Matlab实现 [推广有奖]

  • 0关注
  • 0粉丝

高中生

50%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
1.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
185 点
帖子
49
精华
0
在线时间
4 小时
注册时间
2012-12-21
最后登录
2018-1-21

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币



常规特征提取的方法所提取的波长一般是分散的.  GAs, after suitable modification, produces more interpretable results, since the  selected
wavelengths are less dispersed than with other methods. GA可以提取出尽可能连续的波长。
遗传算法提取波长通常假定变量之间存在自相关.然而实际的波长变量之间不是如此的.That means that if wavelength n is selected as relvant,
wavelength n-1 and n+1 should also have a high probability of being selected.
GA的过拟合风险:随着测试变量数的增加而增大,因为变量数增加时,模型的良好性能更趋向于源于变量内在的随机相关关系。
To reduce the risk of overfitting, the final model is obtained from the results of 100 independent, very short GA runs.
it's strongly suggested to have a number of starting variables not greater than 200, in order to reduce the risk of overfitting. This can be      
achieved by a 'priori' remving variables or, in case of spectra, by computing the average of n contiguous wavelengths. 起始变量数要求
dataset数据结构:
程序默认参数:
population:30  chromosomes
on average 5 variables per chromosome in the original population;
5 deletion groups;
Maximum number of variables selected in the same chromosome:30;
probablity of mutation:0.01;
probability of cross-over:0.5;
autoscaling;
Maximum number of components:15;
number of runs:100;
back elimination after100 evaluaion and at the end (if the number of evaluation is not a multiple of 100);
window size for smoothing (only in the gaplssp):3.
若需要参数调整,则需修改gaplsp.m or gaplssp.m 中相应命令行
运行步骤:
1、随机化测试 randomization tests: this does 50 runs with 100 evaluations with random permutations of the Y variable
变量数与样品数比值不能太高,否则GA运行会倾向于强化噪声而不是有用信息(if the variables, maily the Y variables, are very noisy)。
gaplsopt(dataset,1)
如果测试结果值<5,则适用于GA特征筛选;
如果结果值<10,基本上可以应用GA
数值越低,数据集越适合
2、 进化代数优化测试
进化代数太少,搜索不充分,太多,则会引入大量噪声。
优化测试时分两批进行:前20次运行,200代,使用原始变量(real Y variable);后20代使用随机化变量(Y vector is shuffled as in randomization tests). A vector of the differences is then computed. It can be said that the best moment to stop a GA run corresponds to the evaluation
after which the maximum difference is obtained(差异最大化时的进化代数最优)(简而言之,真实变量测试结果变现了the ability of modeling
information+noise,随机化后变量测试变量了the ability of modeling noise,所以前后之差异则表现了the ability of modeling information).
运行程序:
gaplsopt(dataset,2)
得到figure1和figure2,figure2即为差异图,选取没有显著增加时的进化代数。如果低于50时,则选择50,最大进化代数为200.
3、遗传筛选
[b,c,d]=gaplssp(dataset,number of evaluations, precision).
精度precision是可选项
结果解释:
b:运行结束后入选变量按照次数高低讲续排列于b。(the vector of the variables in decreasing order of selection;
c:最后结果矩阵,包含四行
     第一行:使用的变量数
     第二行:交叉验证变异解释率(根据该结果,程序运行后生成figure2)
     第三行:主成分数
     第四行:RMSECV(根据该结果,程序运行后生成figure4)
d:各变量的入选频次(the vector with the freqency of selection of the variables
遗传筛选过程至少要运行5次,因为GA是一种随机化算法,每次运行的结果不一定完全一致。通过多次运行比较,可以对该方法筛选结果的稳健性有一个把握。每次运行的输出要赋予不同的变量名,如[b1,c1,d1],[b2,c2,d2]....
4、确定筛选变量数
For each program the user must decide on how many variables should be included in the model.
遗传筛选运行后,会生成四张图。通过观察图形,确定每次运行需要筛选出的变量数。
图形展示:
plotone(dataset,b1,c1,d1);plotone(dataset,b2,c2,d2);plotone(dataset,b3,c3,d3)...............
如果用于筛选的变量时原始光谱变量而非进过ipls筛选的变量,还可以使用plotmore依次把所有运行结果的变量提取出来,然后生成变量筛选区段图,在光谱下的每行短线所对应的位置即为每次筛选出的波段。(plotmore(dataset,total),total=[b1;b2;b3.....]).
图形解释:
figure1:变量入选次数频率直方图(smoothed if using gapssp)。绿线表示全局最小RMSECV的变量数位置,红线表示与全局最小RMSECV统
              计不显著的最小变量数位置
figure2:交叉验证变异解释率。 随着入选变量数增加,值逐渐增大,最终达到最大,维持一个平台阶段,或者下降。红绿点的意义同上;
figure3:变量选择区段,会用红绿线在光谱图下方表示出来。对于进行区间偏最小二乘筛选过的变量,该图形意义不大,因为图形不反映实际
            谱图。
figure4: RMSECV随入选变量数变化图。改图与figure2结合是确定变量数的主要方法。

其实,到此处遗传算法变量筛选已经完成。下面需要对筛选出的变量进行建模校正和预测。在此之前,要把筛选出的变量和其在原始谱图中的坐标位置提取并保存。
5、变量提取
可以进行两种变量提取方式,一种是把五次筛选出的变量的交集,即每次都被选中的变量,提取出来,最终表示成一组;其二是,对每次提取的 变量分别建模和预测,依次可看出遗传算法的变量筛选建模的稳健性和一致性。(标准化测试值高时,变异性会比较大)。
假设每次运行提取的变量数为Ni,则每次所提取的变量索引为:
Indi=bi(:,1:Ni);
%所提取的变量为
Xcali=Xcal(:,Indi);
然后就可以对提取的新变量进行Pls建模分析。
值得注意的是,在使用所建模型进行样品预测时,也要对测试变量进行如果建模变量同样的提取工作,要保证建模数据和测试数据使用相同的变量。
%提取测试变量
Xtesti=Xtest(:,Indi);
还有一种情况是,建模变量为ipl筛选出的变量,那么要利用筛选出的变量的索引,对测试变量进行同样的筛选。而且,在GA进行第二次筛选后,测试变量也要以相应的索引进行同样的二次筛选。
再有一种情况,如果ipls所提取的变量数大于200,则在进行GA筛选时需要对其加窗平均处理,那么同样的,测试变量也要进行这种工作,总之,测试变量和建模变量要保证是相同索引位置的相同变量。加窗口后进行GA筛选出的变量数对应于实际的相应倍数的变量,比如窗口宽度2,GA筛选处理20个变量,则实际利用的变量数位40.,同时要具体的指出其波长或波数段。
6、 PLS模型校正和预测
在这里可以巧借ipls的方法进行建模和预测,这个可以保证整个pls运行体系所采用的具体算法是一致的。
%提取变量为s_xcal,测试变量为s_xtest.建模y值为ycal,测试y值为ytest.
%区间数位1,生成2个模型,一个全局模型,一个为第一区间模型(两者是完全相同的)
Model=ipls(s_xcal,ycal,15,‘mean',1,[],’syst123',5);
oneModel=plsmodel(Model,1,15,'mean','syst123',5);%oneModel中RMSE项包含了前15个主成分的RMSECV值;
preModel=plspredict(s_xtest,oneModel,15,ytest);%preModel中RMSE包含了前15个主成分的RMSEP值,与上述的RMSECV值比较,可以选中综合最优的主成分数,不过更看重RMSEP.





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:matlab实现 GA-PLS MATLAB atlab matla produces selected methods should

沙发
jingweimo 发表于 2013-10-10 10:55:52 |只看作者 |坛友微信交流群
自己先顶一个

使用道具

藤椅
lylhz2010 发表于 2014-11-21 21:05:58 |只看作者 |坛友微信交流群
jingweimo 发表于 2013-10-10 10:55
自己先顶一个
可否提供源代码

使用道具

板凳
hanmengwewe 发表于 2015-5-27 17:44:39 |只看作者 |坛友微信交流群
请教下ga-pls里面的dataset输入什么数据

使用道具

你好,请问你有代码或工具箱吗?

使用道具

地板
int_crazy 发表于 2018-1-21 07:36:00 |只看作者 |坛友微信交流群
我想问下,具体如何得到ga_pls的回归方程。不胜感激

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 19:26