常用的回归模型及其代码实现

这篇博客介绍了线性回归的基本概念,包括单变量和多变量线性回归,并强调了其在处理线性关系明显的数据集时的优势。文章详细讨论了线性回归的特性,如快速建模和对异常值的敏感性。接着,它涵盖了成本函数和梯度下降的计算过程,以及如何使用梯度下降优化模型参数。此外,还提供了使用Python的sklearn库实现线性回归模型的示例,特别是针对波士顿房价预测的问题。
摘要由CSDN通过智能技术生成

线性回归(Linear Regression)

机器学习中最简单的回归模型,在一元回归模型中,形式为一元函数关系Y= Wx + b,称为单变量线性回归(Single Variable Linear Regression )。简单来说就是用一元线性模型来拟合数据关系。当然,实际运用基本都是多变量的线性回归(Multi Variable Linear Regression)(单变量高中生都能拟合了),体现了多个输入自变量(特征变量)与输出因变量之间的关系。
多变量线性模型
其中a是系数,b是偏置。适用于建模线性可分数据,使用权重系数a来加权每个特征变量的重要性,可以使用随机梯度(SGD)来确定这些权重。

线性回归的特点:

  1. 建模速度快,使用建模线性关系明显且数据量不大的情况。
  2. 有非常直观的理解和解释,常用于机器学习的入门
  3. 对异常值非常敏感,建模前最好删除异常值

线性回归的代码实现

成本函数(Cost Function)

使用成本函数J来表示预测结果h(x)与实际输出y之间的误差,这里可以使用最简单的“最小均方误差”(Least mean square)来描述:
在这里插入图片描述
其中,m表示样本的数量,i表示第i个样本,其中的1/2,是为了求导方便而添加的专业习惯。

梯度下降(SGD)

如上文所说,我们需要使用梯度下降确定我们的参数w=和b,使得损失函数J的值最小。
在这里插入图片描述
关于成本函数J的图像大致像一个“碗”(上),我们来看看J关于一个参数w1(其实应该是theta,代表权重参数)的图像
在这里插入图片描述
在这里插入图片描述
所以按照一般的思路,就是对权重参数求导,使得倒数为0的参数的值,就是成本函数J取得最小值的地方。但是大多时候,求得的偏导的数学表达式很复杂,所以我们采用一种叫做“梯度下降(gradient descent)”的方法
在这里插入图片描述
即:

在这里插入图片描述
通俗一点讲,就是希望权重参数“沿着J减小的方向(梯度减小的方向),一步一步(也就是学习率alpha)的走到那个最低点”

代码实现——使用sklearn的线性回归模型
class LinearRegression(fit_intercept = True,normalize = False,copy_X = True,n_jobs = 1)
  """
  :param normalize:如果设置为True时,数据进行标准化。请在使用normalize = False的估计器调时用fit之前使用preprocessing.StandardScaler
 
  :param copy_X:boolean,可选,默认为True,如果为True,则X将被复制
 
  :param n_jobs:int,可选,默认1。用于计算的CPU核数
  """

实例代码:

from sklearn.linear_model import LinearRegression
reg 
  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
时间序列预测模型可以用于对未来数据进行预测。在Matlab中,有多种方法可以用来建立时间序列预测模型,下面我将介绍两种常用的方法以及相应的代码: 1. 自回归移动平均模型(ARMA): ARMA模型是一种常用的线性时间序列预测模型,它结合了自回归(AR)和移动平均(MA)模型。在Matlab中,可以使用`arima`函数来拟合ARMA模型并进行预测。下面是一个示例代码: ```matlab % 假设有一个时间序列数据y y = [1, 2, 3, 4, 5, 6]; % 拟合ARMA模型并进行预测 model = arima(2,0,1); % AR阶数为2,MA阶数为1 fit = estimate(model, y); forecast = forecast(fit, 3); % 预测未来3个时间步的数据 disp(forecast); % 打印预测结果 ``` 这段代码中,首先创建了一个长度为6的时间序列数据`y`,然后创建一个ARMA模型对象`model`,通过`estimate`函数拟合该模型并得到拟合结果`fit`,最后使用`forecast`函数对未来3个时间步进行预测,预测结果存储在`forecast`变量中,最后打印出来。 2. 神经网络模型: 神经网络模型在时间序列预测中也非常常用。在Matlab中,可以使用`narnet`函数来建立一个自回归神经网络模型(NAR)或者使用`narxnet`函数来建立一个自回归外部输入神经网络模型(NARX)。下面是一个示例代码: ```matlab % 假设有一个时间序列数据y y = [1, 2, 3, 4, 5, 6]; % 建立NAR神经网络模型 net = narnet(1:2, 10); % 输入维度为1-2,隐藏层节点数为10 [Xs, Xi, Ai, Ts] = preparets(net, {}, {}, y); net = train(net, Xs, Ts); forecast = net(Xs, Xi, Ai); % 预测训练样本 disp(forecast); % 打印预测结果 ``` 这段代码中,同样是创建了一个长度为6的时间序列数据`y`,然后使用`narnet`函数建立了一个NAR神经网络模型对象`net`,通过`preparets`函数将数据转化为网络所需的格式,然后使用`train`函数对模型进行训练,最后使用模型进行预测并打印出来。 以上是两种常用的时间序列预测模型及其对应的Matlab代码。这些模型在实际应用中的效果、如何选择合适的模型以及模型参数的调优等都是需要考虑的问题。你还有其他关于时间序列预测模型的问题吗?

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值