【原创】R语言多元线性回归特征降维:主成分回归和偏最小二乘案例分析报告附代码数据

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

主成分分析(Principal Component Analysis, PCA)

一个优秀的模型应该是用尽可能少的特征来涵盖尽可能多的信息。对于多元线性回归模型,除了对全部特征进行筛选和压缩——这些都是针对原特征本身,那么是否可以把多个特征组合成少数的几个新特征,使模型更加简洁?特别是多个特征之间往往还存在多重共线性关系。

主成分分析的核心思想就是降维,把高维空间上的多个特征组合成少数几个无关的主成分,同时包含原数据中大部分的变异信息。举个例子,在二维平面中,如果大部分的点都在一条直线附近,是不是就可以直接用这条直线当作一维坐标轴来反映原始数据?在三维空间中,如果大部分的点都在一个平面附近,是不是就可以直接用这个平面当作二维平面来反映原始数据?

以上概念中的变异信息就用方差来衡量,第一主成分是高维空间上的一个向量,所有的点沿着这条线波动最大,或者说所有的点到直线的距离的平方和最小。如下图所示,所有的点沿着绿色直线的波动最大,它就代表着第一主成分向量。

主成分分析几何意义

有了第一主成分,还可以依次往后选择主成分,各主成分之间是相互正交的向量。如下左图所示,右图是左图的旋转,以第一主成分作为x轴,第二主成分作为y轴与之垂直。

第一主成分与第二主成分

以上是主成分的几何意义,那么它的数学意义是什么?如何去求解主成分向量?

首先,我们定义主成分是原特征的线性组合,即:

主成分定义

找到一组Φ(其平方和为1),使Z1的方差最大,它的优化问题变成:

主成分优化目标

第一主成分确定之后,如果是二维空间那么第二主成分就可以通过正交关系直接确定;对于高维空间,一个向量的正交向量可以有无数个,则在其正交向量中继续优化上式至最大值;之后的主成分依次类推。

以下以美国的犯罪记录数据为例,对特征进行PCA:

> library(ISLR)

> apply(USArrests,2,mean) # 各变量均值差异很大

Murder Assault UrbanPop Rape

7.788170.76065.54021.232

> apply(USArrests,2,var) # 各变量方差差异也很大

Murder Assault UrbanPop Rape

18.970476945.16571209.5187887.72916

>

> ## 必须要对变量进行标准化,否则主成分就由Assault一个变量决定

>

> pr.out = prcomp(USArrests,scale. = T)

> names(pr.out)

[1] "sdev""rotation""center""scale""x"

> pr.out$center # 标准化之后的均值

主成分分析双坐标图

这张图是主成分分析的双坐标图,略复杂。这里解释一下:这个图是二维的,所以它只展示第一和第二主成分,PC1和PC2侧的坐标轴(即矩形下方和左方两个)映射的是主成分得分,而上侧和右侧的两个坐标轴(即刻度是红色的)映射的主成分负荷。图中每一个黑色的单词代表一个观测数据,它的位置对应着该观测数据在第一和第二主成分上的得分或负荷。红色的箭头是各个特征在第一和第二主成分上的负荷向量,该向量在右上侧的坐标系下的投影即为主成分负荷。

从这张图中能看出什么?

•Assault、Murder、Rape这三个特征在第一主成分负荷向量上的权重大致相同,而UrbanPop的权重较小;•UrbanPop在第二主成分负荷向量上的权重较大,而其他三个特征权重较小;

•三个与犯罪相关的变量位置较近,相关性强;UrbanPop与其他三个变量相关性较弱。

接下来就看各个主成分所占方差比(即解释数据变异的程度),来确定选择几个主成分。

> pr.var = pr.out$sdev ^ 2# 样本在四个主成分的方差

> pr.var

[1] 2.48024160.98976520.35656320.1734301

> pve = pr.var/sum(pr.var) # 各主成分的方差解释比例

> pve # 第一主成分解释了数据62%的方差,第二主成分解释了24.7%的方差

[1] 0.620060390.247441290.089140800.04335752

>

> plot(pve,xlab="Principal Component",ylab = "Proportion of Variance Explained",ylim = c(0,1),type="b")

> plot(cumsum(pve),xlab="Principal Component",ylab = "Cumulative Proportion of Variance Explained",ylim = c(0,1),type="b")

主成分解释方差比

主成分累积解释方差比

由图中可见,选择前两个或前三个主成分,已经足以解释数据大部分的变异信息了。

主成分回归(Principal Component Regression, PCR)

所谓主成分回归,就是基于以筛选出的主成分作为特征来构建回归模型。这里依然以Hitters数据集为例,构建PCR模型。library(ISLR)library(pls)

Hitters = na.omit(Hitters)

x = model.matrix(Salary~.,Hitters)[,-1]

相关文档
最新文档