正则化线性模型+岭回归+lasso回归+弹性网络+糖尿病数据案例分析

1、岭回归+lasso回归+弹性网络

岭回归的由来以及效果在上一篇博客中已经介绍过了,这里用另一种方法介绍:
在原损失函数中添加惩罚项,控制拟合参数的大小,即添加正则项。使正则项和原最小二乘法之和达到最小时,求得的参数为最后解。
正则化线性模型+岭回归+lasso回归+弹性网络+糖尿病数据案例分析_第1张图片
lasso添加的正则项稍有不同,弹性网络则结合了lasso和岭回归。
正则化线性模型+岭回归+lasso回归+弹性网络+糖尿病数据案例分析_第2张图片j

岭回归:

在这里插入图片描述

lasso:

正则化线性模型+岭回归+lasso回归+弹性网络+糖尿病数据案例分析_第3张图片

弹性网络:

在这里插入图片描述

小结:

岭回归比较常用,当自变量较多时,而有用的变量可能较少时,lasso和弹性网络更常用。其中弹性网络应用更为广泛,很多时候效果更好。

糖尿病数据案例分析

这里仅仅展现lasso部分:

library("lars")
data= data.frame(data(diabetes))
diabetes
lar1 = lars(diabetes$x2,as.matrix(diabetes$y))
summary(lar1)
plot(lar1)
lar1$Cp
min(lar1$Cp)
which.min(lar1$Cp)

cv1= cv.lars(diabetes$x2,as.matrix(diabetes$y),K=10)
cv1$index
cv1$cv
cv1$mode#lasso方法

index1 = cv1$index[which.min(cv1$cv)]
coef = coef.lars(lar1,mode="fraction",s=index1)
coef[coef!=0]

coef1 = coef.lars(lar1,mode="step",s=15)
coef1[coef1!=0]

library("msgps")
w=read.csv("diabetes.csv")[,11:75]
y=w[,1];x2=as.matrix(w[,-1])
al=msgps(x2,y,penalty="alasso",gamma=1,lambda=0)
summary(al);plot(al)

正则化线性模型+岭回归+lasso回归+弹性网络+糖尿病数据案例分析_第4张图片

你可能感兴趣的:(R语言,案例分享)