线性回归的公式

线性回归方程:


线性回归的一般式:f(x)=b*x + a;

 

第一步:


1)由所给出的系列值分别计算两个变量的平均值
x平均=(Σxi)/n y平均=(Σyi)/n 【Σ是把相应的值加起来,n是数据组数】

解释:分别求出来x和y的平均值


第二步:


2)计算一系列的差值(即△)
△xi=xi-x平均 【应该有n个△x】;△yi=yi-y平均 【也应该有n个】

解释:每一个x减去平均值,每一个y值减去平均值

 

第三步:


3)求出两个 和 值

A》 Σ△xi△yi=△x1*△y1+...+△xn*△yn
B》 Σ△²xi=(△x1)²+...+(△xn)²

解释:A求出来(x减去x的平均值)乘以(y减去y的平均值),所有值相加,B(x减去x的平均值)的平方,求和

 

第三步:


4)由公式求出  b=Σ△xi△yi / Σ△²xi 【通常2)、3)、4)并不分别进行】

解释:求b的值,b的值就等于第三步A步骤计算的值除以B步骤计算的值。

 

第四步:


5)由公式算出 a a=y平均-b*x平均
解释:计算a的值,a就等于y的平均值减去b乘以x的平均值。

然后按格式写出回归方程即得.

把计算出来的a和b的值带入到上面的公式里面,就可以写出来直线方程了。

有数学功底的直接看这个:


回归流程 我 通常这样进行:
1)由所给出的系列值分别计算两个变量的平均值
x平均=(Σxi)/n y平均=(Σyi)/n 【Σ是把相应的值加起来,n是数据组数】
2)计算一系列的差值(即△)
△xi=xi-x平均 【应该有n个△x】;△yi=yi-y平均 【也应该有n个】
3)求出两个 和 值 A》 Σ△xi△yi=△x1*△y1+。。。+△xn*△yn
B》 Σ△²xi=(△x1)²+。。。+(△xn)²
4)由公式求出 b b=Σ△xi△yi / Σ△²xi 【通常2)、3)、4)并不分别进行】
5)由公式算出 a a=y平均-b*x平均


 

### 一元线性回归的数学表达 在一元线性回归模型中,目标是找到一条直线来拟合数据点 $(x_i, y_i)$,使得预测值 $\hat{y}_i$ 尽可能接近实际观测值 $y_i$。该模型可以表示为: $$ \hat{y} = wx + b $$ 其中: - $w$ 是权重参数(斜率),表示自变量 $x$ 的变化对因变量 $y$ 的影响程度; - $b$ 是偏置项(截距),表示当 $x=0$ 时的预测值。 为了估计最佳的参数 $w$ 和 $b$,通常采用最小化平均损失函数的方法。常用的损失函数是最小二乘法下的平方误差损失函数[^3]: $$ L(w, b) = \frac{1}{n}\sum_{i=1}^{n}(y_i - (wx_i + b))^2 $$ 通过对损失函数分别关于 $w$ 和 $b$ 求偏导数并令其等于零,可以获得最优解的解析形式。具体计算如下: #### 偏导数推导 对于 $b$ 的偏导数有: $$ \frac{\partial L}{\partial b} = -\frac{2}{n}\sum_{i=1}^{n}(y_i - (wx_i + b)) $$ 令 $\frac{\partial L}{\partial b} = 0$,可得: $$ b = \bar{y} - w\bar{x} $$ 其中 $\bar{x}$ 和 $\bar{y}$ 分别代表输入特征和标签的均值。 接着,对于 $w$ 的偏导数有: $$ \frac{\partial L}{\partial w} = -\frac{2}{n}\sum_{i=1}^{n}x_i(y_i - (wx_i + b)) $$ 代入已知的 $b$ 表达式后整理得到: $$ w = \frac{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})}{\sum_{i=1}^{n}(x_i-\bar{x})^2} $$ 或者等效地写成另一种形式: $$ w = \frac{n\sum x_iy_i - \sum x_i \sum y_i}{n\sum x_i^2 - (\sum x_i)^2} $$ 这两种形式可以通过简单的代数变换相互转换。 最终的一元线性回归公式为: $$ \begin{aligned} w &= \frac{\sum(x_i-\bar{x})(y_i-\bar{y})}{\sum(x_i-\bar{x})^2}, \\ b &= \bar{y} - w\bar{x}. \end{aligned} $$ --- ### Python 实现示例 以下是基于上述公式的简单实现代码: ```python import numpy as np def linear_regression(X, Y): n = len(X) sum_x = np.sum(X) sum_y = np.sum(Y) sum_xy = np.dot(X, Y) sum_xx = np.dot(X, X) # 计算w和b w = (n * sum_xy - sum_x * sum_y) / (n * sum_xx - sum_x ** 2) b = (sum_y - w * sum_x) / n return w, b # 测试数据 X = np.array([1, 2, 3, 4, 5]) Y = np.array([2.2, 4.1, 6.1, 8.2, 9.9]) w, b = linear_regression(X, Y) print(f"w: {w:.4f}, b: {b:.4f}") ``` 运行以上代码即可获得对应的数据集上的一元线性回归系数 $w$ 和 $b$。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值