机器学习--线性回归r语言(代码片段)

豆芽炒粉丝 豆芽炒粉丝     2023-01-18     304

关键词:

回归分析就是利用样本,产生拟合方程,从而进行预测。简而言之,就是你用你手头上的数据进行模型的训练,然后用你得到的模型对于新数据进行预测。


一元线性回归:

例子:

y<- c(61,57,58,40,90,35,68)#weight
x<-c(170,168,175,153,185,135,172) #height
plot(x,y)
z<- lm(y~x+1)#假设y=ax+b
lines(x,fitted(z))#添加拟合值对x的散点图并连线

coef(z)#求模型系数
formula(z)#提取模型公式

这是模型的概括
Call:
lm(formula = y ~ x + 1)

Residuals:
      1       2       3       4       5       6       7 
 -2.003  -4.002 -10.006  -5.992  11.988   7.019   2.996 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)   
(Intercept) -107.1018    34.8642  -3.072  0.02772 * 
x              1.0006     0.2099   4.768  0.00502 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 8.462 on 5 degrees of freedom
Multiple R-squared:  0.8197,    Adjusted R-squared:  0.7837 
F-statistic: 22.73 on 1 and 5 DF,  p-value: 0.005024

解读上述:

Residuals:
      1       2       3       4       5       6       7 
 -2.003  -4.002 -10.006  -5.992  11.988   7.019   2.996 

这是表示残差

1 和 -2.003表示在第一个样本点的时候,残差为-2.003,也就是y1-y1’为-2.003

Coefficients:
             Estimate Std. Error t value Pr(>|t|)   
(Intercept) -107.1018    34.8642  -3.072  0.02772 * 
x              1.0006     0.2099   4.768  0.00502 **

第一列代表-107.1018代表的是截距,1.0006代表斜率
第二列:推算的系数的标准差
第三列:t值
第四列:p值,是一个验证假设是否成立的值。比如上面的身高体重模型,我假设身高height与weight无关系,也就是在原始的模型中呢,体重=常数+0*height,height前面系数为0,由此我们可以通过R算出一个统计量t值,Pr表示t值以外的面积,如果p>0.05我们就可以说拒绝原假设,也就是我们不能说height与weight无关系,为什么这个pr>0.05呢,而不是pr>0.01或者pr>0.0001呢,这个是关于一个t分布的面积问题吧,详细的百度谷歌吧。

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

显著性标记,* * * 极度显著,* * 高度显著,*显著,圆点不太显著,没有记号不显著
简而言之,*越多代表效果越好

(Intercept) -107.1018
x 1.0006 表示x的系数为1.0006,截距是-107.1018,也就是身高体重的一元线性模型方程是 y = 1.0006*x-107.1018

F-statistic: 22.73 on 1 and 5 DF,  p-value: 0.005024

这是对整个模型的一个检验,原理与上面的pr差不多,都属于假设检验。
用最小二乘法求解:

回归问题擅长于内推插值,而不擅长于外推归纳。所以在使用回归模型做预测时需要注意x的取值范围
内推值:即在图中存在的范围之内的点
外推值:即不在图中存在的范围之内的点
比如说刚刚的身高/体重模型,y = 1.0006*x-107.1018 ;我要预测一个170身高的人的体重,可以拟合比较准确,这个170就是内推值。
而身高比如说是20cm,那么体重是负数吗?显然不可能,那么这个20cm就是外推值


多元线性回归:

顾名思义,就是自变量多了,影响因素不唯一,比如说商品销售额,它可能跟广告投入、市场因素、节气变化等有关联(我自己臆想的),所以这个时候,就会用到多元线性回归模型。
例子:
使用R语言内置swiss数据集,

swiss数据集介绍

swiss.lm<- lm(Fertility~.,data=swiss)#Fertility是因变量,.表示因变量之外的所有列
summary(swiss.lm)
Call:
lm(formula = Fertility ~ ., data = swiss)

Residuals:
     Min       1Q   Median       3Q      Max 
-15.2743  -5.2617   0.5032   4.1198  15.3213 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)      66.91518   10.70604   6.250 1.91e-07 ***
Agriculture      -0.17211    0.07030  -2.448  0.01873 *  
Examination      -0.25801    0.25388  -1.016  0.31546    
Education        -0.87094    0.18303  -4.758 2.43e-05 ***
Catholic          0.10412    0.03526   2.953  0.00519 ** 
Infant.Mortality  1.07705    0.38172   2.822  0.00734 ** 
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

Residual standard error: 7.165 on 41 degrees of freedom
Multiple R-squared:  0.7067,    Adjusted R-squared:  0.671 
F-statistic: 19.76 on 5 and 41 DF,  p-value: 5.594e-10

