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

多元线性回归的梯度下降实现不收敛,仅前期迭代有小幅变动

问题定位及修复方案

1. 未做特征归一化/标准化

多元线性回归执行梯度下降的前提是各特征量级接近,若不同特征取值范围相差几个数量级,会导致梯度更新方向偏移、收敛速度极慢,表现为参数更新幅度极小、成本长时间停滞不动。

  • 修复方法:对输入的X矩阵做标准化处理,公式为X = (X - X.mean(axis=0)) / X.std(axis=0),注意偏置项对应的全1列不要做归一化。

2. 学习率alpha设置不合理

如果alpha取值过小,每次参数更新的幅度会非常小,需要极多轮迭代才能看到明显的参数变化;如果alpha取值过大,则可能出现成本震荡甚至上升的情况。

  • 修复方法:先尝试把alpha放大10~100倍测试,观察成本是否持续下降,如果出现成本上升就调小alpha,直到成本能稳定持续下降即可。

3. 未给X添加偏置项

如果未给特征矩阵X添加全1的偏置列,模型只能拟合过原点的直线,拟合能力受限,成本下降到一定程度就会停滞,参数也不会再明显更新。

  • 修复方法:在输入梯度下降前给X添加一列全1,代码示例:X = np.hstack([np.ones((X.shape[0], 1)), X])

4. 初始化theta的数据类型异常

如果初始化theta时用了整数类型(int),每次更新的幅度如果小于1,会被整数类型截断,表现为参数更新1~2次后就完全不动。

  • 修复方法:初始化theta时指定为浮点类型,比如theta = np.zeros(d, dtype=np.float64)

5. 代码缩进错误

你贴出的computeCost方法中,参数说明后的代码没有正确缩进,会导致这部分代码不属于该方法,计算成本时返回值异常,影响对收敛状态的判断。

  • 修复方法:把computeCost方法下的逻辑代码统一缩进一层,和方法内的注释对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:45:03