偏最小二乘法算法

上传人:s****a 文档编号:180397396 上传时间:2023-01-06 格式:DOCX 页数:12 大小:134.75KB
返回 下载 相关 举报
偏最小二乘法算法_第1页
第1页 / 共12页
偏最小二乘法算法_第2页
第2页 / 共12页
偏最小二乘法算法_第3页
第3页 / 共12页
点击查看更多>>
资源描述
偏最小二乘法1.1基本原理偏最小二乘法(PLS)是基于因子分析的多变量校正方法,其数学基础为主成分分析。但它相 对于主成分回归(PCR)更进了一步,两者的区别在于PLS法将浓度矩阵Y和相应的量测响应矩 阵X同时进行主成分分解:X=TP+EY=UQ+F式中T和U分别为X和Y的得分矩阵,而P和Q分别为X和Y的载荷矩阵,E和F分别为 运用偏最小二乘法去拟合矩阵X和Y时所引进的误差。偏最小二乘法和主成分回归很相似,其差别在于用于描述变量Y中因子的同时也用于描述 变量X。为了实现这一点,数学中是以矩阵Y的列去计算矩阵X的因子。同时,矩阵Y的因子则 由矩阵X的列去预测。分解得到的T和U矩阵分别是除去了人部分测量误差的 响应和浓度的信 息。偏最小二乘法就是利用各列向量相互正交的特征响应矩阵T和特征浓度矩阵U进行回归:U=TB得到回归系数矩阵,又称关联矩阵 E:B=(TT )F U因此,偏最小二乘法的校正步骤包括对矩阵Y和矩阵X的主成分分解以及对关联矩阵B的 计算。1.2主成分分析 主成分分析的中心目的是将数据降维,以排除众多化学信息共存中相互重叠的信息。他是将 原变量进行转换,即把原变量的线性组合成几个新变量。同时这些新变量要尽可能多的表征原变 量的数据结构特征而不丢失信息。新变量是一组正交的,即互不相关的变量。这种新变量又称为 主成分。如何寻找主成分,在数学上讲,求数据矩阵的主成分就是求解该矩阵的特征值和特征矢量问 题。卞面以多组分混合物的量测光谱来加以说明。假设有n个样本包含p个组分,在m个波长下 测定其光谱数据,根据比尔定律和加和定理有:如果混合物只有一种组分,则该光谱矢量与纯光谱矢量应该是方向一致,而人小不同。换句 话说,光谱A表示在由p个波长构成的p维变量空间的一组点(n个),而这一组点一定在一条通 过坐标原点的直线上。这条直线其实就是纯光谱b。因此由m个波长描述的原始数据可以用一条 直线,即一个新坐标或新变量来表示。如果一个混合物由 2个组分组成,各组分的纯光谱用 bl, b2 表示,则有:a(主成分数),到步骤(21)o否则返回步骤(19)(21) 得到的Y已经标准化,因此需要按标准化步骤的相反操作,将之复原到原坐标注意的是对 预测集进行标准化处理的时,使用的是训练集的均值和标准偏差。因此,在进行反标准 化操作 时,使用的也应该是训练集的均值和标准偏差。1.5程丿予框图与程丿予代码 程丿予框图:*从Y 1片任选一列作为初始u, h=li+1v反标准化操作.输出 结果下:data_mput();data.standardization Q; pctestQ principalcomponentQ; factornumQ;nornialeqO;test(mt k)IterationQ;predictQ;biasQ;repoilQ;inam(argc?aigv)用C语言编制的PLS程序源代码:C语言的源程序的各函数和功能如/*数据的输入*/*数据的标准化*/*在主成分分解时判断t的收敛*/*主成分分解*/*确定必要的主成分分数*/*正规方程的建立*/*迭代求解系数矩阵的收敛检验*/*迭代法求解*/*未知样品预测*/*计算预测标准偏差*/*输出结呆*/*主函数*/PLS 程序源代码# iiiclude# mclude# iiiclude# mcludedefine N 25define Mil#define L 4define TN 8define H 5FILE *mfp,*outfp;double tiain_xNM, tiam_vNL;double test_xTNM, test_yTNL;double avg_xM,std_xM:double avg_yL,std_ yL;double error_valueTN Ldouble uN.new_uN;doublesave_p H N,save_qH L,save_wH M,save_d H: double predictvalueTN L,biasL;void data_mput()/*数据的输入*7 intij;血(j=0; jvMj+) fbr(i=O;iN;i+)fscanf(infA &tiaiii_xij); fbr(i=O;iN;i-H-) foi(j=O;jLj+) fscanf(infA &tiaiii_yij);foi(j=O;jLj+)new_u i+=tmin_y i j *qj; new_ui/=sq; inask=pctest(); while(mask); foi(j=O;jLj+) save_qililj=qlj; fbi(st=O,i=O;iN;i+) st+=ti*ti;pj=O.O;fbr(i=O;iN;i-H-)Pj+=ti*gin_xiIj:pj/=st; fdi(sp=Oj=OjMj+) sp+=pj*pj; sp=sqrt(sp); foi(j=O;jM;j-H-) pj/=sp;save_piliIj=pj; fbr(i=O;iN;i-H-) ti*=sp ; fdi(i=O;iM;i+) wi*=sp; save_wih i=wi;fbr(i=O;iTN;i+)fscaiif(mfp, &test_xij);fbr(i=O;iTN;i+) for(j=OjLj+) fscaiif(uifp. u%lfv, &test_yij); fclose(mfp);void data_standardization () /*数据的标准化*/mt ij; av jxj=std_xj=O O; for(i=O;iN;i-H-) av jxj+=tf ain_xi j; avjxj/=N;for(i=O;iN;i-H-)std_xj+=pow(Mam_xiJHvjxj)2); std_xj=sqrt(std_xj)/(N); for(i=O;iN;i-H-)tram_xij= (tram_xij-avg_xlj)/std-xj;for(i=O;iTN;i+)tram_xij= (tram_xij-avg_xlj)/std-xj; for(j=O;jLj+) avg-yj=std_y|j=O O; fbr(i=O;iN;i-H-)avjyj+=tniin_yi j; avjyj/=N;fbr(i=O;iN;i-H-)std_yj+=pow(tiam_yijMvjyj),2); std_yj=sqrt(std_yj)/(N l); fbr(i=O;iN;i-H-) for(j=O;jLj+) trauvyi j= (tiain_y 1 (j-avg_yj )/std_y j ; pctestQ /*检验收敛*/ intij;double count=0.0; fbi(i=0;iN;i+) count+=pow(new_u i-u i),2); foi(st=0j=0;iN;i+)st+=ti*ti;foi(b=0a=0:iN;i+) b+=new_ui*ti;b/=st;save_dili=b; for(i=O;iN;i-H-)foi(j=0;jM;j+)elsereturn 1; calibiation() /* 模型的建立*/ mt ij.ilijnask;double su,sw、st,sq.sp,b; double tN.wM.pM.qL;111=0:do for(i=0;iN;i-H-) ui=tram_yil;do for(su=04=0;iN;i-H-) su+=ui*ui; wj=0.0;fbi(i=0;iN;i-H-)w(j+=u 1 *gin_xi j ; wj/=su; fbi(sT=OJ=OjMj+)sw-r=wj*wj; sw=sqrt(sw); foi(j=O;jM;j-H-)wj/=sw;fbi(sT=OJ=OjMj+) sw-r=wj*wj;ti=o.o; for(j=O;jM;j-H-) ti+=train_xi j*w(j; ti/=sw; fbi(st=04=0;iN;i+) st+=ti*ti; foi(j=O;jLj+) qj=O.O;fbr(i=0;iN;i+) qj+=ti*gin_yi|j; intij;fbr(i=0;iTN;i-H-) foi(j=O;jLj+) enoi_valuei j=tesCyi j - predictx-aluei j ; foi(j=O;jLj+) biasj=O.O;fdi(i=0;iTN;i+) biasj/=TN; biaslj=sqit(biasj);repoitQ /*输出结果*/ mt i,j;fprmtf(outfp,预测的浓度值为:n”);fbr(i=O;iTN;i+) foi(j=O;jLj+) fpiiiitf(outfp, %941f , predictraluei|j); fpriiitf(outfp, );fprmtf(outfp,预测结果的误差为:W ); fbi(i=O;ivTN;i+) foi(j=0;jvL;j+) fpriiitf(outfp, %94f , enoi_valueij);fpriiitf(outfp, );fpimtf(outfp,相对于各组分的校正标准偏差为n” ); fdi(i=O;ivL;i+) rintf(outfp, %1041f” , biasi);void main(aigc,aigr)mt argc; char*argv; if(argc!=3) prmtf(tv forgot enter a filename.XiiA); exit(l); if(uifp=fopen(argv 1 , u r )=0 priiitfAAcanAt open data filenn);qi=/st;for (sq=0, j=0 JL j+) sq+=qj*qj;sq=sqrt(sq);foi(j=O;jLj+)qj=/sq;for (sq=0, j=0 JL j+)sq+=qj*qlj;for(i=0;iN;i-H-) new_uj=0.0;exit(l);if(outfp=fopen(argv2, uw,T ) = = 0) piintf(caif t open output filenn); exit(l); data_mputQ;data_standaidization(); calibrationQ; predictQ;statistics();repoitQ;
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!