线性回归方程公式详解(线性回归方程计算器步骤)

算法介绍

回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。在线性回归中,数据使用线性预测函数来建模,并且未知的模型参数也是通过数据来估计。

线性回归是回归问题中的一种,线性回归假设目标值与特征之间线性相关,即满足一个多元一次方程,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。通过构建损失函数,来求解损失函数最小时的参数w和b。通长我们可以表达成如下公式:

线性回归方程公式详解(线性回归方程计算器步骤)

y^为预测值,自变量x和因变量y是已知的,而我们想实现的是预测新增一个x,其对应的y是多少。因此,为了构建这个函数关系,目标是通过已知数据点,求解线性模型中w和b两个参数。

算法优势

优点:

思想简单,实现容易。建模迅速,对于小数据量、简单的关系很有效;

线性回归模型是许多强大的非线性模型的基础;

线性回归模型十分容易理解,结果具有很好的可解释性,有利于决策分析;

  缺点:

对于非线性数据或者数据特征间具有相关性多项式回归难以建模;

难以很好地表达高度复杂的数据。

参数介绍

sklearn.linear_model.LinearRegression(*,fit_intercept=True,normalize=False,copy_X=True,n_jobs=None)

参数:

fit_intercept

1).释义:是否计算该模型的截距。

2).设置:bool型,可选,默认True,如果使用中心化的数据,可以考虑设置为False,不考虑截距。

normalize

1).释义:是否对数据进行标准化处理。

2).设置:bool型,可选,默认False,建议将标准化的工作放在训练模型之前,通过设置sklearn.preprocessing.StandardScaler来实现,而在此处设置为false当fit_intercept设置为false的时候,这个参数会被自动忽略。如果为True,回归器会标准化输入参数:减去平均值,并且除以相应的二范数。

copy_X

1).释义:是否对X复制。

2).设置:bool型、可选、默认True,如为false,则即经过中心化,标准化后,把新数据覆盖到原数据上。

n_jobs

1).释义:计算时设置的任务个数,这一参数的对于目标个数>1(n_targets>1)且足够大规模的问题有加速作用。

2).设置:int or None,optional, 默认None,如果选择-1则代表使用所有的CPU。

属性:

coef_

1).释义:对于线性回归问题计算得到的feature的系数。

2).输出:如果输入的是多目标问题,则返回一个二维数组(n_targets, n_features);如果是单目标问题,返回一个一维数组(n_features,)

rank_

1).释义:矩阵X的秩,仅在X为密集矩阵时有效。

2).输出:矩阵X的秩。

singular_

1).释义:矩阵X的奇异值,仅在X为密集矩阵时有效。

2).输出:array of shape (min(X, y),)

intercept_

1).释义:截距,线性模型中的独立项。

2).输出:如果fit_intercept = False,则intercept_为0.0。

方法:

fit(self, X, y[,sample_weight]):训练模型,sample_weight为每个样本权重值,默认None。

get_params(self[,deep]):deep默认为True,返回一个字典,键为参数名,值为估计器参数值。

predict(self,X):模型预测,返回预测值。

score(self,X,y[,sample_weight]):模型评估,返回R^2系数,最优值为1,说明所有数据都预测正确。

set_params(self,**params):设置估计器的参数,可以修改参数重新训练。

调优方法

对于这个损失函数,一般有梯度下降法和最小二乘法两种极小化损失函数的优化方法,而scikit中的LinearRegression类用的是最小二乘法。通过最小二乘法,可以解出线性回归系数θ为:

梯度法调优

算法步长

初始化

归一化

特征选取

正则化的线性模型

过拟合通常发生在变量的特征过多的情况下,此时训练出的方程可以很好的拟合训练数据,但是由于过度地拟合使其无法泛化到新的数据样本中。模型发生过拟合时,一般有2个办法:

减少特征数量

1)人工选择特征

2)模型特征选择算法(主成分分析等算法)

正则化(Regularization)

1)保留所有的特征,但是对参数向量引入额外约束。(过拟合的时候,拟合函数的系数往往非常大,而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况)。

适用场景

数学

线性回归有很多实际用途。分为以下两大类:

如果目标是预测或者映射,线性回归可以用来对观测数据集的和X的值拟合出一个预测模型。当完成这样一个模型以后,对于一个新增的X值,在没有给定与它相配对的y的情况下,可以用这个拟合过的模型预测出一个y值。

给定一个变量y和一些变量X1,…,Xp,这些变量有可能与y相关,线性回归分析可以用来量化y与Xj之间相关性的强度,评估出与y不相关的Xj,并识别出哪些Xj的子集包含了关于y的冗余信息。

趋势线

一条趋势线代表着时间序列数据的长期走势。它告诉我们一组特定数据(如GDP、石油价格和股票价格)是否在一段时期内增长或下降。虽然我们可以用肉眼观察数据点在坐标系的位置大体画出趋势线,更恰当的方法是利用线性回归计算出趋势线的位置和斜率。

一般来说,只要我们觉得数据有线性关系,LinearRegression类是我们的首先。如果发现拟合或者预测的不好,再考虑用其他的线性回归库。如果是学习线性回归,推荐先从这个类开始第一步的研究。

demo示例import numpy as npfrom sklearn.linear_model import LinearRegressionX = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])# y = 1 * x_0 2 * x_1 3y = np.dot(X, np.array([1, 2])) 3reg = LinearRegression().fit(X, y)reg.score(X, y)# 1.0reg.coef_# array([1., 2.])reg.intercept_# 3.0000…reg.predict(np.array([[3, 5]]))# array([16.])

发表评论

登录后才能评论