R与线性回归模型

PCR与PLSR

PCR是主成分回归,PLSR是偏最小二乘回归
PLSR的诞生主要是解决在多元回归里面,决策变量之间出现共线性的问题

那么偏最小二乘适用的条件:
1.决策变量间存在多重共线性
2.决策变量的观测值小于决策变量的个数(欠拟合)

PLSR的大致原理和PCA有一些类似:
1.对于共线性严重的多元回归方程,在有一定相关性的决策变量(x1,x2.....xp)来说,我们将这些决策变量线性表示为t1;

2.对于响应变量(y1,y2.....yq),我们同样将响应变量线性表示为u1

3.其中t1和u1称为成分,类似于主成分分析,即分别对决策变量和响应变量提取主成分;然后根据成分t1和u1提取贡献最大的成分,然后分别对决策变量和响应变量做线性回归(类似于主成分分析)

4.根据相应的data表示出t1与u1的关系,最后转换成x与y的关系

而PCR是在PCA分析中引入回归:
1.假设有共线性比较严重的多元回归方程

2.将原有的自变量指标线性表示为综合型大变量

3.将新的综合型大变量作为新的自变量进行回归分析

偏最小二乘法集成了主成分分析,典型相关分析,线性回归的特点
而偏最小二乘做回归依然保留决策变量和响应变量之间的关系;主成分回归则是将综合型大变量组成新的决策变量与原来的响应变量做回归

R:

library(AppliedPredictiveModeling) 
data(solubility) 
#建模
plsFit <- plsr(Solubility ~ ., data = trainingData)
#预测
predict(plsFit, solTestXtrans[1:5,], ncomp = 1:2) 
set.seed(100) 
plsTune <- train(solTrainXtrans, solTrainY, + method = "pls", 
## The default tuning grid evaluates  
## components 1... tuneLength 
tuneLength = 20, 
trControl = ctrl, 
preProc = c("center", "scale"))

惩罚模型

1.L2范数


其中βj是指多元线性回归的各项系数
λ是惩罚系数

我们加惩罚项的目的是为了平衡模型的方差和偏倚,这里的方差是指预测值(模型所计算得)的方差(预测值与预测值期望的差异),由于训练集较多,所以不同训练集训练的模型计算的对应的预测值会有偏差;这里的偏倚是指预测值(模型所计算得)期望与真实值的差异
我们往往牺牲模型的偏倚来缩小模型方差
下面这幅图说明了惩罚系数的选择,纵坐标表示各项的系数βj,横坐标表示惩罚系数λ



如果共线性严重的项,随着惩罚系数的变化,该项对于的系数β会变为0,但是λ越大,会使所有项的系数β都变成0,那么如何选取合适的惩罚系数呢?
一种是交叉验证选取,一种是当各项系数都变化平稳时,对于的λ值即是。



这幅图描述了λ和RMSE的关系,当λ进行变化是RMSE也进行了变化,其中RMSE为均方根误差,表述的是预测值与真实值的偏差平方除以观测次数n

2.L1范数


同样的

这里的纵坐标是各项系数βj,横坐标是fraction,这个值增加,则惩罚系数λ减少,其他的和L2范数一致

elastic net


将L1和L2范数进行整合

R:

ridgePred <- predict(ridgeModel, newx = as.matrix(solTestXtrans), s = 1, mode = "fraction",type = "fit") 

 ridgeGrid <- data.frame(.lambda = seq(0, .1, length = 15)) > set.seed(100)  
ridgeRegFit <- train(solTrainXtrans, solTrainY, 
method = "ridge",  
## Fir the model over many penalty values 
tuneGrid = ridgeGrid, 
trControl = ctrl, 
## put the predictors on the same scale 
preProc = c("center", "scale"))

参考:https://blog.csdn.net/revitalise/article/details/82530693

你可能感兴趣的:(R与线性回归模型)