全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
1431 0
2020-11-20
使用R中的lm()进行简单的自动功能选择
R中提供了许多优秀且复杂的特征选择算法。特征选择是指机器学习的情况,其中我们为给定的因变量设置了一组预测变量,但我们不知道哪个预测变量最重要且先验。是否可以通过从模型中消除一些预测变量来改进模型。在线性回归中,许多学生被教导使用所谓的“最小二乘”来拟合数据集以找到最佳模型。在学校的大多数练习中,所有数据都用于拟合,并且使用ANOVA或直接从回归软件生成模型的属性。在R中,基本函数lm()可以执行多元线性回归:
  线性模型<-lm(dep_var?预测变量,数据=数据)
  摘要(linear_model)
如果我们生成一些数据和依赖模型,如下所示:
  数据<-as.data.frame(矩阵(0,nrow = 100,ncol = 5))
  colnames(数据)<-c(“ time”,“ var1”,“ var2”,“ var3”,“ metric”)
  data $ time <-seq(
  1,100,1 )data $ var1 <-sqrt(data $ time)* 3 + 11
  data $ var2 <-15 * sin(2 * pi *(1/11)* data $ time )
  data $ var3 <-runif(100,-10,100)
  data $ metric <-13 +
    0.32 * data $ time +
    runif(100,0,0.05)* 10 * data $ var1 +
    runif(100,0,0.25 )* data $ var2 +
    0.001 * data $ var3
然后summary()命令将产生如下输出:
  调用:
    lm(公式=度量?。,数据=数据)
  残差:
  最小值1Q中位数3Q最大值
  -8.9091 -3.6757 -0.4311 3.4920 10.4595
系数:
              估计标准 误差t值Pr(> | t |)
(拦截)5.815137 6.886533 0.844 0.400555
时间0.229572 0.085726 2.678 0.008728 **
var1 0.592517 0.354949 1.669 0.098350。
var2 0.168135 0.044888 3.746 0.000309 ***
var3 0.005759 0.014996 0.384 0.701793
---
符号 编码:
0'***'0.001'**'0.01'*'0.05'。' 0.1''1
残留标准误差:在95个自由度上为
4.724多个R平方:0.8449,调整后R平方:0.8384
F统计量:在4和95 DF上为129.4,p值:<2.2e-16
R进行数据分析的主要功能之一是,像lm()这样的函数的大多数结果包含我们在上面的摘要中看到的所有详细信息,这使得它们可以通过编程方式访问。在上述情况下,典型的方法是删除var3(也许是var1)并重新拟合数据,因为这些预测变量似乎并不十分重要。但是,仅需少量代码,我们就可以以编程方式执行此操作并评估结果:
  阈值<-0.05
  signif_form <
    -as.formula(paste(“ metric?”,
    paste(names(其中((summary(linear_model)$ coefficients [
    2:(nrow(summary(linear_model)$ coefficients)),4] <阈值)== TRUE)),收合
    =“ +”))))
  linear_model <-lm(signif_form,data = data)
  summary(linear_model)
  调用:
    lm(公式= signif_form,数据=数据)
  残差:
  最小值1Q中位数3Q最大值
  -9.0971 -3.8859 -0.3897 3.4210 10.1607
系数:
              估计标准 误差t值Pr(> | t |)
(拦截)5.99592 6.83985 0.877 0.382884
时间0.22955 0.08534 2.690 0.008435 **
var1 0.59496 0.35331 1.684 0.095438。
var2 0.16796 0.04469 3.759 0.000293 ***
-
符号 编码:
0'***'0.001'**'0.01'*'0.05'。' 0.1“” 1
残余标准误差:4.703 96上的自由度
多个R平方:0.8447,调整后的R平方:0.8398
F统计量:在3和96 DF上为174,p值:<2.2e-16
瞧!现在,我们有了一个仅包含显着性水平在0.05或更高水平的预测变量的模型。请注意,在变量linear_model中包含的实际数据中,有效值是准确值与摘要中显示的阈值之比;因此我们使用0.099取所有显示为0.05而不是0.01的系数。如果我们使用严格的0.05作为阈值,则0.051的显着性将被拒绝。
精明的读者会注意到,尽管调整后的R平方稍微好一些,但最终模型的R平方比第一个差。回到学校后,我们可能会把R平方作为质量的条件,并使用第一个模型。但是,在机器学习环境中,我们经常对预测未来看不见的数据感兴趣。这对模型提出了额外的要求,我们将使用另一个数据集进行说明。
我们使用了较大的多元时间序列数据集,该数据集分为训练数据和测试数据,其中测试数据根本没有提供给模型,但我们希望对其进行预测。一个例子是我们在一个工业系统上收集了数据,我们希望建立一个模型来预测给定测量变量的未来行为。在下图中,我们显示了一个数据集,该数据集具有七个因子(时间加6个其他变量)作为预测因子,以及度量。蓝线是训练数据。为了说明时变性质,提供了前100个数据点的插图。使用上述方法,创建了初始模型,然后进行了特征选择,并创建了最终模型。红线是测试数据,使用与测试数据相同的功能生成,但是时间较晚。
题库
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群