r语言 计算模型的rmse_R语言实现LASSO回归模型

3df574cbd82e4887bf19ff3d92892baa.gif

我们知道广义线性模型包括了一维连续因变量、多维连续因变量、非负次数因变量、二元离散因变量、多元离散因变等的回归模型。然而LASSO对以上的数据类型都适合,也可以说LASSO 回归的特点是在拟合广义线性模型的同时进行变量筛选(variable selection)和复杂度调整(regularization)。变量筛选是指不把所有的变量都放入模型中进行拟合,而是有选择的把变量放入模型从而得到更好的性能参数。复杂度调整是指通过一系列参数控制模型的复杂度,从而避免过度拟合(Overfitting)。总的来说LASSO对数据的要求很低。对于线性模型来说,复杂度与模型的变量数有直接关系,变量数越多,模型复杂度就越高。 更多的变量在拟合时往往可以给出一个看似更好的模型,但是同时也面临过度拟合的危险。此时如果用全新的数据去验证模型(validation),通常效果很差。 一般来说,变量数大于数据点数量很多,或者某一个离散变量有太多独特值时,都有可能过度拟合。

       今天我们给大家介绍下在R语言如何实现LASSO模型构建,其中有两个包是可以实现的(glmnet和lars)。因为glmnet涉及范围涉及广义线性模型,我们就主要介绍下lars是怎么实现LASSO的。包的安装我就不多讲了,install.pacakges(),你懂的。

       首先我们看下其函数lars()。该函数提供了通过回归变量x和因变量y求解其回归模型。

r语言 计算模型的rmse_R语言实现LASSO回归模型_第1张图片

其中主要的参数:

1. type 模型的类型。Lar-最小角回归,forward.stagewise-无穷小逐步回归,stagewise-逐步回归。

2. normalize 表示是否对变量进行归一化,当为TRUE时,程序将对x和y进行L2正则化。

3. intercept表示是否对变量进行中心化,当为TRUE时,程序将对x和y分别减去其均值。

diabetes数据中含有三个变量x,x2,y,其中x是一个有422X10维的矩阵,y是一422维个向量 ,x2是由x得到的 422X64维矩阵。

示例程序:

library(lars) 

data(diabetes)  

attach(diabetes)

object1

plot(object)

r语言 计算模型的rmse_R语言实现LASSO回归模型_第2张图片

图中横坐标代表的beta值或者步数,竖坐标代表的变量的参数。

接下来就是模型的优化,用到的函数是cv.lars()。其主要的功能是确定最优解的步数,或者beta值。

r语言 计算模型的rmse_R语言实现LASSO回归模型_第3张图片

其中主要的参数:

K 交叉验证的次数,默认10倍交叉验证。

type同lars指的模型的类型。

mode 指用到的参数指标。step即按步数step去选择所需的参数,fraction即按照path中的横坐标|beta|/max|beta|去选择所需变量,fraction默认为0:100:1即 index=seq(from=0,to=1,length=100)。

程序实例:

cv_sol

 均方误差MSE分析图为:

r语言 计算模型的rmse_R语言实现LASSO回归模型_第4张图片

然后就是获取最优最优回归系数(使得均方误差MSE最小)。

fra=cv_sol$index[which.min(cv_sol$cv)]

接下来就是通过上面得到的fra,获取对应的参数值

object$beta[fra,]

r语言 计算模型的rmse_R语言实现LASSO回归模型_第5张图片

最后就是模型的预测功能,我们用到的函数是predict。

r语言 计算模型的rmse_R语言实现LASSO回归模型_第6张图片

其主要参数:

object表示我们通过lars计算得到的包含了解路径信息的返回参数;

type当type为"fit"时, 可以给定一个新预测样本自变量数据,则该函数返回通过lars回归模型得到的预测值;当type为"coefficient"时,则不需要输入新数据, 该函数返回模型的回归系数相当于cv.lars。

mode表示我们输入的模型的参数类型,同cv.lars函数。

S表示通过cv.lars确定的最优解步数或者beta值。

示例程序:

res=predict(object,newx=x[1:5,],s=fra,type="fit", mode="step")

r语言 计算模型的rmse_R语言实现LASSO回归模型_第7张图片

如上图得到我们想要的预测结果。

欢迎大家学习交流!

r语言 计算模型的rmse_R语言实现LASSO回归模型_第8张图片

r语言 计算模型的rmse_R语言实现LASSO回归模型_第9张图片

你可能感兴趣的:(r语言,计算模型的rmse,r语言glmnet,r语言logistic回归)