You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从零实现多元线性回归梯度下降算法,训练集预测异常精准求助

多元线性回归梯度下降算法异常精准结果排查

问题描述

从零编写多元线性回归的梯度下降算法后,用自制随机训练数据集预测时,结果异常精准,几乎完全贴合训练集标签,更换数据后问题依旧。

算法代码

import numpy as np

class gradientdescent:
     def fit(self,X,Y):
        lr=0.005    *learning rate*  # 存在语法错误
        b=0
        M=np.array(1)
        M=np.arange(X.shape[1])
        n=np.size(X,0)
        M.fill(1)     # 初始化梯度参数
        for i in range(10000):
             sum=0
             sum1=0
             for j in range(n):
                 sum=sum+(np.dot(X[j],M)+b-Y[j])*X[j]
                 sum1=sum1+(np.dot(X[j],M)+b-Y[j])
             m_gradient=lr*sum/n
             b_gradient=lr*sum1/n
             M=M-m_gradient
             b=b-b_gradient
        self.b=b
        self.M=M
        self.n=n

     def predict(self,X):
           for i in range(self.n):
              print(np.dot(self.M,X[i])+self.b)

训练数据集

X=np.array([[1,2,3,4,5],[2,1,4,3,5],[1,3,2,5,4],[3,0,1,2,4],[0,1,2,4,3]])
Y=np.array([5,6,2,8,100])

预测结果

5.000000000080892
5.999999999956618
1.9999999999655422
8.000000000004814
99.99999999998795

问题根源

核心是过拟合+欠定系统:

  • 训练样本数(5个)和特征数(5个)相等,相当于解一个5元一次方程组,存在无数组参数能完美满足所有训练样本的等式。梯度下降迭代10000次后,自然会收敛到其中一组参数,因此预测训练集时完全精准。
  • 这种场景下模型没有泛化能力,换一组样本数等于特征数的数据,依然会出现完全拟合的情况,只有当样本数远大于特征数时,模型才会因无法完美拟合所有样本而产生合理误差。

代码中的具体问题

  1. 语法错误:lr=0.005 *learning rate*注释方式错误,Python注释需用#,这行代码会触发运算错误。
  2. 冗余参数初始化:M=np.array(1)→M=np.arange(X.shape[1])→M.fill(1)可简化为M = np.ones(X.shape[1])。
  3. 预测函数逻辑错误:predict方法用self.n(训练集样本数)遍历输入X,若输入新测试集(样本数与训练集不同),会导致遍历不完整或索引越界,应遍历输入X的所有样本。

修正方案

  1. 调整数据集规模:增加训练样本数量,确保样本数至少是特征数的3-5倍,让模型无法完美拟合所有样本,体现泛化能力。
  2. 修复代码问题:
    • 修正注释和参数初始化:
      def fit(self,X,Y):
         lr = 0.005  # learning rate
         b = 0
         n = np.size(X, 0)
         M = np.ones(X.shape[1])  # 直接初始化全1数组
         # 后续训练逻辑不变
      
    • 重构预测函数:
      def predict(self, X):
          # 支持任意样本数的输入,返回所有预测结果
          return np.dot(X, self.M) + self.b
      
  3. 加入正则化或早停:若样本数有限,可加入L2正则化约束参数大小,或训练时监控验证集损失,提前停止迭代,避免过度拟合。

内容的提问来源于stack exchange,提问作者Srivaths Gondi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 06:45:56