1. 简介

简单线性回归中,您有一个因变量y和一个自变量X。该模型可以表示为:

y=mx+b y=mx+b y=mx+b

其中

  • xxx: 自变量
  • yyy: 因变量
  • mmm: 斜率
  • bbb: 截距

最小二乘法是回归分析中用于估计线性回归模型参数的标准方法。它可以最小化误差的平方和,从而找到数据的最佳拟合直线。

在这里,误差是实际值和预测值之间的差异。实际值是观察到的值,而预测值是模型的估计值。

在这里,我们将使用最小二乘法来估计线性回归模型的参数。我们将使用以下公式来计算回归系数:

ssh=∑i=1n(yi−(mxi+b))2 ssh = \sum_{i=1}^{n}(y_i - (mx_i+b))^2 ssh=i=1n(yi(mxi+b))2

根据链式法则,我们可以计算偏导数:

链式法则:

∂∂x[f(g(x))]=f′(g(x))⋅g′(x) \frac{\partial}{\partial x}[f(g(x))] = f'(g(x)) \cdot g'(x) x[f(g(x))]=f(g(x))g(x)

公示得出,复合函数的导数等于外函数的导数乘以内函数的导数。

设:u=yi−(mxi+b)u=y_i - (mx_i+b)u=yi(mxi+b)

所以:

∂∂x[f(g(x))]=u2⋅(yi−(mxi+b)) \frac{\partial}{\partial x}[f(g(x))] = u^2 \cdot (y_i - (mx_i+b)) x[f(g(x))]=u2(yi(mxi+b))

导数规则:

  • 常数:f(x)=cf(x)=cf(x)=c的导数为0
  • 幂规则:f(x)=xnf(x)=x^nf(x)=xn的导数为nxn−1nx^{n-1}nxn1
  • 乘法常数规则:f(x)=c⋅g(x)的导数为c⋅g′(x)f(x)=c \cdot g(x)的导数为c \cdot g'(x)f(x)=cg(x)的导数为cg(x)
  • 和差规则:f(x)=g(x)±h(x)f(x)=g(x) \pm h(x)f(x)=g(x)±h(x)的导数为g′(x)±h′(x)g'(x) \pm h'(x)g(x)±h(x)
  • 乘法规则:f(x)=g(x)⋅h(x)f(x)=g(x) \cdot h(x)f(x)=g(x)h(x)的导数为g′(x)⋅h(x)+g(x)⋅h′(x)g'(x) \cdot h(x) + g(x) \cdot h'(x)g(x)h(x)+g(x)h(x)
  • 链式法则:f(x)=g(h(x))f(x)=g(h(x))f(x)=g(h(x))的导数为g′(h(x))⋅h′(x)g'(h(x)) \cdot h'(x)g(h(x))h(x)

