偏最小二乘法的原理与实现

近几年来,机器学习在各个领域都有不错的表现,在生物信息领域也有相关的应用。然而,在诸如基因组学、转录组学、蛋白组学以及代谢组学等高通量数据的一大特点是特征量多、样本数少。

以转录组数据为例,特征量个数通常为基因个数,达到万级,而样本数一般是几十到几百例。当我们基于转录组数据去研究基因表达与其他性状之间的联系时,对于这种自变量大于观察个数的情况,无法直接使用传统的统计分析模型。这时,有一种相当有效的方法—偏最小二乘回归

(partial least squares regreesion, PLS)

接下来我们对于这种方法的原理进行介绍,并说明如何实现这种方法的计算,以及在实例中的应用。

背景介绍

在实际问题中,经常遇到需要研究两组多重相关变量间的相互依赖关系,并研究用 一组变量(常称为自变量或预测变量)去预测另一组变量(常称为因变量或响应变量), 除了最小二乘准则下的经典多元线性回归分析(MLR),提取自变量组主成分的主成分回归分析(PCA)等方法外,还有近年发展起来的偏最小二乘(PLS)回归方法

偏最小二乘回归提供一种多对多线性回归建模的方法,特别当两组变量的个数很多,且都存在多重相关性,而观测数据的数量(样本量)又较少时,用偏最小二乘回归建立的模型具有传统的经典回归分析等方法所没有的优点。

偏最小二乘回归分析在建模过程中集中了主成分分析,典型相关分析和线性回归分析方法的特点。因此,在分析结果中,除了可以提供一个更为合理的回归模型外,还可以同时完成一些类似于主成分分析和典型相关分析的研究内容,提供更丰富、深入的一些信息。

基本原理

PLS方法是建立在X(自变量)与Y(因变量)矩阵基础上的双线性模型,可以看做是由外部关系(即独立的X块和Y块) 和内部关系(即两块间的联系) 构成。

建立自变量的潜变量关于因变量的潜变量的线形回归模型,间接反映自变量与因变量之间的关系。该算法在建立回归的过程中,既考虑了尽量提取Y和X中的主成分(PCA—Principal Component Analysis,主成分分析的思想),又考虑了使分别从X和Y提取出的主成分之间的相关性最大化(CCA的思想)。

简单的说,PLS是PCA、CCA和多元线性回归这三种基本算法组合的产物。具体计算方法可以通过下面的程序来了解。

