利用线性回归预测隧道车流量

一、线性回归的定义

回归是监督学习的一个重要问题,回归用于预测输入变量和输出变量之间的关系。回归模型是表示输入变量到输出变量之间映射的函数。回归问题的学习等价于函数拟合:使用一条函数曲线使其很好的拟合已知函数且很好的预测未知数据。

回归问题分为模型的学习和预测两个过程。基于给定的训练数据集构建一个模型,根据新的输入数据预测相应的输出。

回归问题按照输入变量的个数可以分为一元回归和多元回归;按照输入变量和输出变量之间关系的类型,可以分为线性回归和非线性回归。

一元回归:y = ax + b
在这里插入图片描述
多元回归:
在这里插入图片描述
其中,theta是参数,x是我们的训练数据和检测数据中的特征值。实际上,theta是未知量,我们的目标就是通过训练数据调整theta,来使得输出的结果更接近真实值。
在这里插入图片描述

二、回归问题求解

2.1最小二乘法

最小二乘法又称最小平方法,它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。
现在假设我们有m个样本,我们假设有:
在这里插入图片描述
在这里插入图片描述表示输出值和真实值之间的误差

根据中心极限定理,由于误差项是好多好多相互独立的因素影响的综合影响,我们有理由假设其服从高斯分布,又由于可以自己适配theta0,误差项的高斯分布均值为0,所以我们有
在这里插入图片描述
其中,对于正太分布在这里插入图片描述
期望μ = 0,标准差为σ
在这里插入图片描述
用训练数据替换::
在这里插入图片描述
因为我们认为这些数据是独立同分布的,因此所有的训练数据的联合概率就是各自的边缘概率的乘积,得到似然函数::
在这里插入图片描述
由极大似然估计的定义,我们需要L(theta)最大,那么我们怎么才能是的这个值最大呢?两边取对数对这个表达式进行化简如下:
在这里插入图片描述
所以,我们最后由极大似然估计推导得出,我们希望 J(theta) 最小,而这刚好就是最小二乘法做的工作。而回过头来我们发现,之所以最小二乘法有道理,是因为我们之前假设误差项服从高斯分布,假如我们假设它服从别的分布,那么最后的目标函数的形式也会相应变化。

好了,上边我们得到了有极大似然估计或者最小二乘法,我们的模型求解需要最小化目标函数J(theta),那么我们的theta到底怎么求解呢?有没有一个解析式可以表示theta?
在这里插入图片描述
我们需要最小化目标函数,关心 theta 取什么值的时候,目标函数取得最小值,而目标函数连续,那么 theta 一定为 目标函数的驻点,所以我们求导寻找驻点。

求导可得:
在这里插入图片描述
最终我们得到参数 theta 的解析式:
在这里插入图片描述
上述最后一步有一些问题,假如 X’X不可逆呢?

我们知道 X’X 是一个办正定矩阵,所以若X’X不可逆或为了防止过拟合,我们增加lambda扰动,得到
在这里插入图片描述

2.2梯度下降法

我们在上边给出了最小二乘法求解线性回归的参数theta,实际python 的 numpy库就是使用的这种方法。

当然了,这需要我们的参数的维度不大,当维度大的时候,使用解析解就不适用了,这里讨论梯度下降算法。
2.2.2梯度下降法步骤:
初始化theta

沿着负梯度方向迭代,更新后的theta使得J(theta)更小。
在这里插入图片描述
其中α表示学习率
就是让theta沿着让J(theta)下降最快的方向移动。求一下梯度方向;
在这里插入图片描述
上面的结果是对一个样本求的,实际中的损失函数是
在这里插入图片描述
因此可以得到:

在这里插入图片描述
加上学习率α
在这里插入图片描述

预测车流量

利用最小二乘法预测隧道车流量

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

def calcAB(x,y):
    n = len(x)
    sumX,sumY,sumXY,sumXX =0,0,0,0
    for i in range(0,n):
        sumX  += x[i]
        sumY  += y[i]
        sumXX += x[i]*x[i]
        sumXY += x[i]*y[i]
    a = (n*sumXY -sumX*sumY)/(n*sumXX -sumX*sumX)
    b = (sumXX*sumY - sumX*sumXY)/(n*sumXX-sumX*sumX)
    return a,b,
Traffic_flow = pd.read_csv(
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值