最小二乘和回归分析的区别:
最小二乘法是在模型确定的情况下对未知参数由观测数据来进行估计,而回归分析则是研究变量间相关关系的统计分析方法。
一、最小二乘
需要补基础的看这!
定义:最小二乘法(最小平方法)是一种数学优化技术,它通过最小化误差的平方和寻找数据的最佳函数匹配。
E
=
∑
i
=
1
n
e
i
2
=
∑
i
=
1
n
(
y
i
−
f
(
x
i
)
)
2
E=\sum_{i=1}^{n}e_i^2=\sum_{i=1}^{n}({y_i-f(x_i))}^2
E=i=1∑nei2=i=1∑n(yi−f(xi))2求使E最小时的
f
(
x
)
f(x)
f(x)。以一元线性拟合为例,令
f
(
x
)
=
a
x
+
b
f(x)=ax+b
f(x)=ax+b,求使
∑
i
=
1
n
(
y
i
−
a
x
i
−
b
)
2
\sum_{i=1}^{n}({y_i-ax_i-b)}^2
∑i=1n(yi−axi−b)2最小时a,b的值。
要进行最小二乘拟合的话,python有现成的库函数可以调用。但是作为一个学习者,当调包侠是没有任何意义的。因此,这里自己实现,加深理解。这里以一元线性拟合为例,通过对上式求偏导,并令偏导等于0.得到
a
=
m
∑
i
=
1
n
(
x
i
)
2
−
(
∑
i
=
1
n
(
x
i
)
2
)
a=m\sum_{i=1}^n(x_i)^2-(\sum_{i=1}^n(x_i)^2)
a=mi=1∑n(xi)2−(i=1∑n(xi)2)
1.手动实现
待补充
2.scipy库函数实现
scipy官方手册
调用方法:
- 确定需要拟合的函数
#如:一元线性拟合函数
def func(p,x):
p1,p0=p
y=p1*x+p0
return y
- 定义误差函数(损失函数,拟合函数会重复调用直至误差值足够小,是一个迭代最优的过程)
def residuals(p,x, y):
res= y - fun(p,x)
return res
- 调用函数
#调用leastsq函数
#输入:损失函数名,初始参数(和X的维度相同;具体数值不重要,可以全1),数据
#输出:最小二乘意义下的参数
from scipy.optimize import leastaq
impport numpy as np
pars=np.ones(X)#和X的维度相同
r = leastsq(residuals, pars, args=(X, Y)) #三个参数:误差函数、函数参数列表、数据点