偏最小二乘回归(PLSR)- 2 标准算法(NIPALS)

2024-08-26 17:32

本文主要是介绍偏最小二乘回归(PLSR)- 2 标准算法(NIPALS),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://www.cnblogs.com/pegasus/p/3396085.html


1 NIPALS 算法

Step1:对原始数据X和Y进行中心化,得到X0和Y0。从Y0中选择一列作为u1,一般选择方差最大的那一列。

注:这是为了后面计算方便,如计算协方差时,对于标准化后的数据,其样本协方差为cov(X,Y)=XTY/(n-1)。

Step2:迭代求解X与Y的变换权重(w1,c1)、因子(u1,t1),直到收敛

step 2.1:利用Y的信息U1,求X的变换权重w1(w1实现有X0到因子t1的变换,t1=X0*w1)及因子t1。从而将X0的信息用t1来近似表达。

            image_thumb[68] (2.1)

           image_thumb[69] (2.2)

           image_thumb[70] (2.3)

Step2.2:利用X的信息t1,求Y的变换权重c1(c1实现有Y0到因子u1的变换,u1=Y0*c1),并更新因子u1。从而将Y0的信息用t1来近似表达。

            image_thumb[72] (2.4)

            image_thumb[73] (2.5)

     image_thumb[75] (2.6)

Step2.5:判断是否已找到合理解

           image_thumb[76] (2.7)

         若image_thumb[78]<阈值(如image_thumb[79])则继续下面步骤;否则,取image_thumb[81],返回step2.1。

注:

1)以上过程的意义及其收敛性的直观分析

     a)公式2.1,实际上求解了由Y的因子u1到X的回归模型的系数image_thumb[99],公式2.2与2.3将X映射为第一个因子t1。

     b)同理,公式2.4,实际上求解了由X的因子t1到Y的回归模型的系数,公式2.5与2.6将X映射为第一个因子t1。

      c)这里交替建立X与Y直接回归关系的方式,通常会很快收敛。

2)w1与c1的其他求法。[2,3]中已经证明以上求解过程收敛后找到的解w1与c1可以利用矩阵分析方法找到

     a)特征值分解方法(Eigen Value Decomposition):w1是image_thumb[100]的最大特征值的单位特征向量,c1是image_thumb[101]的最大特征值的单位特征向量,

     b)SVD分解法(singular vector decomposition):w1和c1分别于对X0TY0进行SVD分解获得的第一对左奇异向量(left singular vector)和右奇异向量的单位

向量。

Step3:求X与Y的残差矩阵

step 3.1:求X的载荷(X-loading)p1(p1反映X0与因子t1的直接关系,image_thumb[84]

        注:前面求得X的变换权重w1是由X0到t1的关系,此处的p1是由t1到X0的关系。而且,由于后续的Wi(i>1)是根据Xi的残差求得的,因此它无法反映T到X0的关系。所以,才要求出P以直接反映T到X0的关系)

                 image_thumb[85] (2.8)

        p1求解公式的推导如下

a)前面已求出t1,现在希望用t1来表达X0,建立回归模型

image_thumb[37]

b)模型不能表达的信息即为X0的残差矩阵X1。

image_thumb[43]

c)上式的关键是求p1,其求解公式推导过程:对image_thumb[39]转置得image_thumb[40],两边右乘t1有image_thumb[41],从而有

image_thumb[42]

注:p1代表因子t1在X上的载荷(loadings),它反映了原始变量X与第一个因子向量t1间的关系。

step 3.2:求X0的残差X1。此残差表达了u1所不能反映的X0中的信息。

image_thumb[94] (2,9)

step 3.3:求Y的载荷(Y-loading)q1(q1反映Y0与因子U1的关系,image_thumb[87]

image_thumb[88] (2.10)

step 3.4:建立X因子t1与Y因子u1间的回归模型image_thumb[90],用t1预测u1的信息。

image_thumb[91](2.11)

step 3.5:求Y0的残差Y1。此残差表达了X因子t1所不能预测的Y0中的信息

image_thumb[96](2.12)

注:这里利用image_thumb[98],建立t1与Y间的关系。

Step4:利用X1与Y1,重复上面步骤,求解下一批PLS参数(因子、转换权重、载荷、回归系数等)。

在这个算法中,当一个因子计算出来后,进一步计算出X(及Y)的残差。下一个因子是从当前残差矩阵计算出来,因此PLS模型参数(因子scores,loadings, weights)与最初的X0无关,而是与残差有关。

 

2 NIPALS-PLS 参数的理解

1)变换权向量w

                    image

在第二轮及以后的计算过程中,权向量wa将残差Xa-1变换为因子得分ta,而不是对原始预处理后的数据X0直接进行变换,这阻碍了对于因子的有效解释实际上,权向量在PLS回归模型中的解释中用处不大。

2)构建X0到T直接联系的权向量R

                  imageimage

PLS算法执行完成后,我们得到所有的因子t,那么我们就可以直接建立原始数据X0与其之间的转换权重矩阵R。其实R就是由X0到T的回归系数,其计算公式为

                 image

 

3 NIPALS-PLS 的预测过程

当完成PLS模型构建后,我们得到的PLS模型参数包括:

1)转换权重:W(X-weights),C(Y-wights)

2)因子得分:T(X-factor scores),U(Y-factor scores)

3)载荷:P(X-loadings),Q(Y-loadings)

 

当来了一条新数据image,其预测计算过程如下

1)预处理:image。注:预处理方法与建模时保持一致,这里公式采用中心化处理方法。

2)依次求出求image的各因子和残差

              image

             image

3)计算预测值

            image

上面是由T到Y预测值的回归方程,而不是由X0到Y预测值的回归方程。如果在PLS建模过程中获得第2节中介绍的可将X0直接转换为T的权重R,那么就能获得一个针对X0的更直接的回归公式。

                                  image,回归系数image

参考文献

[1] S. de Jong. SIMPLS: an alternative approach to partial least squares regression. Chemometrics and Intelligent Laboratory Systems, 18:251–263, 1993.

[2] R. Manne. Analysis of Two Partial-Least-Squares Algorithms for Multivariate Calibration. Chemometrics and Intelligent Laboratory Systems, 2:187–197, 1987.

[3] A. H¨oskuldsson. PLS Regression Methods. Journal of Chemometrics, 2:211–228,1988.


这篇关于偏最小二乘回归(PLSR)- 2 标准算法(NIPALS)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109217

相关文章

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

C++ Primer 标准库vector示例详解

《C++Primer标准库vector示例详解》该文章主要介绍了C++标准库中的vector类型,包括其定义、初始化、成员函数以及常见操作,文章详细解释了如何使用vector来存储和操作对象集合,... 目录3.3标准库Vector定义和初始化vector对象通列表初始化vector对象创建指定数量的元素值

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1