ML连串文章先引入数学理论和代码完毕结合,2.建模

1.概述

  1. 慎选回归模型和回归方程
    • 一般线性模型被分解变量是三个遵循正态分布的再而三型数值变量。若商讨它什么受多个数值型解释变量的熏陶,则选取的回归模型是一元或多元回归模型;若切磋它怎么受到离散型数值变量以及分类型变量的熏陶,则选用带有虚拟变量的回归模型
    • 广义线性模型的被演讲变量是0-1变量。若商讨它什么受多个表明变量的震慑,则树立logistic模型。若被诠释变量是计数变量:近年来三个月内的购物次数…,选择泊松分布
  2. 回归方程的参数猜测与检察
    • 细微二/极大似然
    • 回归方程的鲜明性、回归周密的分明性
  3. 回归诊断
    • 回归模型对数据是有就算的,若不能够知足这么些假使,则方程或然因为存在不小偏差而尚未意思
    • 回归方程只怕受到那几个点的震慑。是或不是必要在消除其震慑下再度成立方程
    • 多重共线性的确诊
  4. 模型验证
    • 回归方程的严重性目标是预测,预测的精度或误差是模型验证的重中之重内容。

 

ML系列小说先引入数学理论和代码落成结合。

首要总结

图片 1

image.png

2.创设回归模型

① 、数学理论篇

关系

函数关系:分明性关系,y=3+10*x
相关涉嫌:非分明性关系

相关全面

图片 2

image.png

2.1模型

引言:

数值型自变量和数值型新变量之间涉及分析方法正是相关与回归分析。是处理变量之间涉及的一种计算形式。七个变量之间正是简单相关与不难回归分析;三个及以上是不可胜计相关与多元回归分析。
如若从变量关系形态上又分为线性相关与线性回归和非线性相关非线性回归。

一元线性回归模型

图片 3

image.png

  • 参数

Y=α+βX+ε
截距项α
斜率β
误差项ε
事例:商品销量s关于电视机广告开支t的回归方程:s=10+3.4*t(单位:万元)

  • 什么样明确参数

图片 4

image.png

图片 5

  • 由解释变量引起的Y的线性别变化化
  • 由误差项引起的

描述

自然如何对相关关系描述与推理呢(是还是不是有涉嫌,有哪些关系,关系强度,样本能还是不可能代表总体变量关系):

  • 1散点图
  • 2相关周到(correlation coefficient) 样本的记做r,总体的记做ρ

图片 6

线性相关周到大概Pearson相关周到

注:r仅仅是线性关系的襟怀,可能存在非线性关系,r=0不能够得出不存在相关关系,要组成散点图分析,也不肯定意味着x与y一定有因果关系

lm()线性模型函数

图片 7

image.png

  • 求模型周全

coef(a)

(Intercept) x
-140.36436 1.15906

  • 领到模型公式

formula(a)

y ~ x

  • 算算残差平方和(什么是残差平方和)

deviance(a)

[1] 64.82657

  • 绘画模型诊断图(很强劲,展现残差、拟合值和有个别确诊情状)

plot(a)

  • 计算残差

residuals(a)

1 2 3 4 5 6 7
-0.8349544 1.5288044 -2.9262307 -1.2899895 -0.8128086 1.2328296
2.8690708
8 9 10 11 12
1.2784678 2.6422265 -3.0396529 3.0737693 -3.7215322

  • 测算方差分析表

anova(a)

  • 领到模型汇总资料

summary(a)

  • 作出预测

z=data.frame(x=185)
predict(a,z)
1
74.0618
predict(a,z,interval=”prediction”, level=0.95)
fit lwr upr
1 74.0618 65.9862 82.13739

2.2假设

alpson遵循正态分布

图片 8图片 9

 

明显性检验(t分布)

因为完全相关联数ρ未知,用样本相关联数r作为近似值会受到抽象波动影响所以要实行分明性检验:
显明性检验方法

内推插值不外推总结

2.3参数推断

