• 普通最小二乘OLS


    https://www.datalearner.com/blog/1051539312290417

    在统计学中,普通最小二乘法(OLS)是一种用于在线性回归模型中估计未知参数的线性最小二乘法。 OLS通过最小二乘法原则选择一组解释变量的线性函数的参数:最小化给定数据集中观察到的因变量(被预测变量的值)与预测变量之间残差的平方和。这篇博客将简要描述其参数的求解过程(模型的表示参考:最小二乘法简介)。

    我们以一个二元数据为例,假设有一组数据X={(x_1,y_1),cdots,(x_m,y_m)}X={(x1,y1),,(xm,ym)},我们希望求出一条直线,来拟合这一组数据:

    y = xeta + eta_0y=xβ+β0

    残差平方和:

    S(eta) = sum_{i=0}^m (y_i - x_ieta - eta_0)^2S(β)=i=0m(yixiββ0)2

    我们要求出etaβeta_0β0使得上述目标函数取得最小值,显然,可以通过对etaβeta_0β0分别求偏导得到:

    egin{aligned} frac{partial S(eta)}{partialeta} &= sum_{i=1}^m2(y_i-x_ieta-eta_0)(-x_i) \ \ & = sum_{i=1}^m(-2)(x_iy_i - x_i^2eta - eta_0x_i) \ \ & = 2sum_{i=1}^m(x_i^2eta+eta_0x_i - x_iy_i) \ end{aligned}βS(β)=i=1m2(yixiββ0)(xi)=i=1m(2)(xiyixi2ββ0xi)=2i=1m(xi2β+β0xixiyi)

    egin{aligned} frac{partial S(eta)}{partialeta_0} &= sum_{i=1}^m2(y_i-x_ieta-eta_0)(-1) \ \ & = sum_{i=1}^m(-2)(y_i - x_ieta - eta_0) \ \ & = 2sum_{i=1}^m(x_ieta+eta_0 - y_i) \ \ & = 2(meta frac{sum_{i=1}^m(x_i)}{m} + meta_0 - mfrac{sum_{i=1}^my_i}{m}) \ end{aligned}β0S(β)=i=1m2(yixiββ0)(1)=i=1m(2)(yixiββ0)=2i=1m(xiβ+β0yi)=2(mβmi=1m(xi)+mβ0mmi=1myi)

    ar{x} = frac{sum_{i=1}^m(x_i)}{m}x¯=mi=1m(xi)ar{y}=frac{sum_{i=1}^my_i}{m}y¯=mi=1myi

    那么,上述第二个偏导结果:

    frac{partial S(eta)}{partialeta_0} = 2 m (eta ar{x} + eta_0 - ar{y})β0S(β)=2m(βx¯+β0y¯)

    令第二个偏导等于0:

    egin{aligned} 2 m (eta ar{x} + eta_0 - ar{y}) &= 0 \ \ eta_0 = ar{y} - etaar{x} end{aligned}2m(βx¯+β0y¯)β0=y¯βx¯=0

    令上述第一个偏导结果等于0,并带入上述eta_0β0有:

    egin{aligned} frac{partial S(eta)}{partialeta} &= 0\ \ 2sum_{i=1}^m[x_i^2eta+(ar{y} - etaar{x})x_i - x_iy_i] &= 0 \ \ eta(sum_{i=1}^mx_i^2 - ar{x}sum_{i=1}^mx_i) &= sum_{i=1}^mx_iy_i - ar{y}sum_{i=1}^mx_i \ \ eta &= frac{sum_{i=1}^mx_iy_i - ar{y}sum_{i=1}^mx_i}{sum_{i=1}^mx_i^2 - ar{x}sum_{i=1}^mx_i}\ \ eta &= frac{sum_{i=1}^mx_iy_i - ar{y}sum_{i=1}^mx_i - mar{y}ar{x} + m ar{y}ar{x}}{sum_{i=1}^mx_i^2 - 2ar{x}sum_{i=1}^mx_i+ ar{x}sum_{i=1}^mx_i} \ \ eta &= frac{sum_{i=1}^mx_iy_i - ar{y}sum_{i=1}^mx_i - sum_{i=1}^my_iar{x} + m ar{y}ar{x}}{sum_{i=1}^mx_i^2 - 2ar{x}sum_{i=1}^mx_i+ mar{x}^2} \ \ eta &= frac{sum_{i=1}^m(x_iy_i - ar{y}x_i - y_iar{x} + ar{y}ar{x})}{sum_{i=1}^m(x_i - ar{x})^2} \ \ eta &= frac{sum_{i=1}^m(x_i-ar{x})(y_i - ar{y})}{sum_{i=1}^m(x_i - ar{x})^2} \ end{aligned}βS(β)2i=1m[xi2β+(y¯βx¯)xixiyi]β(i=1mxi2x¯i=1mxi)βββββ=0=0=i=1mxiyiy¯i=1mxi=i=1mxi2x¯i=1mxii=1mxiyiy¯i=1mxi=i=1mxi22x¯i=1mxi+x¯i=1mxii=1mxiyiy¯i=1mximy¯x¯+my¯x¯=i=1mxi22x¯i=1mxi+mx¯2i=1mxiyiy¯i=1mxii=1myix¯+my¯x¯=i=1m(xix¯)2i=1m(xiyiy¯xiyix¯+y¯x¯)=i=1m(xix¯)2i=1m(xix¯)(yiy¯)

    这样,etaβeta_0β0就可以求出来了。

    对于多元形式,则可以运用矩阵运算来求解。如上所述,我们的目标函数是:

    S(old{eta}) = sum_{i=1}^m |y_i - sum_{j=1}^n x_{ij}eta_j|^2 = ||y- old{X} old{eta}^T||^2S(β)=i=1myij=1nxijβj2=yXβT2

    如果要使上述目标函数最小,显然其结果为0,即:

    y- old{X} old{eta}^T = 0yXβT=0

    也就是说:

    egin{aligned} old{X}eta^T &= y \ \ old{X}^Told{X}eta^T &= old{X}^Ty \ \ (old{X}^Told{X})^{-1}old{X}^Told{X}eta^T &= (old{X}^Told{X})^{-1}old{X}^Ty \ \ eta^T &= (old{X}^Told{X})^{-1}old{X}^Ty \ end{aligned}XβTXTXβT(XTX)1XTXβTβT=y=XTy=(XTX)1XTy=(XTX)1XTy

  • 相关阅读:
    合并区间
    判断字符串是否是IP
    Python -- 异常处理
    python -- 双下方法
    python -- 判断函数和方法
    python -- 面向对象:反射
    Python -- 面向对象:类的成员
    Python -- 面向对象:类的约束
    Python -- 面向对象的三大特性及深入了解super()
    Python -- mro算法
  • 原文地址:https://www.cnblogs.com/focus-z/p/11931184.html
Copyright © 2020-2023  润新知