线性回归【python,机器学习,算法】

27 篇文章 0 订阅
20 篇文章 0 订阅

线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w’x+e,e为误差服从均值为 0 的正态分布。
回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

下面以一元线性回归为例进行分析。主要思路步骤如下:

  1. 获取样本数据 X, 样本是一系列的散点分布的数据,可以使用直线进行拟合。
  2. 假设拟合的直线为 y = a x + b y=ax+b y=ax+b
  3. 通过数学方法求取拟合直线中 a a a b b b的值。将 a a a b b b带入拟合直线中即可得到线性回归方程。
  4. 将测试数据带入线性方程中,可以预测其实际的近似值。

如何求取 a a a b b b参数

我们采用最小二乘法来求解。过程如下:

  1. 定义损失函数 L ( a , b ) = ∑ i = 1 N ( y i − y ) 2 = ∑ i = 1 N ( y i − a x i − b ) 2 L(a,b)=\sum\limits_{i=1}^{N}(y_i-y)^2=\sum\limits_{i=1}^{N}(y_i-ax_i-b)^2 L(a,b)=i=1N(yiy)2=i=1N(yiaxib)2,
    其中 N 表示样本的数量,y 表示通过回归直线求预测的值。
  2. 要使回归方程效果更佳,损失函数的值应该取最小。通过化简损失函数,然后利用二元一次方程在对称轴处取得最小值的性质得出a,b的值。
    • 化简推导。
      ∑ i = 1 N ( y i − a x i − b ) 2 = ∑ i = 1 N ( y i − a x i ) 2 − ∑ i = 1 N 2 b ( y i − a x i ) + ∑ i = 1 N b 2 = ∑ i = 1 N ( y i − a x i ) 2 − 2 b n ( y ˉ − a x ˉ ) + n ( y ˉ − a x ˉ ) 2 − n ( y ˉ − a x ˉ ) 2 + n b 2 = ∑ i = 1 N ( y i − a x i ) 2 − n ( y ˉ − a x ˉ ) 2 + n ( b − y ˉ + a x ˉ ) 2 = ∑ i = 1 N ( y i ) 2 + a 2 ∑ i = 1 N ( x i ) 2 − 2 a ∑ i = 1 N ( y i x i ) − n y ˉ 2 − a 2 n x ˉ 2 + 2 a n x ˉ y ˉ + n ( b − y ˉ + a x ˉ ) 2 = ∑ i = 1 N ( y i ) 2 + a 2 ( ∑ i = 1 N ( x i ) 2 − n x ˉ 2 ) − 2 a ( ∑ i = 1 N ( y i x i ) − n x ˉ y ˉ ) + n ( b − y ˉ + a x ˉ ) 2 \sum\limits_{i=1}^{N}(y_i-ax_i-b)^2\\ =\sum\limits_{i=1}^{N}(y_i-ax_i)^2 - \sum\limits_{i=1}^{N}2b(y_i-ax_i) + \sum\limits_{i=1}^{N}b^2\\ =\sum\limits_{i=1}^{N}(y_i-ax_i)^2 - 2bn(\bar y - a\bar x) + n(\bar y -a\bar x)^2-n(\bar y -a\bar x)^2+nb^2\\ = \sum\limits_{i=1}^{N}(y_i-ax_i)^2 -n(\bar y -a\bar x)^2 +n(b-\bar y + a\bar x)^2\\ = \sum\limits_{i=1}^{N}(y_i)^2 + a^2\sum\limits_{i=1}^{N}(x_i)^2 - 2a\sum\limits_{i=1}^{N}(y_ix_i)-n\bar y^2-a^2n\bar x^2+2an\bar x \bar y + n( b-\bar y + a\bar x)^2\\ = \sum\limits_{i=1}^{N}(y_i)^2 + a^2(\sum\limits_{i=1}^{N}(x_i)^2 - n\bar x^2) - 2a(\sum\limits_{i=1}^{N}(y_ix_i)-n\bar x \bar y) + n(b-\bar y + a\bar x)^2\\ i=1N(yiaxib)2=i=1N(yiaxi)2i=1N2b(yiaxi)+i=1Nb2=i=1N(yiaxi)22bn(yˉaxˉ)+n(yˉaxˉ)2n(yˉaxˉ)2+nb2=i=1N(yiaxi)2n(yˉaxˉ)2+n(byˉ+axˉ)2=i=1N(yi)2+a2i=1N(xi)22ai=1N(yixi)nyˉ2a2nxˉ2+2anxˉyˉ+n(byˉ+axˉ)2=i=1N(yi)2+a2(i=1N(xi)2nxˉ2)2a(i=1N(yixi)nxˉyˉ)+n(byˉ+axˉ)2

    • 因此有以下推导结论:
      a = ∑ i = 1 N ( y i x i ) − n x ˉ y ˉ ∑ i = 1 N ( x i ) 2 − n x ˉ 2 = ∑ i = 1 N ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 N ( x i − x ˉ ) 2 a=\frac{\sum\limits_{i=1}^{N}(y_ix_i)-n\bar x \bar y}{\sum\limits_{i=1}^{N}(x_i)^2 - n\bar x^2}\\ =\frac{\sum\limits_{i=1}^{N}(x_i-\bar x)(y_i-\bar y)}{\sum\limits_{i=1}^{N}(x_i-\bar x)^2} a=i=1N(xi)2nxˉ2i=1N(yixi)nxˉyˉ=i=1N(xixˉ)2i=1N(xixˉ)(yiyˉ)

      b = y ˉ − a x ˉ b=\bar y -a\bar x b=yˉaxˉ

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值