图片 10

回归模型

叙述因变量y怎样借助自变量x和误差项ɛ的方程为回归方程(regression model)
y = β0 + β1x + ɛ (一元线性回归模型也叫做理论回归模型)
注:误差项ɛ 是随机变量,E(ɛ )=0,对负有的x值,ɛ
的方差σ^2都等于,遵循正态分布。
给定任何三个x,y都遵循期望值为β0+β1*x,方差为σ^2的正态分布。

多元线性回归模型

图片 11

image.png

  • 参数臆度
    细微二乘法:不一元回归方程的算法相似

图片 12

image.png

2.4 R程序

lm(R公式,data=数据框名)
coefficients(回归分析结果对象名)

 图片 13

图片 14

图片 15

1.画图

CarData<-read.table(file="CarData.txt",header=TRUE)
CarData$ModelYear<-as.factor(CarData$ModelYear)
#查看相关关系
pairs(~MPG+weight+displacement+horsepower,data=CarData)

  图片 16

2.确立模型

##########建立线性回归经验方程
Fit<-lm(MPG~weight+displacement+horsepower,data=CarData)

#############浏览回归分析结果
>coefficients(Fit)

 (Intercept)       weight displacement   horsepower 
44.855935695 -0.005351593 -0.005768819 -0.041674144 

  方程明显;回归周详:displacement不醒目

估价回归方程

方程:
对此x和y的n对观测值,用描述的直线就广大,那时就需求引入多少个尺度来判定哪条表示四个变量之间涉及。
那么些方法就是最小二乘法(method of least squares)

区分

  • 回归模型是对计算关系进展定量描述的一种数学模型.
  • 回归方程是对变量之间总结关系进展定量描述的一种数学表明式.指具有相关的随机变量和永恒变量之间关系的方程.首要有回归直线方程.
  • 当多少个变量有多重共线性时,多元回归分析得出的回归方程,靠手算精确值总结量太大,所以不得不得出猜测值

虚构变量

  • 编造变量的定义
  • 虚构变量的效益
  • 编造变量的安装
  • 虚构变量的采纳

2.4.回归诊断

图片 17图片 18

#方程显著性
>summary(Fit)

Call:
lm(formula = MPG ~ weight + displacement + horsepower, data = CarData)

Residuals:
     Min       1Q   Median       3Q      Max 
-11.3347  -2.8028  -0.3402   2.2037  16.2409 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)  44.8559357  1.1959200  37.507  < 2e-16 ***
weight       -0.0053516  0.0007124  -7.513 4.04e-13 ***
displacement -0.0057688  0.0065819  -0.876  0.38132    
horsepower   -0.0416741  0.0128139  -3.252  0.00125 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.241 on 388 degrees of freedom
  (6 observations deleted due to missingness)
Multiple R-squared:  0.707, Adjusted R-squared:  0.7047 
F-statistic:   312 on 3 and 388 DF,  p-value: < 2.2e-16


>confint(Fit)

                   2.5 %       97.5 %
(Intercept)  42.50464109 47.207230298
weight       -0.00675215 -0.003951036
displacement -0.01870945  0.007171815
horsepower   -0.06686744 -0.016480849
  • F:方程鲜明性
  • t:周到字彰显著性

因为方程中隐含全面不鲜明的解释变量,所以模型须要革新

Fit<-lm(MPG~weight+horsepower,data=CarData)
summary(Fit)

Call:
lm(formula = MPG ~ weight + horsepower, data = CarData)

Residuals:
     Min       1Q   Median       3Q      Max 
-11.0762  -2.7340  -0.3312   2.1752  16.2601 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) 45.6402108  0.7931958  57.540  < 2e-16 ***
weight      -0.0057942  0.0005023 -11.535  < 2e-16 ***
horsepower  -0.0473029  0.0110851  -4.267 2.49e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.24 on 389 degrees of freedom
  (6 observations deleted due to missingness)
