线性回归推导

转自:https://blog.youkuaiyun.com/qq_38734403/article/details/80526974

https://blog.youkuaiyun.com/july_sun/article/details/53223962

http://blog.51cto.com/12133258/2051527

 

回归是解决连续数据的预测问题,而分类是解决离散数据的预测问题。线性回归是一个典型的回归问题。可以通过最小二乘法求解。

学习有: 
这里写图片描述 使得 这里写图片描述
  假设有m个数据,我们希望通过x预测的结果f(x)来估计y。其中w和b都是线性回归模型的参数。 
  为了能更好地预测出结果,我们希望自己预测的结果f(x)与y的差值尽可能地小,所以我们可以写出代价函数(cost function)如下: 
这里写图片描述
  接着代入f(x)的公式可以得到: 
这里写图片描述
  不难看出,这里的代价函数表示的是预测值f(x)与实际值y之间的误差的平方。它对应了常用的欧几里得距离简称“欧氏距离”。基于均方误差最小化来求解模型的方法我们叫做“最小二乘法”。在线性回归中,最小二乘法实质上就是找到一条直线,使所有样本数据到该直线的欧式距离之和最小,即误差最小。 
  我们希望这个代价函数能有最小值,那么就分别对其求w和b的偏导,使其等于0,求解方程。 
  先求偏导,得到下面两个式子: 
这里写图片描述

这里写图片描述
  很明显,公式中的参数m,b,w都与i无关,简化时可以直接提出来。 
  另这两个偏导等于0: 
  求解方程组,解得: 
这里写图片描述

这里写图片描述
  这样根据数据集中给出的x和y,我们可以求出w和b来构建简单的线性模型来预测结果。

  接下来,推广到更一般的情况: 
  我们假设数据集中共有m个样本,每个样本有n个特征,用X矩阵表示样本和特征,是一个m×n的矩阵: 
这里写图片描述

  用Y矩阵表示标签,是一个m×1的矩阵: 
这里写图片描述

  为了构建线性模型,我们还需要假设一些参数: 
这里写图片描述
(有时还要加一个偏差(bias)也就是这里写图片描述, 为了推导方便没加,实际上结果是一样的)

  好了,我们可以表示出线性模型了: 
这里写图片描述
  h(x)表示假设,即hypothesis。通过矩阵乘法,我们知道结果是一个n×1的矩阵。 
  跟前面推导单变量的线性回归模型时一样,列出代价函数: 
这里写图片描述
  这里的1/2并无太大意义,只是为了求导时能将参数正好消掉而加上。 
  代价函数代表了误差,我们希望它尽可能地小,所以要对它求偏导并令偏导数为0,求解方程。 
  在求偏导之前先展开一下: 
这里写图片描述
这里写图片描述

  接下来对这里写图片描述 求导,先给出几个矩阵求导的公式: 
这里写图片描述

这里写图片描述

这里写图片描述

  对代价函数这里写图片描述 求关于这里写图片描述 的偏导,并令其等于0。

  求偏导。 
这里写图片描述

  套用前面给出的矩阵求导公式。 
这里写图片描述

  最后化简得到: 
这里写图片描述

  好了,另这个偏导数等于0: 
这里写图片描述

  解得: 
这里写图片描述

### 多元线性回归的数学推导过程 多元线性回归的目标是建立一个模型,用于描述因变量 \( y \) 和多个自变量 \( X_1, X_2, ..., X_n \) 之间的关系。其基本形式如下: \[ y = b_0 + b_1X_1 + b_2X_2 + ... + b_nX_n \] 其中: - \( b_0 \) 是常数项, - \( b_1, b_2, ..., b_n \) 称为偏回归系数。 #### 数据表示 假设我们有 \( m \) 组训练数据,每组数据由 \( n \) 个特征组成,则可以用矩阵的形式表示这些数据。设设计矩阵 \( X \in R^{m\times(n+1)} \),其中每一行为一组观测值,并在每行前增加一列全为 1 的向量以便处理常数项 \( b_0 \)[^3]。具体来说, \[ X = \begin{bmatrix} 1 & x_{11} & x_{12} & \cdots & x_{1n}\\ 1 & x_{21} & x_{22} & \cdots & x_{2n}\\ \vdots & \vdots & \vdots & \ddots & \vdots\\ 1 & x_{m1} & x_{m2} & \cdots & x_{mn} \end{bmatrix}, Y = \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{bmatrix}. \] 参数向量 \( B \) 表示为: \[ B = \begin{bmatrix} b_0 \\ b_1 \\ \vdots \\ b_n \end{bmatrix}. \] 于是我们的模型可以写成矩阵乘法形式: \[ Y = XB. \] #### 损失函数定义 为了找到最佳拟合的参数 \( B \),通常采用最小二乘法作为优化准则。损失函数定义为目标值与预测值之间误差平方和的均值[^2]: \[ L(B) = (Y - XB)^T(Y - XB). \] 展开并简化该表达式得: \[ L(B) = Y^TY - 2B^TX^TY + B^TX^TXB. \] #### 参数估计 要使损失函数达到极小值,需对其求关于 \( B \) 的梯度并令其等于零。计算梯度得到: \[ \nabla_B L(B) = -2X^TY + 2X^TXB. \] 设置梯度为零解出 \( B \): \[ X^TXB = X^TY, \] 当 \( X^TX \) 可逆时,可以直接得出闭式解: \[ B = (X^TX)^{-1}X^TY. \] 这就是著名的正规方程方法[^3]。 ```python import numpy as np def normal_equation(X, Y): """ 使用正规方程求解多元线性回归参数 :param X: 特征矩阵(m,n), 需要在前面加一列全是1的数据代表截距项 :param Y: 输出向量(m,) 返回: B: 计算出来的权重向量(n+1,) """ XT_X_inv = np.linalg.inv(np.dot(X.T, X)) XT_Y = np.dot(X.T, Y) B = np.dot(XT_X_inv, XT_Y) return B ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值