算法实现 (matlab)

 1function [so,Rc,Rp,R,RMSEC,RMSEP]=PLS(pz,verifydata) 2%函数假设数据集的最后一项是因变量,且只有这一个因变量 3%输入文件名、自变量个数和因变量个数 4%数据加载及其标准化 5 6mu=mean(pz);sig=std(pz);    %求均值和标准差 7rr=corrcoef(pz);            %求相关系数矩阵 8data=zscore(pz);            %数据标准化,变量记做 X*和 Y* 9x0=pz(:,1:end-1);y0=pz(:,end);       %原始的自变量和因变量数据10e0=data(:,1:end-1);f0=data(:,end);   %标准化后的自变量和因变量数据11n=size(e0,2); m=1;1213num=size(e0,1);             %求样本点的个数14chg=eye(n);                 %w 到 w*变换矩阵的初始化15for i=1:n16    %以下计算 w,w*和 t 的得分向量,17    matrix=e0'*f0*f0'*e0;18    [vec,val]=eig(matrix);      %求特征值和特征向量19    val=diag(val);              %提出对角线元素,即提出特征值20    [val,ind]=sort(val,'descend');21    w(:,i)=vec(:,ind(1));       %提出最大特征值对应的特征向量22    w_star(:,i)=chg*w(:,i);     %计算 w*的取值23    t(:,i)=e0*w(:,i);           %计算成分 ti 的得分24    alpha=e0'*t(:,i)/(t(:,i)'*t(:,i));      %计算 alpha_i 25    chg=chg*(eye(n)-w(:,i)*alpha');         %计算 w 到 w*的变换矩阵  26    e=e0-t(:,i)*alpha';         %计算残差矩阵27    e0=e;28    %以下计算 ss(i)的值29    beta=t\f0;                  %求回归方程的系数,数据标准化,没有常数项30    cancha=f0-t*beta; %求残差矩阵31    ss(i)=sum(sum(cancha.^2)); %求误差平方和32    %以下计算 press(i)33    for j=1:num34        t1=t(:,1:i);f1=f0;35        she_t=t1(j,:);she_f=f1(j,:); %把舍去的第 j 个样本点保存起来36        t1(j,:)=[];f1(j,:)=[]; %删除第 j 个观测值37        beta1=[t1,ones(num-1,1)]\f1; %求回归分析的系数,这里带有常数项38        cancha=she_f-she_t*beta1(1:end-1,:)-beta1(end,:); %求残差向量39        press_i(j)=sum(cancha.^2); %求误差平方和40    end41    press(i)=sum(press_i);42    Q_h2(1)=1;43    if i>144        Q_h2(i)=1-press(i)/ss(i-1); end45    if Q_h2(i)<0.097546            fprintf('提出的成分个数 r=%d',i); 47    end48end4950beta_z=t\f0;                         %求 Y*关于 t 的回归系数51xishu=w_star*beta_z;                 %求 Y*关于 X*的回归系数,每一列是一个回归方程52mu_x=mu(1:n);mu_y=mu(n+1:end);       %提出自变量和因变量的均值53sig_x=sig(1:n);sig_y=sig(n+1:end);   %提出自变量和因变量的标准差54ch0=mu_y-(mu_x./sig_x*xishu).*sig_y; %计算原始数据回归方程的常数项55for i=1:m56    xish(:,i)=xishu(:,i)./sig_x'*sig_y(i); %计算原始数据回归方程的系数57end58sol=[ch0;xish];                     %显示回归方程的系数,每一列是一个方程,每一列的第一个数是常数项59so=sol';6061%验证精度Rc值(数据集)62avgactual0=mean(y0);63for i=1:num64    %y_(i)=sum(x0(i,:).*so(2:end))+so(1);65    y_(i)=x0(i,:)*so(2:end)'+so(1);66end67Rc=sqrt(1-sum((y0-y_').^2)/sum((y0-avgactual0).^2));68RMSEC=sqrt(sum((y0-y_').^2)/num);6970%验证精度Rp值(验证集)71x00=verifydata(:,1:end-1);y00=verifydata(:,end);       %验证集原始的自变量和因变量数据72numv=size(x00,1);             %求样本点的个数7374avgactual=mean(y00);75for i=1:numv76    y(i)=sum(x00(i,:).*so(2:end))+so(1);77end78Rp=sqrt(1-sum((y00-y').^2)/sum((y00-avgactual).^2));79RMSEP=sqrt(sum((y00-y').^2)/numv);80R=Rc+Rp;

上述的算法提供了具体的PLS回归的计算过程。实际应用中,matlab提供可用于计算PLS回归的函数plsregress,可以方便使用。

调用的命令:[XL,YL] = plsregress(X,Y,ncomp),表示使用ncomp个PLS成分来计算因变量Y相对自变量X的变化。

欢迎关注我们公众号,一起学习更多数据分析的方法~

作者:Resther

审稿:童蒙

编辑:angelica

精彩继续-往期回顾

如何使用软件自动对变异进行ACMG打分

从生到死,是什么驱动了染色质的分相变化?

生信老司机教你做基因组项目

神灯宝典之PB三代重测序分析实录(一)

转录组数据定量归一化

关系模式最小依赖集怎么求_偏最小二乘法的原理与实现相关推荐

  1. 1-3NF,BCNF,最小依赖集,模式分解,判断是否为无损分解

    1NF----表中每一列都不能再分解了(stomic) 2NF----满足1NF,并且非主键属性不能不分依赖于主键 e.g A B C D E  其中A和B为主键,如果A能单独决定C的属性,那么就不符 ...

  2. 根据函数依赖求最小依赖集

    [例1]关系模式R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D},求F的最小依赖集. 第一步:F右边单一化 得到F1={A→B,A→C,ABD→C,ABD→ ...

  3. 求关系模式r的所有候选码_关系数据理论基础概念

    数据库系统最基础的就是关系数据理论这一块,简单来讲,为了数据使用更加高效.快捷,必须用规范化理论对关系模式进行改造.不多说了,直接列重点: 1.关系模式的表示R<U,F>,其实R指的是关系 ...

  4. 数据库求最小函数依赖集

    [例1]关系模型R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D},求F的最小依赖集. 第一步:将F中所有函数依赖的右边化为单一属性.得到F1={A→B,A→ ...

  5. 【数据库】 关系模式的规范化理论----一文让你轻松理解其中奥秘

    文章目录 关系模式设计中存在的问题 关系的形式化定义 数据依赖的基本概念 函数依赖 非平凡函数依赖.平凡函数依赖 完全函数依赖和部分函数依赖 传递函数依赖 关键字和超关键字 数据依赖的公理系统 函数依 ...

  6. 数据库期末考试预习之候选码,最小函数依赖集,3NF分解算法,判断第几范式

    一.候选码 参考链接:1 1.定义: 候选码(超级码)就是可以被选为主码的属性或属性组.当一个关系有N个属性或属性组可以唯一标识时,则说明该关系有N个候选码,可以选定其中一个作为主码. 候选码定义: ...

  7. 函数依赖集闭包、属性集闭包、超键、候选键和最小函数依赖集的求法。

    目录 关系模式 函数依赖的闭包 属性集闭包 码 求候选键算法 最小函数依赖集 关系模式R(U,D,DOM,F) R:关系名,符号化的元组定义 U:一组属性 D:属性组U中的属性所来自的域 DOM:属性 ...

  8. 关系数据库理论之最小函数依赖集

    文章目录 前言 为什么需要最小函数依赖集 闭包 最小函数依赖集 定义 解释 算法 举例 写在最后 前言 在本文中,会介绍为什么要引入最小函数依赖集,最小函数依赖集是什么,以及如何求最小函数依赖集. 为 ...

  9. 关于数据库题:设有一个记录各个球队队员每场比赛进球数的关系模式 R(队员编号,比赛场次,进球数,球队名,队长名)如果规定每个队员只能属于一个球队,每个球队只有一个队长。问题详解

    首先 做这题感觉与本文给的表格联系不大,故直接来解题. 1) 写出关系模式R的基本函数依赖和主码. Q1:队员编号->球队名:球队名->队长名:(队员编号,比赛场次)->进球数 L: ...

最新文章

  1. 从find_vma和find_vma_prev看内核
  2. str函数和repr函数的区别
  3. 【⛸️拒绝手滑,我们都是稳准狠⛸️】C++のmemset函数的小探究
  4. 给你一个能生成1到5随机数的函数,用它写一个函数生成1到7的随机数
  5. 最新Django2.0.1在线教育零基础到上线教程(九)
  6. C#中string.Concat方法的使用
  7. url存在宽字节跨站漏洞_5分钟速览丨常见的Web安全漏洞及测试方法
  8. 安装了虚拟机后mysql用不了_在虚拟机上安装mysql,安装好了并且初始化之后,一直无法启动mysql如何解决?...
  9. 32位crc校验码程序_基于FPGA的CRC校验码生成器设计
  10. 数据是指在计算机科学中能够被,5. 数据在 计算机科学中 是指所有能输入到计算机并 被计算机程序处理的符号的总称。( )...
  11. Java学习心得(集合、泛型)
  12. linux播放csf文件
  13. php私有云盘,教你搭建个人/企业私有云盘-kodexplorer
  14. 减少USB 1.1 2.0 端口驱动程序延时_旅行伴侣 紫米65W单USB-C口PD快充头 双十一不可错过数码单品好物...
  15. tcl 950 android 7,TCL 950测评:商务旗舰手机界的一股清流
  16. a[i]-‘0‘与(int)a[i]区别
  17. 电影暗杀了一只巨可爱的猫[转帖]
  18. 浅谈三极管、运放、MOS管驱动 的常见电路
  19. 用html画布做扇形,jquery canvas 画扇形
  20. lx2160a - uart2(ttyAMA1)调试

热门文章

  1. STM32网络数据传输,实际项目中实现,以及网络卡死问题的解决
  2. 陀螺产业区块链第十三季 | 安徽省颍上县农产品追溯体系
  3. 7家公司拿了5个offer,无非就是问源码、分布式微服务这些
  4. 大白话聊OSI七层模型和TCP/IP四层模型
  5. 微软2016校园招聘在线笔试 B Professor Q's Software [ 拓扑图dp ]
  6. 一个对dispatch_group的改进:TaskHarmonizer
  7. 机器学习 | 基于脑电图对建筑工人的工作负荷检测
  8. 云计算原理与实践 第三章、云计算架构
  9. 认知神经心理学_使用认知心理学解释神经网络
  10. 5个Dubbo面试题,含金量超高!