Multiple R-squared:  0.7064,    Adjusted R-squared:  0.7049 
F-statistic: 467.9 on 2 and 389 DF,  p-value: < 2.2e-16

回归直线的拟合优度(goodness of fit)

  • 判定系数是对拟合优度的胸襟
    急需精通概念SST(总平方和), SS揽胜极光(回归平方和),SSE(残差平方和), 途睿欧^2
    (判定全面)= SS索罗德/SST 中华V^2∈[0,1]
  • 估价标准误差
    打探的概念:估计标准误差(standard error of estimate),是均方残差(MSE)的平方和.MSE是胸襟实际观测值与回归观测值的反差程度。

相应选取什么变量?

  • 奥迪Q5SS(残差平方和)不昂Cora2(相关全面平方)选拔法:遍历全体大概的咬合,选出使EscortSS最小,CRUISER2最大的模子
  • AIC(Akaike information criterion)准则不BIC(Bayesian information
    criterion)准则
    AIC=n ln (RSSp/n)+2p
    n为变量总个数,p为选出的变量个数,AIC越小越好

稳步回归
迈入引入法:从一元回归初叶,稳步扩充变量,使目的值达到最优甘休
向后剔除法:从全变量回归方程先河,逐步删去有些变量,使指标值达到最优截至
日渐筛选法:综合上述三种方法
step()函数 forward backward both
sl=step(s,direction=”forward”)

  

回归分析的鲜明性检验 (F分布)

回归分析以及显明性检验
注:F检验是印证总体回归关系的显明性,而t检验则是各样回归周密的分明性

回归诊断

  • 样本是或不是符合正态分布要是?

正态性检验:函数shapiro.test( X$X1)
P>0.05,正态性分布

  • 是否存在离群值导致模型发生较大误差?
  • 线性模型是不是站得住?
  • 误差是还是不是满足独立性、等方差、正态分布等即便标准?
  • 是不是留存多重共线性?

2.5预测

FitMPG<-predict(Fit,CarData,type="response")    ##预测
plot(CarData$weight,CarData$MPG,pch=1,xlab="自重",ylab="MPG")
points(CarData$weight,FitMPG,pch=10,col=2)
legend("topright",c("实际值","拟合值"),pch=c(1,10),col=c(1,2))

  图片 19

 

 

用回归方程预测

  • 置信区间推断:对x的贰个给定值x0,求y的平均值的距离测度
  • 盼望推测值标准差的推测量的总结公式:本人找一找
  • 预测区间预计:对x的3个给定值x0,求y的三个个别值的间隔猜想
  • 分别推测值的标准差的估算量的总括公式:本身找一找

广义线性模型

图片 20

image.png

图片 21

image.png

3.回归诊断

残差分析

规定假定的 ɛ是或不是建立的主意之一是残差分析

  • 残差(residual):因变量的观测值与基于估量的回归方程求的预测值之间的差。反映了用预计的回归方程去预测yi而滋生的误差。
  • 残差计算公式:略
  • 标准化残差(standardized residual):残差除以它的标准差的数值,也称为皮尔逊残差只怕半学生物化学残差(semi-studentized
    residuals) 总结公式:略 ,它是残差的基准猜度,因为一旦
    误差项ɛ坚守正态分布创建,那么规范残差的分布也服从正态分布。

logistic回归

图片 22

image.png

3.1误差项是还是不是符合高斯-马尔科夫定理

3.1.1残差与误差

模型中的误差项是这个与解释变量非亲非故的元素造成的谬误,误差不大概度量,所以用残差来进展切磋

图片 23

 

3.1.2高斯-Marco夫定理

  • 独立性:第i个着眼的误差与第j个误差不相干,在截面数据中不难满意
  • 正态性:第壹与第5个可从残差图形中央直机关观判断。
  • 等方差性

1.独立性检验

图片 24

library("car")
>durbinWatsonTest(Fit)    ##独立性检验

lag Autocorrelation D-W Statistic p-value
   1       0.5575821      0.880059       0
 Alternative hypothesis: rho != 0

  图片 25

 

 