注意了,我们通过观察,Multiple R-squared: 0.7067 这个数据还行,p-value: 5.594e-10 正确的可能性很高,然后看系数时发现后面的 “ * ” 号发现 Examination后面居然没有 “ * ” ,所以会存在隐忧,应该剔除examination
那么问题来了,变量多了,该怎么选择合适的变量呢?变量与变量之间是否存在共线性?
困难:
1. 选定变量(多元),因为有时候变量太多,有些对于模型是没有帮助甚至是倒忙,所以需要筛选。
2. 多重共线性:有些变量可以由其他变量推出来,若是存在,则会产生较大误差
3. 检验模型是否合理
逐步回归:多元线性回归选择变量的方法

  1. 向前引入法:从一元回归开始,逐步增加变量,使指标达到最优
  2. 向后剔除法:从全变量回归方程开始,逐步删去某个变量,使指标值达到最优为止
  3. 逐步筛选法:综合上述两种方法
    在变量选取之前,有几个判断指标先介绍一下

    R语言有step()函数,
step(object, scope, scale = 0,
     direction = c("both", "backward", "forward"),
     trace = 1, keep = NULL, steps = 1000, k = 2, ...)
     具体信息可以help一下这个函数,下面我们使用step来做

direction:both表示综合两种方法,backward表示向后剔除,forward表示向前引入

step(object = swiss.lm,direction = "backward")#object表示模型,按照规范主要为lm(线性)或者glm(广义线性)模型
Start:  AIC=190.69
Fertility ~ Agriculture + Examination + Education + Catholic + 
    Infant.Mortality

                   Df Sum of Sq    RSS    AIC
- Examination       1     53.03 2158.1 189.86
<none>                          2105.0 190.69
- Agriculture       1    307.72 2412.8 195.10
- Infant.Mortality  1    408.75 2513.8 197.03
- Catholic          1    447.71 2552.8 197.75
- Education         1   1162.56 3267.6 209.36

Step:  AIC=189.86
Fertility ~ Agriculture + Education + Catholic + Infant.Mortality

                   Df Sum of Sq    RSS    AIC
<none>                          2158.1 189.86
- Agriculture       1    264.18 2422.2 193.29
- Infant.Mortality  1    409.81 2567.9 196.03
- Catholic          1    956.57 3114.6 205.10
- Education         1   2249.97 4408.0 221.43

Call:
lm(formula = Fertility ~ Agriculture + Education + Catholic + 
    Infant.Mortality, data = swiss)

Coefficients:
     (Intercept)       Agriculture         Education          Catholic  Infant.Mortality  
         62.1013           -0.1546           -0.9803            0.1247            1.0784  

分析:
从上面来看,初始状态下 Start: AIC=190.69,
模型:
Fertility ~ Agriculture + Examination + Education + Catholic + Infant.Mortality
当剔除- Examination 1 53.03 2158.1 189.86 后,AIC=189.86
然后,step会继续进行剔除,然而,剔除任何变量AIC都不会变小,由此得到最终模型以及相关系数

Step:  AIC=189.86
Fertility ~ Agriculture + Education + Catholic + Infant.Mortality

                   Df Sum of Sq    RSS    AIC
<none>                          2158.1 189.86
- Agriculture       1    264.18 2422.2 193.29
- Infant.Mortality  1    409.81 2567.9 196.03
- Catholic          1    956.57 3114.6 205.10
- Education         1   2249.97 4408.0 221.43

Call:
lm(formula = Fertility ~ Agriculture + Education + Catholic +  Infant.Mortality, data = swiss)
Coefficients:
 (Intercept) Agriculture Education Catholic Infant.Mortality  
 62.1013     -0.1546    -0.9803      0.1247            1.0784  

方程:

Fertility = 62.1013*Agriculture-0.1546*Education-0.9803*Catholic+0.1247*Infant.Mortality

step函数both自己尝试,forward这个由于所有变量都已经在模型当中了,所以没法使用。
除step以外,R语言中还有两个函数可以做逐步回归,分别是drop1,add1
有时候,AIC准则并太适用,这里我们使用书中的内容来说明问题










如有错误,请指出,谢谢!

机器学习-线性回归(基于r语言)

基本概念利用线性的方法,模拟因变量与一个或多个自变量之间的关系。自变量是模型输入值,因变量是模型基于自变量的输出值。因变量是自变量线性叠加和的结果。 线性回归模型背后的逻辑——最小二乘法计算线... 查看详情

机器学习线性回归(回炉重造)(代码片段)

机器学习---线性回归1.简单线性回归2.多元线性回归3.线性回归的正规方程解4.衡量线性回归的性能指标MSERMSEMAER-Squared5.scikit-learn线性回归实践-波斯顿房价预测LinearRegression线性回归是属于机器学习里面的监督学习,与分类问题... 查看详情

机器学习_线性回归(代码片段)

线性回归 人工智能是机器学习的父类;机器学习是深度学习的父类 1.怎么做线性回归?2.理解回归--最大似然函数3.应用正态分布概率密度函数--对数总似然4.推导出损失函数--推导出解析解       &... 查看详情

线性回归模型|机器学习(代码片段)

