主页 > 其他  > 

用deepseek学大模型05-线性回归

用deepseek学大模型05-线性回归

deepseek :多元线性回归的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示, 模型应用场景和优缺点,及如何改进解决及改进方法数据推导。

一、数学推导 1. 模型定义 输入: 样本数 n n n,特征数 m m m。特征矩阵 X ∈ R n × ( m + 1 ) X \in \mathbb{R}^{n \times (m+1)} X∈Rn×(m+1)(含截距项全1列)。参数向量 β = [ β 0 , β 1 , … , β m ] T ∈ R ( m + 1 ) × 1 \beta = [\beta_0, \beta_1, \dots, \beta_m]^T \in \mathbb{R}^{(m+1) \times 1} β=[β0​,β1​,…,βm​]T∈R(m+1)×1。 预测值: y ^ = X β 或标量形式 y ^ i = β 0 + ∑ j = 1 m β j x i j \hat{y} = X \beta \quad \text{或标量形式} \quad \hat{y}_i = \beta_0 + \sum_{j=1}^m \beta_j x_{ij} y^​=Xβ或标量形式y^​i​=β0​+j=1∑m​βj​xij​
2. 目标函数与损失函数 目标:最小化预测值与真实值的平方误差。损失函数(MSE): L ( β ) = 1 2 n ∑ i = 1 n ( y ^ i − y i ) 2 = 1 2 n ∥ X β − y ∥ 2 2 L(\beta) = \frac{1}{2n} \sum_{i=1}^n (\hat{y}_i - y_i)^2 = \frac{1}{2n} \| X \beta - y \|_2^2 L(β)=2n1​i=1∑n​(y^​i​−yi​)2=2n1​∥Xβ−y∥22​ 系数 1 2 n \frac{1}{2n} 2n1​:简化梯度计算,避免平方项导数的系数干扰。
3. 梯度下降推导 标量形式

对每个参数 β j \beta_j βj​ 求偏导:

截距项 β 0 \beta_0 β0​: ∂ L ∂ β 0 = 1 n ∑ i = 1 n ( y ^ i − y i ) \frac{\partial L}{\partial \beta_0} = \frac{1}{n} \sum_{i=1}^n (\hat{y}_i - y_i) ∂β0​∂L​=n1​i=1∑n​(y^​i​−yi​)特征权重 β j \beta_j βj​( j ≥ 1 j \geq 1 j≥1): ∂ L ∂ β j = 1 n ∑ i = 1 n ( y ^ i − y i ) x i j \frac{\partial L}{\partial \beta_j} = \frac{1}{n} \sum_{i=1}^n (\hat{y}_i - y_i) x_{ij} ∂βj​∂L​=n1​i=1∑n​(y^​i​−yi​)xij​ 矩阵形式

利用矩阵微分法则: ∇ β L = 1 n X T ( X β − y ) \nabla_\beta L = \frac{1}{n} X^T (X \beta - y) ∇β​L=n1​XT(Xβ−y)

推导过程: L ( β ) = 1 2 n ( X β − y ) T ( X β − y )    ⟹    ∂ L ∂ β = 1 n X T ( X β − y ) L(\beta) = \frac{1}{2n} (X \beta - y)^T (X \beta - y) \implies \frac{\partial L}{\partial \beta} = \frac{1}{n} X^T (X \beta - y) L(β)=2n1​(Xβ−y)T(Xβ−y)⟹∂β∂L​=n1​XT(Xβ−y) 梯度下降更新公式

β ( t + 1 ) = β ( t ) − η ∇ β L = β ( t ) − η n X T ( X β ( t ) − y ) \beta^{(t+1)} = \beta^{(t)} - \eta \nabla_\beta L = \beta^{(t)} - \frac{\eta}{n} X^T (X \beta^{(t)} - y) β(t+1)=β(t)−η∇β​L=β(t)−nη​XT(Xβ(t)−y)

学习率 η \eta η:控制参数更新步长。
二、应用场景 连续值预测: 房价预测、销售额预测、股票价格趋势分析。 因果关系分析: 研究广告投入与销量的量化关系。 基线模型: 作为复杂模型(如神经网络)的性能对比基准。
三、优缺点及解决方法 优点 简单高效:计算复杂度低(( O(nm) ) 每轮梯度下降)。可解释性强:参数直接反映特征对目标的影响程度。闭式解存在:当 X T X X^T X XTX可逆时,可直接求解 β = ( X T X ) − 1 X T y \beta = (X^T X)^{-1} X^T y β=(XTX)−1XTy。 缺点及解决方法 缺点解决方法线性假设限制引入多项式特征或使用非线性模型(如决策树、神经网络)。多重共线性正则化(岭回归、Lasso)、主成分分析(PCA)降维。对异常值敏感使用鲁棒损失函数(Huber损失)、数据清洗或加权最小二乘法。异方差性(方差不均)加权回归、Box-Cox变换稳定方差。特征维度高时不稳定正则化、逐步回归、特征选择(如基于p值或AIC准则)。 改进方法与数学推导 1. 正则化(Ridge 回归)

目标函数: L = 1 2 m ∥ X w − y ∥ 2 + λ ∥ w ∥ 2 L = \frac{1}{2m} \|Xw - y\|^2 + \lambda \|w\|^2 L=2m1​∥Xw−y∥2+λ∥w∥2

梯度更新: ∇ w L = 1 m X T ( X w − y ) + 2 λ m w \nabla_w L = \frac{1}{m} X^T (Xw - y) + \frac{2\lambda}{m} w ∇w​L=m1​XT(Xw−y)+m2λ​w