2.正态性与等差性

############拟合值与残差值
fitted(Fit)
residuals(Fit)
#######绘制残差图
par(mfrow=c(2,2))
plot(Fit)

  图片 26

  • 观看的是 正态分布假定
  • 考察队是残差项等方差假定。本例中,残差随着拟合值的叠加而有扩散的方向,不满意等方差假定。

化解异方差办法:

  1. 采用加权小小的二乘法。普通最小二乘法的离差平方和中个阅览变量对平方和的进献相等,而方差偏大的进献更大,所以回归线偏向方差大的体察。加权最小二乘的权值估算很关键,若能找到异方差与解释变量的函数情势,就能方便的推断各样观测的权值,不然应接纳异方差-稳健t计算量举行显然性检验。

    图片 27

  2.对被分解变量做BOX-COX变换后在创立模型,最常见的是取log。

##########重新建立对数-水平的二元回归经验方程
Fit<-lm(log(MPG)~weight+horsepower,data=CarData)
summary(Fit)
par(mfrow=c(2,2))
plot(Fit)

  图片 28

  • 对数-水平模型,x变动一单位引起的y变化的百分比semi-elasticity
  • 图中国残疾人联合会差的到了很好的改进,基本满意了正态分布与等差性须要
  • 尤为考虑:借使所创设的模型没有一楼对被分解变量有至关心爱戴要影响的解释变量,那么残差不应与拟合值有关联

不满意正态性的拍卖

图片 29

 

>summary(powerTransform(CarData$MPG))   #非正态性处理

bcPower Transformation to Normality 
            Est Power Rounded Pwr Wald Lwr bnd Wald Upr Bnd
CarData$MPG    0.1974           0      -0.0907       0.4854

Likelihood ratio tests about transformation parameters
                            LRT df         pval
LR test, lambda = (0)  1.809026  1 1.786251e-01
LR test, lambda = (1) 29.356835  1 6.020380e-08

  图片 30

等方差性的拍卖

>spreadLevelPlot(Fit)   #等方差性假定图形
Suggested power transformation:  0.4920781 

>ncvTest(Fit)   #等方差性假定检验
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 3.720084    Df = 1     p = 0.05376168 

>crPlots(Fit)   ####被解释变量和解释变量的线性相关性判断

  图片 31

 

释疑变量与被分解变量的线性关系

图片 32

crPlots(Fit)

  

图片 33

线性关系较强烈,基本满意高斯条件。

 

 

 

引申多元线性回归

前方说的是一元,可以引申为多少距离是同一的,只是多了多少个变量,概念和它的意义和方面一样。因为自变量多,只怕就会存在多重共线性的题材(自变量之间存在相关涉嫌)。

  • 判定
    计量各对变量之间的连带关系。

  • 处理
    那几个题材有点大,能够一连表达,读者能够先活动通晓。一般的话正是去除,使自变量尽或然不相干

  • 变量选取
    因为在创设回归模型的时候,不能够将拥有自变量都引进入模型,所以须求一定筛选。

    • 前进选用
    • 向后删除
    • 稳步回归
    • 最优子集
      上述有关办法读者能够活动精通。

非线性模型

3.2确诊数据中的非凡点

二、编程篇

3.2.1高杠杆值点

在表达变量方向上取极度值,在被解释变量上不奇怪的点。

图片 34

hatvalues(回归分析结果对象名)

  

LeveragePlot<-function(fit){
 Np<-length(coefficients(fit))-1
 N<-length(fitted(fit))
 plot(hatvalues(fit),main="观测点的杠杆值序列图",ylab="杠杆值",xlab="观测编号")
 abline(2*(Np+1)/N,0,col="red",lty=2)
 abline(3*(Np+1)/N,0,col="red",lty=2)
 identify(1:N,hatvalues(fit),names(hatvalues(fit)))
 }
LeveragePlot(Fit)

  图片 35

yi = βxi + α + ɛi