目录1.线性回归模型1.1一元线性回归模型1.2多元线性回归模型1.3损失函数2.相关代码2.1LinearRegression类2.2求解代码2.3绘图代码1.线性回归模型1.1一元线性回归模型简单的讲,一元线性模型就是指只有一个特征量,然后对应带... 查看详情

机器学习一般线性回归(代码片段)

...归"模型。 0.概述线性回归应该是我们听过次数最多的机器学习算法了。在一般的统计学教科书中,最后都会提到这种方法。因此该算法也算是架起了数理统计与机器学习之间的桥梁。线性回归虽然常见,但是却并不简单。该... 查看详情

机器学习导论————线性回归(linerregression)(代码片段)

机器学习导论————线性回归(LinerRegression)一、线性回归的应用场景监督学习-目标值连续房价预测销售额预测贷款额度预测二、什么是线性回归2.1定义与公式线性回归(LinearRegression)是利用回归方程(函数)对... 查看详情

机器学习—线性回归(代码片段)

一、原理部分:只能图片形式展现了~~~二、Python手工实现线性回归importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltclasslinear_regression(object):#计算均方误差损失defcompute_loss(self,y,y_hat):returnnp.average((y-y_hat)**2)#梯度下降算 查看详情

机器学习线性回归api快速入门(代码片段)

目录1线性回归API2举例2.1步骤分析2.2代码过程3小结1线性回归API机器学习线性回归简介:https://blog.csdn.net/ZGL_cyy/article/details/126918295sklearn.linear_model.LinearRegression()LinearRegression.coef_:回归系数2举例2.1步骤分析1.获取数据 查看详情

机器学习——线性回归(代码片段)

导入类库1fromsklearn.externalsimportjoblib2fromsklearn.model_selectionimporttrain_test_split3fromsklearn.datasetsimportload_boston4fromsklearn.preprocessingimportStandardScaler5fromsklearn.linear_modelimp 查看详情

机器学习入门:多变量线性回归(代码片段)

...的两个小技巧。本文分享自华为云社区《【跟着小Mi一起机器学习吧!】多变量线性回归(一)》,原文作者:Skytier。1 多维特征既然是多变量线性回归,那么肯定是存在多个变量或者多个特征的情况啦。就拿之前研究的线... 查看详情

机器学习模型和算法(代码片段)

文章目录python简介python基本语法监督学习--回归模型线性回归模型一元线性回归线性回归最小二乘代码实现多元线性回归梯度下降法和最小二乘法相比线性回归梯度下降代码实现非线性回归python简介略python基本语法文件开头加上#... 查看详情

机器学习-8.线性回归(代码片段)

1.概述定义:线性回归通过一个或多个自变量(理解为特征)与因变量(理解为目标值)之间进行建模的回归分析。其中可以为一个或多个自变量之间的线性组合(线性回归的一种)。一元线性回归:涉及到的变量只有... 查看详情

机器学习-线性回归(代码片段)

线性回归简介:之前的文章中介绍过一种回归算法,梯度下降算法,这里再看看另外一个回归算法,线性回归,主要的内容包括简单的线性回归和局部加权回归算法。在回归里面需要考虑的问题就是,我如... 查看详情

机器学习入门三------线性回归(代码片段)

...方法。本模块会先直观介绍线性回归,为介绍线性回归的机器学习方法奠定基础。人们早就知晓,相比凉爽的天气,蟋蟀在较为炎热的天气里鸣叫更为频繁。数十年来,专业和业余昆虫学者已将每分钟的鸣叫声和温度方面的数据... 查看详情

机器学习--线性回归的原理与基础实现(代码片段)

文章目录一、一元线性回归的实现1.1原理1.2Python底层实现一元线性回归二、多元线性回归的实现2.1参考文献2.2代码实现2.3相关性分析三、第三方库实现线性回归四、线性回归案例4.1回归知识复习4.2案例编写一、一元线性回归的实... 查看详情

机器学习基石线性回归(代码片段)

目录写在前面1.线性回归问题2.求解最小的Ein(w)E_in(w)Ein​(w)对应的www3.泛化问题4.与线性分类的对比写在前面本节主要介绍了线性回归原理以及它的可行性,最后与前面学过的线性分类进行了对比分析。1.线性回归问题∙\\bullet... 查看详情

机器学习:局部加权线性回归(locallyweightedlinearregression)(代码片段)

线性回归先复习一下线性回归的损失函数:我们的目标是使该函数最小,用矩阵表示为:对参数w求导得:令上式等于0可估计出回归系数w得最优解:但线性回归往往容易欠拟合,除了使用更复杂得函数拟合... 查看详情

机器学习-线性回归补充-r^

线性回归算法在选自变量会遇到两个问题:一是去掉多重共线性干扰,二是选择最优自变量组合。线性回归步骤1.选择自变量注意点 去掉多重共线性干扰,选择最优自变量组合。这里需要理解决定系数:R^。它是理解选自变... 查看详情