偏最小二乘回归:
我将围绕结构方程建模(SEM)技术进行一些咨询,以解决独特的业务问题。我们试图识别客户对各种产品的偏好,传统的回归是不够的,因为数据集的高度分量以及变量的多重共线性。PLS是处理这些有问题的数据集的强大而有效的方法。
主成分回归是我们将要探索的一种选择,但在进行背景研究时,我发现PLS可能是更好的选择。我们将看看PLS回归和PLS路径分析。我不相信传统的扫描电镜在这一点上是有价值的,因为我们没有良好的感觉或理论来对潜在的结构做出假设。此外,由于数据集中的变量数量众多,我们正在将SEM技术扩展到极限。Haenlein,M&Kaplan,A.,2004年,“初步指南偏最小二乘分析”,Understanding
Statistics,3(4),283-297中可以找到关于这个限制的有趣讨论。
[1]“diesel”“turbo”“two.doors”“hatchback”“wheel.base”
[6]“length”“width”“height”“curb.weight”“eng.size”
[
11]“马力”“峰值.rpm”“价格”“符号”“city.mpg”
[16]“ highway.mpg ”
这些数据有16个变量和30个观测值。它包含在plsdepot包中。
关于PLS回归的一个有趣的事情是你可以有多个响应变量,plsdepot可以适应这种类型的分析。在这种情况下,我只想分析一个Y变量,那就是价格。
该包的一个怪癖是你需要将预测变量和响应分开,即将响应变量列放在数据帧的末尾。要做到这一点,我只是运行这个优雅的代码,我找到了某处...
#把变量价格(第13列)放在最后
pls1 $ x.scores X分数(T分量)
$ x.loads X-loadings
$ y.scores
Y-scores(U-components)
$ y.loads Y-loadings
$ cor.xyt得分相关性
$ raw.wgs原始权重
$ mod.wgs修改权重
$ std.coefs标准系数
$ reg.coefs常规系数
$ R2 R平方
$ R2Xy解释Xy的方差T
$ y.pred y-预测
$ resid 残差
$ T2 T2经济系数
Q2第二季度交叉验证这个包中有很多,我强烈建议阅读优秀的教程来了解更多信息。
>#相关图; 注意什么与价格高度相关
#plot每个观测预测与实际
我们将不得不继续查看不同数量的组件以确定最佳模型,并从实际角度查看潜在变量是否有意义。
主成分(PC)来自预测变量。这带来了许多优点:
预测因子的数量实际上没有限制。 无论您处理多少个变量,PCA都会执行分解。较简单的模型如OLS不能处理比观测更多的预测因子
相关或有噪音的预测因素不会破坏回归拟合。通过扩大解空间,即不稳定系数估计,共线性是OLS的一个问题 。PCA将总是从一组变量中产生少量不相关的PC,相关或不相关。另一方面,在一定程度上,无信息预测因素不会影响性能。
电脑可能带来最大的差异。在任何预测模型中,具有零或接近于零的方差的预测变量经常构成问题并且表现为第二次截距。在压缩过程中,PCA将会发现数据点分布最多的投影,从而有助于从随后的OLS中学习。
然而,在许多情况下,它更加明智地进行类似于PCA的分解,但是构建最能解释响应的PC,无论是定量(回归)还是定性(分类)。这是偏最小二乘法(PLS)的概念,其PC更多地被指定为潜变量(LV),但根据我的理解,这两个术语可以互换使用。
我们将 在UCI机器学习库上托管的Arcene数据集上执行PLS-DA, 其中包含100个观察值和10,000个解释变量(
)以诊断血清样本中的癌症。从10,000个特征中,7,000个包含不同的质谱(MS)峰,每个峰确定蛋白质的水平。出于某种原因,贡献者增加了3000个随机变量,可能用于测试抗噪声的鲁棒性(查看上面链接中的更多信息)。
让我们开始使用R
对于预测建模,我总是使用caret 包,它在现有模型包上构建并采用单一语法。此外,插入符号具有无数的功能,处理预处理,插补,总结,绘图等等,我们将很快看到第一手资料。
出于某种原因,在加载数据集时会出现一个空列,所以我添加了colClasses参数来摆脱它。加载数据集后,请注意,大多数蛋白质的水平都是右倾斜的,这可能是一个问题。然而,这项研究的作者进行了详尽的预处理,并且研究这将花费太长时间。癌症/非癌症标签(编码为-1
/ 1)存储在不同的文件中,因此我们可以直接将其附加到完整的数据集,然后使用公式语法来训练模型。
我们终于可以搜索缺失值(NA)。如果出现这些情况,则需要某种形式的归责
- 情况并非如此。调用 任何(is.na(arcene))应该会提示一个FALSE。
所以现在最大的问题是:
我们可以根据他/她的血清MS曲线预测患者是否生病?
哪些蛋白质/
MS峰可以最好地区分患病和健康的患者?
关于预处理,我们将删除零方差预测变量,并使用preProc参数按照确切的顺序对所有剩余的预测变量进行居中和缩放。考虑样本的大小(n=
100),我会选择10倍重复的5倍交叉验证(CV) - 大量的重复可以补偿由于褶皱数量减少引起的高度变化 -
总共可以估计50次的精确度。许多专家建议在性能不可分辨时采用较简单的模型,因此我们将应用“一个SE”规则,该规则选择与最优模型中的标准误差(SE)内的平均交叉验证准确度最小的复杂模型。最后,我们必须为调整参数定义一系列值,即LV的数量。在这种特殊情况下,我们将考虑所有型号为1-20
LV的型号。
该图描绘了CV曲线,我们可以从中学习用不同数量的LV(x轴)训练的模型获得的平均准确度(y轴,%)。请注意,在1-5个LV模型中,准确度的快速变化。尽管具有六个LV的模型具有最高的平均精确度,但在调音台中调用mod1会告诉您,由于“一个SE”规则,所选模型具有五个LV(准确度为80.6%)。
现在我们将比较我们的PLS-DA和PCA还原步骤(PCA-DA,如果存在这种情况)之后的PCR -
线性判别分析(LDA)的分类器同系物。请注意,PCA预处理也在preProc参数中设置。我们也可以尝试一些更复杂的模型,比如随机森林(RF)。我不会详细讨论RF的工作原理和参数设置,因为今天它将是纯粹的说明。请注意,RF相对需要很长时间(从2012年开始,我的8Gb
MacBook Pro中约需15分钟)。像往常一样,简单的对象调用会显示相应简历的摘要。
最后,我们可以比较PLS-DA,PCA-DA和RF的准确性。我们将使用caret ::
resamples编译这三个模型,借用ggplot2的绘图功能比较三种情况下来自最优交叉验证模型的50个准确性估计值。
很显然,长时间的射频运行并没有转化为出色的表现,恰恰相反。尽管平均而言,所有三个模型都具有相似的性能,但RF显示的准确度差异更大,如果我们寻求稳健的模型,这当然是一个值得关注的问题。在这种情况下,PLS-DA和PCA-DA表现出最好的表现(63-95%的准确度),并且任一模型都能很好地诊断新血清样品中的癌症。
总之,我们将从PLS-DA和PCA-DA两个方面确定使用投影中可变重要性(ViP)最佳诊断癌症的十种蛋白质。使用 varImp,这是以相对级别给出的(缩放到范围0-100)。
抛开特殊情况,PCA-DA使用多少台PC?通过调用 mod2
$ preProcess,我们知道“PCA需要82个组件来捕获95%的变化”。这是因为插入符号中的PCA预处理功能默认情况下会使用尽可能多的PC来覆盖95%的数据差异。所以,一方面我们有一个带有五个LV的PLS-DA,另一方面有一个带有82个PC的PCA-DA。这不仅使得PCA-DA价格低廉,而且在解释层面上显得神秘。
上面的PLS-DA
ViP图清楚地区分了V1184与所有其他蛋白质。这可能是一个有趣的癌症生物标志物。当然,为了提供可靠的诊断工具,必须进行许多其他测试和模型。我的目标只是介绍PLS和PLS-DA。
大数据部落——中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务
统计分析和数据挖掘咨询服务
:y0.cn/teradat(咨询服务请联系官网客服)
QQ:3025393450
【服务场景】 科研项目;
公司项目外包 ;线上线下一对一培训
;数据采集;学术研究;报告撰写;市场调查。
【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询服务
分享最新的大数据资讯,每天学习一点数据分析,让我们一起做有态度的数据人
微信客服号:lico_9e
QQ交流群:186388004
欢迎关注微信公众号,了解更多数据干货资讯!