咱俩假如y是用户i每一天花在网站上的分钟数,xi是用户i已有个别朋友数,而ɛi是误差项,我们求出阿尔法和beta就足以开始展览前瞻了

#预测
def predict(alpha,beta,x_i):
    return beta * x_i + alpha

#计算误差
def error(alpha,beta,x_i,y_i):
    return y_i - predict(alpha,beta,x_i)

3.2.2离群点

 

rstudent()#学生化残差
outlierTest()#离群点

  

###############探测离群点
library("car")
Fit<-lm(log(MPG)~weight+horsepower,data=CarData)
rstudent(Fit)
outlierTest(Fit)
Fit<-lm(log(MPG)~weight+horsepower,data=CarData[-388,])
outlierTest(Fit)

> outlierTest(Fit)

No Studentized residuals with Bonferonni p < 0.05
Largest |rstudent|:
    rstudent unadjusted p-value Bonferonni p
388 3.224743          0.0013677      0.53613


> Fit<-lm(log(MPG)~weight+horsepower,data=CarData[-388,])
> outlierTest(Fit)

No Studentized residuals with Bonferonni p < 0.05
Largest |rstudent|:
     rstudent unadjusted p-value Bonferonni p
112 -2.999241          0.0028815           NA

 第二个测出388是离群点,p-value=0.54,不能够拒绝原如若,所以Fit<-lm(log(MPG)~weight+horsepower,data=CarData[-388,])

 

唯有把各类误差加起来不是很客观,因为有的预测太高,有的太低,相加会抵消,由此求误差的平方和

def sum_of_squared_errors(alpha,beta,x,y):
    return sum(error(alpha,beta,x_i,y_i)**2
               for x_i, y_i in zip(x,y))

3.2.3强影响点

 包涵只怕去除改点会使得回归方程的截距可能斜率有较大转变。

图片 36

cooks.distance()

  利用图形体现各观测点的Cook距离

#######################探测强影响点
Fit<-lm(log(MPG)~weight+horsepower,data=CarData)
par(mfrow=c(2,1))
plot(cooks.distance(Fit),main="Cook's distance",cex=0.5)      #获得Cook距离
#用identify函数做互动可以获得高库克距离的观测点

Np<-length(coefficients(Fit))-1#系数长度
N<-length(fitted(Fit))#样本量
CutLevel<-4/(N-Np-1)#公式,把判断标准画出来

plot(Fit,which=4)#自动绘制6幅图,第四幅更显著,就只显示第四幅
abline(CutLevel,0,lty=2,col="red")

  图片 37

分级查看weight与horsepower对斜率的熏陶

library("car")
avPlots(Fit,ask=FALSE,onepage=TRUE,id.method="identify")

  图片 38

 

##############异常观测点的综合展示
Fit<-lm(log(MPG)~weight+horsepower,data=CarData)
influencePlot(Fit,id.method="identify",main="异常观测点的可视化")

  图片 39

 

也可应用微小二乘法选用阿尔法和beta,使得sum_of_squared_errors 尽大概小

#利用微积分求:
def least_squares_fit(x,y):
    beta = correlation(x,y) * standard_deviation(y) / standard_deviation(x)
    alpha = mean(y) - beta* mean(x)
    return alpha,beta

3.3多重共线性的确诊

1.容忍度

图片 40

2.方差膨胀因子

图片 41

> library("car")
> vif(Fit)
    weight horsepower 
  3.959228   3.959228 

  有早晚的共线性,但是不强

用决定周全(coefficient of determination)Rubicon^2 这一目标来评估模型对数码的拟合效果

def total_sum_of_squares(y):
    return sum(v**2 for v in  de_mean(y))
def r_squared(alpha,beta,x,y):
    return 1.0 - (sum_of_squared_errors(alpha,beta,x,y) / total_sum_of_squares(y))

4.回归建立模型策略

1.拟合优度最高

r-square越接近1,拟合优度越高

