机器学习——岭回归

R语言 Haran 8年前 (2016-09-17) 4679次浏览 0个评论
文章目录[隐藏]

机器学习——岭回归         分别使用岭回归和Lasso解决上面回归问题
当回归存在多重共线性的时候,可以使用最小二乘,岭回归,Lasso回归, 但当X的秩不存在的时候或变量的数量少于样本的数量是,作为无偏差估计的最小二乘就不适用,岭回归和Lasso回归更合适。

过程:
1、加载数据做中心化后做线性回归:
机器学习——岭回归     可以看到线性回归方程很不显著,存在多重共线性,下面做多重共线性检验:

机器学习——岭回归       数值为2009,远大于1000,存在严重多重共线性

2、下面做岭回归
机器学习——岭回归

机器学习——岭回归
从上面可以知道X3有正变为负,对多重共线性的影响最大,将其剔除

机器学习——岭回归
剩余三个变量都符合,下面做k值筛选

机器学习——岭回归

K值选取0.1,下面做岭回归
机器学习——岭回归
模型非常显著

3、下面尝试用Lasso回归
机器学习——岭回归
CP最小的时候为最优,是3.共有变量X1,X2,X4,与岭回归的一致

机器学习——岭回归
从上面可以看出,岭回归和Lasso回归得到相同的结果。

源码:

data1<-data.frame(
  X1=c( 7, 1, 11, 11, 7, 11, 3, 1, 2, 21, 1, 11, 10),
  X2=c(26, 29, 56, 31, 52, 55, 71, 31, 54, 47, 40, 66, 68),
  X3=c( 6, 15, 8, 8, 6, 9, 17, 22, 18, 4, 23, 9, 8),
  X4=c(60, 52, 20, 47, 33, 22, 6, 44, 22, 26, 34, 12, 12),
  Y =c(78.5, 74.3, 104.3, 87.6, 95.9, 109.2, 102.7, 72.5,
       93.1,115.9, 83.8, 113.3, 109.4)
)
library(MASS)<br>data1<-scale(data1)
lm.sol<-lm(y~.,data=data1)
summary(lm.sol)

kappa(cor(data1[1:5]),exact = TRUE)
lm.ridge(Y~.,data=data1)
plot(lm.ridge(Y~.,data=data1,lambda=seq(0,0.1,0.001)))

lm.ridge(Y~.-X3,data=data1)
plot(lm.ridge(Y~.-X3,data=data1,lambda=seq(0,0.1,0.001)))

select(lm.ridge(y~.-X3,data=data3,lambda=seq(0,0.1,0.001)))

library(ridge)
lm.rlr<-linearRidge(y~.-X3,data=data3,lambda =0.1)
summary(lm.rlr)


library(lars)
x=as.matrix(data1[,1:4])
y=as.matrix(data1[,5])

lm.lar=lars(x,y,type='lar')
lm.lar
plot(lm.lar)
summary(lm.lar)

如有疑问,可以在文章底部留言或邮件(haran.huang@ichdata.com) 我~
喜欢 (1)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址