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来近似表达。

            (2.1)

           (2.2)

           (2.3)

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

            (2.4)

            (2.5)

     (2.6)

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

           (2.7)

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

注:

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

     a)公式2.1,实际上求解了由Y的因子u1到X的回归模型的系数,公式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是的最大特征值的单位特征向量,c1是的最大特征值的单位特征向量,

     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的直接关系,

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

                 (2.8)

        p1求解公式的推导如下

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

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

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

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

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

(2,9)

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

(2.10)

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

(2.11)

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

(2.12)

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

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

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

 

2 NIPALS-PLS 参数的理解

1)变换权向量w

                   

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

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

                 

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

                

 

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)

 

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

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

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

             

            

3)计算预测值

           

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

                                  ,回归系数

参考文献

[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.

[4]

偏最小二乘回归(PLSR)- 2 标准算法(NIPALS)的更多相关文章

  1. 【建模应用】PLS偏最小二乘回归原理与应用

    @author:Andrew.Du 声明:本文为原创,转载请注明出处:http://www.cnblogs.com/duye/p/9031511.html,谢谢. 一.前言 1.目的: 我写这篇文章的 ...

  2. 偏最小二乘回归(PLSR)- 1 概览

    1. 概览 偏最小二乘算法,因其仅仅利用数据X和Y中部分信息(partial information)来建模,所以得此名字.其总体处理框架体现在下面两图中. 建议先看第2部分,对pls算法有初步了解后 ...

  3. 【数学建模】偏最小二乘回归分析(PLSR)

    PLSR的基本原理与推导,我在这篇博客中有讲过. 0.偏最小二乘回归集成了多元线性回归.主成分分析和典型相关分析的优点,在建模中是一个更好的选择,并且MATLAB提供了完整的实现,应用时主要的问题是: ...

  4. [置顶] 局部加权回归、最小二乘的概率解释、逻辑斯蒂回归、感知器算法——斯坦福ML公开课笔记3

    转载请注明:http://blog.csdn.net/xinzhangyanxiang/article/details/9113681 最近在看Ng的机器学习公开课,Ng的讲法循循善诱,感觉提高了不少 ...

  5. [matlab] 21.灰色预测、线性回归分析模型与最小二乘回归 (转载)

    灰色预测的主要特点是只需要4个数据,就能解决历史数据少,序列的完整性以及可靠性低的问题,能将无规律的原始数据进行生成得到规律性较强的生成序列,易于检验 但缺点是只适合中短期的预测,且只适合指数级增长的 ...

  6. logistic回归梯度上升优化算法

    # Author Qian Chenglong from numpy import * from numpy.ma import arange def loadDataSet(): dataMat = ...

  7. 用C结构体来实现面向对象编程,ti xDAIS标准算法就这么搞的(1)

    用C结构体来实现面向对象编程,ti xDAIS标准算法就这么搞的. 测试代码如下: #include <stdio.h> #include <stdlib.h> #includ ...

  8. 第 1 章 第 1 题 高级语言的排序问题 C++标准算法实现

    问题分析 依题意,所需程序不用过多考虑效率且暗示使用库,自然想到用高级语言实现(个人选择C++).可用顺序容器暂存数据,用标准算法解决排序问题. 代码实现 #include <iostream& ...

  9. 【计算机视觉】黄金标准算法Gold Standard algorithm

    前言 最近有关于3DMM的内容,博主也只是看了个大概,并没有深入了解算法的实现原理和过程.昨天实习生问关于黄金标准算法的推导,博主也就参考一些资料熟悉了这个算法的实现过程.不太了解使用这个算法的前因后 ...

随机推荐

  1. bzoj 2763: [JLOI2011]飞行路线 -- 分层图最短路

    2763: [JLOI2011]飞行路线 Time Limit: 10 Sec  Memory Limit: 128 MB Description Alice和Bob现在要乘飞机旅行,他们选择了一家相 ...

  2. Tasker, Android系统增强神器

    Tasker是一个让系统根据用户定制的”配置文件”(Profiles),在特定的”背景”下(Contexts),执行指定”任务”(Tasks)的软件, 除此之外,它还提供”可供点击”的(Clickab ...

  3. 探究rh6上mysql5.6的主从、半同步、GTID多线程、SSL认证主从复制

    http://407711169.blog.51cto.com/6616996/1203973/

  4. linux下svn的用法

    转载:http://blog.chinaunix.net/uid-22150747-id-189264.html 1.将文件checkout到本地目录 svn checkout path(path是服 ...

  5. VMware 11.0 简体中文版|附永久密钥

    20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送) 国内私募机构九鼎控股打造,九鼎投资是在全国股 ...

  6. PHP抓取页面中的邮箱

    <?php $url='http://www.cnblogs.com/tinyphp/p/3234926.html'; //当页已留邮箱 $content=file_get_contents($ ...

  7. Android学习之Http使用Post方式进行数据提交(普通数据和Json数据)

    转自:http://blog.csdn.net/wulianghuan/article/details/8626551 我们知道通过Get方式提交的数据是作为Url地址的一部分进行提交,而且对字节数的 ...

  8. 深度学习Deep learning

    In the last chapter we learned that deep neural networks are often much harder to train than shallow ...

  9. Python 字符串前面加'r'

    在Python的string前面加上‘r’, 是为了告诉编译器这个string是个raw string,不要转意backslash '\' . 例如,\n 在raw string中,是两个字符,\和n ...

  10. add-strings

    https://leetcode.com/problems/add-strings/ package com.company; import java.util.LinkedList; import ...