Fit1<-lm(log(MPG)~weight+horsepower,data=CarData)
Fit2<-lm(log(MPG)~weight+horsepower+displacement,data=CarData)
summary(Fit1)
summary(Fit2)
anova(Fit1,Fit2)

Analysis of Variance Table

Model 1: log(MPG) ~ weight + horsepower
Model 2: log(MPG) ~ weight + horsepower + displacement
  Res.Df    RSS Df Sum of Sq      F Pr(>F)
1    389 9.5871                           
2    388 9.5360  1  0.051059 2.0775 0.1503

  扩张变量会使误差平方和减弱:9.58-9.53

这边的F指的是偏F总结量

图片 42

 

2.带惩罚的拟合优度最高点模型。

AIC&BIC

AIC=-2ln(模型中极大似然函数值)+2(模型中未知参数个数)

SBC=-2ln(模型中小幅似然函数值)+ln(n)(模型中未知参数个数)

越小越好

 

> Fit1<-lm(log(MPG)~weight+horsepower,data=CarData)
> Fit2<-lm(log(MPG)~weight+horsepower+displacement,data=CarData)
> AIC(Fit1,Fit2)
     df       AIC
Fit1  4 -334.2030
Fit2  5 -334.2963
> BIC(Fit1,Fit2)
     df       BIC
Fit1  4 -318.3179
Fit2  5 -314.4399

 

  选第三个模型:BIC更小

3.解释变量的筛选

 

图片 43

  • 向前筛选
  • 向后筛选
  • 慢慢筛选

    #######分歧解释变量筛选策略下的AIC
    Fit<-lm(log(MPG)~weight+horsepower+displacement+cylinders+acceleration,data=CarData) library("MASS") stepAIC(Fit,direction="backward")

Start:  AIC=-1449.07
log(MPG) ~ weight + horsepower + displacement + cylinders + acceleration

               Df Sum of Sq     RSS     AIC
- displacement  1   0.00007  9.4316 -1451.1#剔除会让AIC减少的最多
- acceleration  1   0.03725  9.4687 -1449.5
<none>                       9.4315 -1449.1
- cylinders     1   0.07211  9.5036 -1448.1
- horsepower    1   0.49772  9.9292 -1430.9
- weight        1   1.09267 10.5242 -1408.1

Step:  AIC=-1451.06
log(MPG) ~ weight + horsepower + cylinders + acceleration

               Df Sum of Sq     RSS     AIC
- acceleration  1   0.03733  9.4689 -1451.5
<none>                       9.4316 -1451.1
- cylinders     1   0.13744  9.5690 -1447.4
- horsepower    1   0.53766  9.9692 -1431.3
- weight        1   1.35833 10.7899 -1400.3

Step:  AIC=-1451.51
log(MPG) ~ weight + horsepower + cylinders

             Df Sum of Sq     RSS     AIC
<none>                     9.4689 -1451.5
- cylinders   1   0.11820  9.5871 -1448.7
- horsepower  1   0.68621 10.1551 -1426.1
- weight      1   2.06375 11.5326 -1376.2

Call:
lm(formula = log(MPG) ~ weight + horsepower + cylinders, data = CarData)

Coefficients:
(Intercept)       weight   horsepower    cylinders  
  4.1169705   -0.0002178   -0.0022721   -0.0242519  

  

全子集回归模型

图片 44

 

 

应用梯度降低法:

定义个theta = [alpha,beta]
def squared_error(x_i,y_i,theata):
   alpha,beta = theta
   return error(alpha,beta,x_i,y_i) ** 2   
def squared_error_gradient(x_i,y_i,theta):
   alpha, beta = theta
   return [-2*error(alpha,beta,x_i,y_i),  #alpha偏导数
           -2*error(alpha,beta,x_i,y_i)*x_i] #beta偏导数

干什么选取最小二乘法?个中八个最大原因正是最大似然推断(maximum
likelihood estimation)

5.回归模型验证

6.带虚拟变量的回归分析

相关文章