最小二乘法

最小二乘法(Least Squares Method)是一种常用于线性回归分析的统计方法,用于寻找一条直线(或者更一般的线性模型),以最小化观测数据与模型预测值之间的平方误差的总和。线性回归的目标是建立一个线性方程,以描述自变量(通常表示为X)与因变量(通常表示为Y)之间的关系。

以下是最小二乘法线性回归的基本原理:

  1. 线性模型的假设:线性回归假设自变量 X 和因变量 Y 之间存在线性关系,即 Y 可以表示为 X 的线性组合。这可以表示为:

    Y=X\omega+b+\xi

    这里,Y 是因变量,X 是自变量,b 是截距(常数),\omega 是斜率(表示X对Y的影响程度),ε 是误差项,表示模型不能完美拟合真实数据的部分。

  2. 最小化平方误差:最小二乘法的目标是找到最优的β0和β1,以使观测数据点与模型预测值之间的平方误差总和最小。平方误差定义为每个数据点的预测值与观测值之差的平方,然后求和。这可以表示为:

    \sum_{i=1}^{n} (y_i - (b + \omega x_i))^2

    其中,Σ 表示对所有数据点求和,yi 是第i个观测数据点的因变量值,xi 是第i个观测数据点的自变量值。

最小损失函数利用向量表达

最小二乘法的最小损失函数可以使用向量形式表示如下:

假设我们有以下数据:

  • 自变量的向量:X = [x_1, x_2, ..., x_n]^T

  • 因变量的向量:Y = [y_1, y_2, ..., y_n]^T

  • 模型参数向量:W = [b, \omega ]^T

现在,我们可以使用向量和矩阵的乘法来表示最小损失函数:

        首先,构建设计矩阵(Design Matrix)对向量X进行增广处理得到 

X = \begin{bmatrix} 1 &x_1 \\ 1 &x_2\\ \vdots&\vdots \\ 1&x_n \\ \end{bmatrix}

        得到最小损失函数

   L(W)=\sum (Y-XW)=\left \| Y-XW \right \|^2

        最小化损失函数,就是找到使W的值使得L(W) 最小化。这可以通过对损失函数求导并令导数等于零来实现,或者使用其他优化方法,如梯度下降。

         首先向量的二范数等

L(W)=(Y-XW)^T(Y-XW)

         化简得

 L(W)=Y^TY-W^TX^TY-Y^TXW+W^TX^TXW

        W^TX^TY,Y^TXW都为1X1的矩阵,等同于标量。且他们的转置相等,所以本身相等。

求导采用分母布局形式得到最后结果为

  \frac{\partial L(X,Y,W)}{\partial x}=2X^TXW-2X^TY


        分母布局条件下

\frac{\partial AY}{\partial Y}=A^T

\frac{\partial Y^{T}AY}{\partial x}=A^TY+AY

        A为方正,当A为对称方正时

\frac{\partial Y^{T}AY}{\partial x}=2AY


        令W的导函数为0化简得到W=(X^TX)^{-1}X^TX,带入即可得到W的最佳解析解。

        但(X^TX)^{-1}不一定有解,所以W大多数也无解析解。

采用机器学习(machine learning)梯度下降法拟合数值解的方法来解决。

  1. 定义初始W
  2. W=W-\alpha \triangledown     α为学习率,手动设置调参,▽为W的梯度。

迭代

# 定义学习率和迭代次数
learning_rate = 0.01
num_iterations = 1000

# 初始化模型参数,生成一个2行1列的随机矩阵,也可自由赋值。比如W =np.array([[100;0],[0,0.3]])
W = np.random.randn(2, 1)  # beta[0]是截距,beta[1]是斜率

# 使用梯度下降法来估计参数
for iteration in range(num_iterations):  
    
    # 梯度
    gradient = X^T*(XW-Y)
    
    # 更新参数
    W -= learning_rate * gradient

# 打印估计的参数值
print("估计的截距 :", W[0])
print("估计的斜率 :", W[1])

对W进行归一化可统一α。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gatinaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值