PyTorch 实现:

optimizer = torch.optim.SGD(model.parameters(), lr=0.1, weight_decay=1.0) # weight_decay 对应 λ 2. 数据预处理 标准化:使特征均值为 0,方差为 1,加速收敛。异常值处理:使用 IQR 或 Z-Score 过滤离群点。 3. 特征工程 多项式扩展:将 x 1 , x 2 x_1, x_2 x1​,x2​ 扩展为 x 1 2 , x 2 2 , x 1 x 2 x_1^2, x_2^2, x_1x_2 x12​,x22​,x1​x2​ 等,再用线性回归。

数学形式: y ^ = w 1 x 1 + w 2 x 2 + w 3 x 1 2 + w 4 x 2 2 + w 5 x 1 x 2 + b \hat{y} = w_1 x_1 + w_2 x_2 + w_3 x_1^2 + w_4 x_2^2 + w_5 x_1x_2 + b y^​=w1​x1​+w2​x2​+w3​x12​+w4​x22​+w5​x1​x2​+b


四、关键公式总结 内容标量形式矩阵形式预测值 y ^ i = β 0 + β 1 x i 1 + ⋯ + β m x i m \hat{y}_i = \beta_0 + \beta_1 x_{i1} + \dots + \beta_m x_{im} y^​i​=β0​+β1​xi1​+⋯+βm​xim​ y ^ = X β \hat{y} = X \beta y^​=Xβ损失函数 L = 1 2 n ∑ i = 1 n ( y ^ i − y i ) 2 L = \frac{1}{2n} \sum_{i=1}^n (\hat{y}_i - y_i)^2 L=2n1​∑i=1n​(y^​i​−yi​)2 L = 1 2 n ∥ X β − y ∥ 2 2 L = \frac{1}{2n} \| X \beta - y \|_2^2 L=2n1​∥Xβ−y∥22​梯度 ∂ L ∂ β j = 1 n ∑ i = 1 n ( y ^ i − y i ) x i j \frac{\partial L}{\partial \beta_j} = \frac{1}{n} \sum_{i=1}^n (\hat{y}_i - y_i) x_{ij} ∂βj​∂L​=n1​∑i=1n​(y^​i​−yi​)xij​ ∇ β L = 1 n X T ( X β − y ) \nabla_\beta L = \frac{1}{n} X^T (X \beta - y) ∇β​L=n1​XT(Xβ−y)
五、实际应用示例 房价预测: 特征:房屋面积、卧室数量、地理位置。输出:房价。方法:通过梯度下降拟合参数,预测新样本价格。 广告效果分析: 特征:电视、网络、报纸广告投入。输出:销售额增长。结论:参数正负性指示广告渠道的有效性。
六、扩展:正则化改进 岭回归(L2正则化): L ( β ) = 1 2 n ∥ X β − y ∥ 2 2 + λ ∥ β ∥ 2 2 L(\beta) = \frac{1}{2n} \| X \beta - y \|_2^2 + \lambda \| \beta \|_2^2 L(β)=2n1​∥Xβ−y∥22​+λ∥β∥22​ 解决多重共线性,防止过拟合。 Lasso(L1正则化): L ( β ) = 1 2 n ∥ X β − y ∥ 2 2 + λ ∥ β ∥ 1 L(\beta) = \frac{1}{2n} \| X \beta - y \|_2^2 + \lambda \| \beta \|_1 L(β)=2n1​∥Xβ−y∥22​+λ∥β∥1​ 自动特征选择,稀疏解。 完整代码示例
import torch import torch.nn as nn import torch.optim as optim import matplotlib.pyplot as plt # 生成随机数据 n_samples = 100 n_features = 2 X = torch.randn(n_samples, n_features) true_w = torch.tensor([[3.0], [4.0]]) true_b = torch.tensor([2.0]) y = X @ true_w + true_b + torch.randn(n_samples, 1) * 0.1 # 定义模型 class LinearRegression(nn.Module): def __init__(self, input_dim, output_dim): super(LinearRegression, self).__init__() self.linear = nn.Linear(input_dim, output_dim) def forward(self, x): return self.linear(x) model = LinearRegression(n_features, 1) # 定义损失函数和优化器 criterion = nn.MSELoss() optimizer = optim.SGD(model.parameters(), lr=0.01) # 训练模型 n_epochs = 1000 losses = [] # 初始化一个空列表来存储损失值 for epoch in range(n_epochs): # 前向传播 y_pred = model(X) # 计算损失 loss = criterion(y_pred, y) losses.append(loss.item()) # 将损失值添加到列表中 # 反向传播和优化 optimizer.zero_grad() loss.backward() optimizer.step() if (epoch+1) % 100 == 0: print(f'Epoch [{epoch+1}/{n_epochs}], Loss: {loss.item():.4f}') # 可视化损失函数 plt.plot(losses) # 绘制损失函数随训练轮数的变化 plt.xlabel('Epoch') plt.ylabel('Loss') plt.title('Training Loss') plt.savefig("lr.png") plt.show() 七、总结

多元线性回归是机器学习的基石模型,优势在于简单性和可解释性,但受限于线性假设。实际应用中需结合数据预处理、正则化或非线性扩展方法以提升性能。矩阵形式计算高效,适合编程实现;标量形式便于理解梯度下降的微观机制。

标签:

用deepseek学大模型05-线性回归由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“用deepseek学大模型05-线性回归