线性回归 最小二乘法求

这篇博客介绍了线性回归作为监督学习中的回归算法,重点讲述了线性回归模型和损失函数,特别是通过平方损失函数和最小二乘法求解回归方程的过程。文章详细推导了如何对参数a和b进行求导,以找到使误差最小的直线方程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 回归是另一类重要的监督学习算法。与分类不同的是,回归问题的目标是通过对训练样本的学习,得到从样本特征到样本标签之间的映射,且样本标签是连续值。
  • 线性回归的问题中,目标值与特征之间存在线性相关的关系
  • 线性回归模型
    • 对于线性回归算法,希望从训练数据中学习到线性回归方程,即: y = b + ∑ i = 1 n w i x i y = b + \sum_{i=1}^{n}w_{i}x_{i} y=b+i=1nwixi
      其中,b是偏置, w i w_{i} wi是回归系数,另 x 0 = 1 x_{0} = 1 x0=1 则回归方程为: y = ∑ i = 0 n w i x i y = \sum_{i=0}^{n}w_{i}x_{i} y=i=0nwixi
  • 损失函数

    线性回归的损失函数可以是绝对损失 d = ∣ y − y ^ ∣ d = |y-\hat{y}| d=yy^或者平方损失 d = ( y − y ^ ) 2 d = (y-\hat{y})^2 d=(yy^)2.

  • 最小二乘法求解以及推导

    看了书上的矩阵方式,不太懂,就用一般的方式求吧。

    • 假设最终的直线方程为 y = a x + b y = ax + b y=ax+b,存在一个数据集 { ( x 1 , y 1 ) , ( x 2 , y 2 , . . . . . . , ( x n , y n ) ) } \left \{ (x_{1},y_{1}),(x_{2},y_{2}, ......,(x_{n},y_{n}))\right \} {(x1,y1),(x2,y2,......,(xn,yn))}。则对于数据集中的点 ( x i , y i ) (x_{i},y_{i}) (xi,yi)的回归误差为 d = y i − a x i − b d = y_{i} - ax_{i} - b d=yiaxib。那么对于整个数据集来说,误差为: D = ∑ i = 1 n ( y i − a x i − b ) 2 D = \sum_{i=1}^{n}(y_{i} - ax_{i} - b)^2 D=i=1n(yiaxib)2
      所以,只要使得整个数据及上的误差尽可能的小,则回归方程拟合的越好。所以取极值对a,b求导。
    • 误差函数对a求导: ϑ ϑ a D = ∑ i = 1 n 2 ( y i − a x i − b ) ∗ ( − x i ) \frac{\vartheta }{\vartheta a}D = \sum_{i=1}^{n}2(y_i - ax_{i}- b) * (-x_{i}) ϑaϑD=i=1n2(yiaxib)(xi)
    • 误差函数对b求导: ϑ ϑ b D = ∑ i = 1 n 2 ( y i − a x i − b ) ∗ ( − 1 ) \frac{\vartheta }{\vartheta b}D = \sum_{i=1}^{n}2(y_i - ax_{i} - b) * (-1) ϑbϑD=i=1n2(yiaxib)(1)
    • ϑ ϑ b D = 0 \frac{\vartheta }{\vartheta b}D = 0 ϑbϑD=0得: b = y ˉ − a x ˉ b = \bar{y} - a\bar{x} b=yˉaxˉ
    • ϑ ϑ a D = 0 \frac{\vartheta }{\vartheta a}D = 0 ϑaϑD=0并将 b = y ˉ − a x ˉ b = \bar{y} - a\bar{x} b=yˉaxˉ代入得到: a = ∑ i = 1 n x i y i − n x ˉ y ˉ ∑ i = 1 n x i 2 − n x ˉ a = \frac{\sum_{i=1}^{n}x_{i}y_{i} - n\bar{x}\bar{y}}{\sum_{i=1}^{n}x_{i}^{2} -n\bar{x} } a=i=1nxi2nxˉi=1nxiyinxˉyˉ
      因为: ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) = ∑ i = 1 n x i y i − n x ˉ y ˉ \sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y}) = \sum_{i=1}^{n}x_{i}y_{i} - n\bar{x}\bar{y} i=1n(xixˉ)(yiyˉ)=i=1nxiyinxˉyˉ
      ∑ i = 1 n ( x i − x ˉ ) 2 = ∑ i = 1 n x i 2 − n x ˉ \sum_{i=1}^{n}(x_{i} - \bar{x})^2 = \sum_{i=1}^{n}x_{i}^{2} -n\bar{x} i=1n(xixˉ)2=i=1nxi2nxˉ
      所以: a = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 n ( x i − x ˉ ) 2 a = \frac{\sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y})}{\sum_{i=1}^{n}(x_{i} - \bar{x})^2} a=i=1n(xixˉ)2i=1n(xixˉ)(yiyˉ)
    • 所以根据上述的公式,将数据集的数据代入即可求得a b参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值