究竟什么是线性回归,基础理解(附代码)

首先,我们聊聊什么是回归。

回归大概的意思就是事物总是倾向于朝着某种“平均”发展,也可以说是回归于事物本来的面目,在计算机中就是,一堆看似无规律的事情,能按照某种规律模型,把它们的轨迹和趋势拟合起来。极端值向平均值靠拢的回归分析是对于均值的一个预测,就是从各种输出值向均值回归/靠拢

回归是针对连续的数值。无法预测出来离散值。做线性回归,不要忘了前提假设是y和x呈线性关系,如果两者不是线性关系,就要选用其他的模型啦。

当然在我们建模的过程中,也可以把回归理解为拟合,也就是贴合程度。

但是,贴合程度我们如何来确定呢?评判标准如何来确定?损失函数的引入,我理解的损失函数其实除了单独的评判标准外,我觉得这是一个巧妙的问题转化,把的一元线性函数,转化为了可用最小二乘法解决的问题。
下面就是利用最小二乘法,求最优解的问题了。

损失函数是衡量回归模型误差的函数,也就是我们要的“直线”的评价标准,如上图示,就是各个点到预测值的距离。

这个函数的值越小,说明直线越能拟合我们的数据。

最小二乘法

在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和最小。那么为和要用最小二乘法?而不用绝对值之类的呢?(绝对值或者平方在此处的应用,是为了描述偏离程度,消除负数在数学中的影响。)

因为其能方便的求出最优解(偏导数)

这里用到最小二乘法的目的,就是为了就极值。相当于实际问题转化为了数学问题。或者说是,概率统计问题转化成了逻辑问题。
下面就是Python代码

import numpy as np
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8,9]
y = [0.199,0.289,0.580,0.383,0.980,1.277,1.380,1.675,1.771]

#vstack 堆叠数组
A=np.vstack([x,np.ones(len(x))]).T
a,b =np.linalg.lstsq(A,y)[0]

x=np.array(x)
y=np.array(y)
# 分别为 x轴,y轴,颜色形状,以及标签名,markersize 是标记的尺寸大小
plt.plot(x,y,'*b',label='original data',markersize=15)
plt.plot(x,a*x+b,':r',label=' fitted line')
plt.legend()
plt.show()

效果图如下

赞 (0)

评论 0

评论前必须登录!

登陆 注册