因为是二次方,所以使用幂规则:(u2u^2u2的导数为2u2u2u

∂∂m=2u⋅(−xi) \frac{\partial }{\partial m} = 2u \cdot (-x_i) m=2u(xi)

∂∂m=−2xi⋅(yi−(mxi+b)) \frac{\partial }{\partial m} = -2x_i \cdot (y_i - (mx_i+b)) m=2xi(yi(mxi+b))

因为0的0次方等于1,所以:

∂∂b=−2u⋅1 \frac{\partial }{\partial b} = -2u \cdot 1 b=2u1

∂b∂b=−2(yi−(mxi+b)) \frac{\partial b}{\partial b} = -2(y_i - (mx_i+b)) bb=2(yi(mxi+b))

我们可以通过求导数来找到最小值。我们将导数设置为0,然后解出m和b。

∂ssh∂m=−2∑i=1nxi(yi−(mxi+b))=0 \frac{\partial ssh}{\partial m} = -2 \sum_{i=1}^{n}x_i(y_i - (mx_i+b)) = 0 mssh=2i=1nxi(yi(mxi+b))=0

∂ssh∂b=−2∑i=1n(yi−(mxi+b))=0 \frac{\partial ssh}{\partial b} = -2 \sum_{i=1}^{n}(y_i - (mx_i+b)) = 0 bssh=2i=1n(yi(mxi+b))=0

∑i=1nxi(yi−(mxi+b))=0 \sum_{i=1}^{n}x_i(y_i - (mx_i+b)) = 0 i=1nxi(yi(mxi+b))=0

∑i=1n(yi−(mxi+b))=0 \sum_{i=1}^{n}(y_i - (mx_i+b)) = 0 i=1n(yi(mxi+b))=0

∑i=1nxiyi−m∑i=1nxi2−b∑i=1nxi=0 \sum_{i=1}^{n}x_iy_i - m\sum_{i=1}^{n}x_i^2 - b\sum_{i=1}^{n}x_i = 0 i=1nxiyimi=1nxi2bi=1nxi=0

∑i=1nyi−m∑i=1nxi−nb=0 \sum_{i=1}^{n}y_i - m\sum_{i=1}^{n}x_i - nb = 0 i=1nyimi=1nxinb=0

接下来,我们将解出m和b。

关于b的方程:

nb=∑i=1nyi−m∑i=1nxi nb = \sum_{i=1}^{n}y_i - m\sum_{i=1}^{n}x_i nb=i=1nyimi=1nxi

b=∑i=1nyi−m∑i=1nxin b = \frac{\sum_{i=1}^{n}y_i-m\sum_{i=1}^{n}x_i}{n} b=ni=1nyimi=1nxi

关于m的方程:

我们已知b的值,所以我们可以将其代入方程中:

∑i=1nxiyi−m∑i=1nxi2−∑i=1nyi−m∑i=1nxin∑i=1nxi=0 \sum_{i=1}^{n}x_iy_i - m\sum_{i=1}^{n}x_i^2 - \frac{\sum_{i=1}^{n}y_i-m\sum_{i=1}^{n}x_i}{n}\sum_{i=1}^{n}x_i = 0 i=1nxiyimi=1nxi2ni=1nyimi=1nxii=1nxi=0

乘n消除分母:

n∑i=1nxiyi−mn∑i=1nxi2−(∑i=1nyi−m∑i=1nxi)∑i=1nxi=0 n\sum_{i=1}^{n}x_iy_i - mn\sum_{i=1}^{n}x_i^2 - (\sum_{i=1}^{n}y_i-m\sum_{i=1}^{n}x_i)\sum_{i=1}^{n}x_i = 0 ni=1nxiyimni=1nxi2(i=1nyimi=1nxi)i=1nxi=0

n∑i=1nxiyi−mn∑i=1nxi2−∑i=1nyi∑i=1nxi+m∑i=1nxi∑i=1nxi=0 n\sum_{i=1}^{n}x_iy_i - mn\sum_{i=1}^{n}x_i^2 - \sum_{i=1}^{n}y_i\sum_{i=1}^{n}x_i + m\sum_{i=1}^{n}x_i\sum_{i=1}^{n}x_i = 0 ni=1nxiyimni=1nxi2i=1nyii=1nxi+mi=1nxii=1nxi=0

n∑i=1nxiyi−mn∑i=1nxi2−∑i=1nyi∑i=1nxi+m(∑i=1nxi)2=0 n\sum_{i=1}^{n}x_iy_i - mn\sum_{i=1}^{n}x_i^2 - \sum_{i=1}^{n}y_i\sum_{i=1}^{n}x_i + m(\sum_{i=1}^{n}x_i)^2 = 0 ni=1nxiyimni=1nxi2i=1nyii=1nxi+m(i=1nxi)2=0

得出mn的方程:

mn∑i=1nxi2−m(∑i=1nxi)2=n∑i=1nxiyi−∑i=1nyi∑i=1nxi mn\sum_{i=1}^{n}x_i^2 - m(\sum_{i=1}^{n}x_i)^2 = n\sum_{i=1}^{n}x_iy_i - \sum_{i=1}^{n}y_i\sum_{i=1}^{n}x_i mni=1nxi2m(i=1nxi)2=ni=1nxiyii=1nyii=1nxi

m(n∑i=1nxi2−(∑i=1nxi)2)=n∑i=1nxiyi−∑i=1nyi∑i=1nxi m(n\sum_{i=1}^{n}x_i^2 - (\sum_{i=1}^{n}x_i)^2) = n\sum_{i=1}^{n}x_iy_i - \sum_{i=1}^{n}y_i\sum_{i=1}^{n}x_i m(ni=1nxi2(i=1nxi)2)=ni=1nxiyii=1nyii=1nxi

m=n∑i=1nxiyi−∑i=1nyi∑i=1nxin∑i=1nxi2−(∑i=1nxi)2 m = \frac{n\sum_{i=1}^{n}x_iy_i - \sum_{i=1}^{n}y_i\sum_{i=1}^{n}x_i}{n\sum_{i=1}^{n}x_i^2 - (\sum_{i=1}^{n}x_i)^2} m=ni=1nxi2(i=1nxi)2ni=1nxiyii=1nyii=1nxi

此时,我们已经得到了m和b的值。分别为:

m=n∑i=1nxiyi−∑i=1nyi∑i=1nxin∑i=1nxi2−(∑i=1nxi)2 m = \frac{n\sum_{i=1}^{n}x_iy_i - \sum_{i=1}^{n}y_i\sum_{i=1}^{n}x_i}{n\sum_{i=1}^{n}x_i^2 - (\sum_{i=1}^{n}x_i)^2} m=ni=1nxi2(i=1nxi)2ni=1nxiyii=1nyii=1nxi

b=∑i=1nyi−m∑i=1nxin b = \frac{\sum_{i=1}^{n}y_i-m\sum_{i=1}^{n}x_i}{n} b=ni=1nyimi=1nxi

简写为:

m=n(∑xy)−(∑x)(∑y)n(∑x2)−(∑x)2 m = \frac{n(\sum_{}^{}xy) - (\sum_{}^{}x)(\sum_{}^{}y)}{n(\sum_{}^{}x^2) - (\sum_{}^{}x)^2} m=n(x2)(x)2n(xy)(x)(y)

b=∑y−m(∑x)n b = \frac{\sum_{}^{}y - m(\sum_{}^{}x)}{n} b=nym(x)

我们可以使用这些公式来计算m和b的值。然后,我们可以使用这些值来计算预测值。

2. 代码实现

2.1 导入库

import numpy as np
import matplotlib.pyplot as plt

2.2 生成数据

x = np.array([1, 2])
y = np.array([2, 3])

在这里插入图片描述

2.3 计算m和b的值

n = len(x)
m = (n * np.sum(x * y) - np.sum(x) * np.sum(y)) / (n * np.sum(x ** 2) - np.sum(x) ** 2)
b = (np.sum(y) - m * np.sum(x)) / n
m,b

得出结果:

(1.0, 1.0)

2.4 计算预测值

根据线性回归模型:

y=mx+b y=mx+b y=mx+b

因为m和b的值都为1,所以:

y=x+1 y=x+1 y=x+1

假设x为3,那么y的值为:

y=3+1=4 y=3+1=4 y=3+1=4

在这里插入图片描述

3. 其他

你可以记录下来,然后使用这些公式来计算m和b的值。然后,您可以使用这些值来计算预测值。

我们使用的值比较简单,你可以尝试使用更多的值来计算m和b的值。不过,这些值必须是线性相关的。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