前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最优子集回归算法详解

最优子集回归算法详解

原创
作者头像
ruochen
发布2022-01-05 11:46:58
4K0
发布2022-01-05 11:46:58
举报
文章被收录于专栏:若尘的技术专栏

01 模型简介

最优子集回归是多元线性回归方程的自变量选择的一类方法。从全部自变量所有可能的自变量组合的子集回归方程中挑选最优者。如m个自变量会拟合2m-1个子集回归方程,然后用回归方程的统计量作准则(如交叉验证误差、Cp、BIC、调整R2等指标)从中挑选。

采用的R包是leaps,函数是regsubsets()。

02 加载数据

加载包和读取数据

代码语言:txt
复制
library(glmnet)
代码语言:txt
复制
load(file="Lineartest")
代码语言:txt
复制
data <- Lineartest

03 数据相关性可视化表达

代码语言:txt
复制
library(corrplot)
代码语言:txt
复制
data.cor <- cor(data)
代码语言:txt
复制
corrplot(data.cor, method = "ellipse") #是否提示多重共线性问题

运用cor()函数得到数据的相关系数矩阵,将相关系数矩阵作图,可以直观看出共线性:每个格子中椭圆面积越小,表示相关性越强。

04 采用regsubsets() 筛选

代码语言:txt
复制
library(leaps)
代码语言:txt
复制
sub.fit <- regsubsets(BSAAM ~ ., data = data)# 执行最优子集回归
代码语言:txt
复制
best.summary <- summary(sub.fit)
代码语言:txt
复制
按照模型评价标准找到评价指标
代码语言:txt
复制
which.min(best.summary$cp)#马洛斯Cp值
代码语言:txt
复制
which.max(best.summary$adjr2) #调整R2
代码语言:txt
复制
which.min(best.summary$bic) #贝叶斯信息准则

执行最优子集回归后返回的是自变量组合的子集回归方程,以及每个回归方程对应的评价指标,采用which函数选取最优的回归方程。其中调整R2越大越好,马洛斯Cp越小越好。

05 变量筛选

将返回结果的调整R2作图,可以看到在模型变量个数为3的时候,调整R2最大。

代码语言:txt
复制
plot(best.summary$adjr2, type = "l",xlab = "numbers of Features", 
代码语言:txt
复制
     ylab = "adjr2",main = "adjr2 by Feature Inclusion")

究竟是哪些变量是入选的最优变量呢?可做图观察,图横坐标为自变量,纵坐标是调整R2,且最上面的变量搭建的回归方程的调整R2是最大的,同时利用coef()可以查看最优回归方程的回归系数,结合来看变量APSLAKE、OPRC和OPSLAKE是筛选出来的变量。

代码语言:txt
复制
plot(sub.fit, scale = "adjr2",main = "Best Subset Features")
代码语言:txt
复制
coef(sub.fit, 3)
代码语言:txt
复制
(Intercept)     APSLAKE      OPRC      OPSLAKE 
代码语言:txt
复制
15424.597    1712.481    1797.465    2389.838 

06 多重共线性检查

将筛选的变量建模并进行共线性检查,方差膨胀系数大于5说明有严重的共线性。对这两个强相关的变量,我们分别做模型,挑选调整R2大的模型。最终我们保留f3模型。

代码语言:txt
复制
f2 <- lm(BSAAM ~ APSLAKE + OPRC + OPSLAKE, data = data)
代码语言:txt
复制
vif(f2)
代码语言:txt
复制
APSLAKE     OPRC     OPSLAKE 
代码语言:txt
复制
1.011499  6.452569   6.444748
代码语言:txt
复制
####这两个强相关的变量分别做模型,挑选R2 大的模型
代码语言:txt
复制
f3 <- lm(BSAAM ~ APSLAKE + OPSLAKE, data = data)#调整R2:0.9002
代码语言:txt
复制
f4 <- lm(BSAAM ~ APSLAKE + OPRC, data = data)#调整R2:0.862

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 01 模型简介
  • 02 加载数据
    • 加载包和读取数据
    • 03 数据相关性可视化表达
    • 04 采用regsubsets() 筛选
    • 05 变量筛选
    • 06 多重共线性检查
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档