【漫话机器学习系列】061.线性回归参数计算(Finding Linear Regression Parameters)

线性回归参数计算方法及优化

线性回归参数计算(Finding Linear Regression Parameters)

1. 简介

线性回归是一种基础的回归模型,用于通过一个或多个特征预测目标变量。其模型形式为:

其中:

  • y:目标变量(因变量)。
  • X:特征矩阵(自变量)。
  • β:待求解的回归参数(权重)。
  • ϵ:误差项。

线性回归的目标是找到回归参数 β,使预测值 Xβ 与目标 y 的差距最小。


2. 参数求解公式

通过最小化残差平方和(RSS,Residual Sum of Squares)来确定最佳参数。RSS 定义为:

展开后:

2.1 最小化 RSS 的闭式解

对 RSS 关于 β 求导并令其为 0:

解得:

2.2 特殊情况

  • 不可逆(如特征之间高度相关),可以使用伪逆 () 计算参数:


3. 梯度下降法

如果特征数量较大或数据量较多,使用梯度下降法是一种更高效的选择。

  1. 目标函数

    其中 m 是样本数量。

  2. 梯度计算

  3. 更新规则

    其中:

    • α:学习率。

4. 示例代码

4.1 使用闭式解求解参数

import numpy as np

# 示例数据
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])  # 特征矩阵
y = np.array([1, 2, 2, 3])  # 目标变量

# 添加截距项
X = np.hstack([np.ones((X.shape[0], 1)), X])

# 计算参数
beta = np.linalg.inv(X.T @ X) @ X.T @ y
print("闭式解计算的参数:", beta)

运行结果 

闭式解计算的参数: [0. 0. 1.]

 

4.2 使用梯度下降法求解参数

import numpy as np

# 示例数据
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])  # 特征矩阵
y = np.array([1, 2, 2, 3])  # 目标变量

# 初始化参数
beta = np.zeros(X.shape[1])
learning_rate = 0.01
epochs = 1000

# 梯度下降
for epoch in range(epochs):
    gradient = -1 / len(y) * X.T @ (y - X @ beta)
    beta -= learning_rate * gradient

print("梯度下降计算的参数:", beta)

 运行结果

梯度下降计算的参数: [0.17636561 0.86974083]

 


5. 参数解释

    • 截距项,表示当所有特征值为 0 时的预测值。
    • 每个特征的系数,表示该特征对目标变量的线性影响。值越大,影响越显著。

6. 优化方法

  1. 正则化

    • 为了避免过拟合,可加入正则化项:
      • 岭回归(L2正则化):
      • Lasso回归(L1正则化):
  2. 标准化

    • 特征标准化(零均值和单位方差)可提升求解效率。

7. 总结

线性回归参数的求解有两种主要方法:

  1. 闭式解:适用于中小规模数据,但计算复杂度较高。
  2. 梯度下降:适用于大规模数据,通过迭代优化找到参数。

线性回归是回归分析中的基础方法,为其他复杂模型(如岭回归、Lasso回归和广义线性模型)提供了理论基础。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值