机器学习基础(六):从0理解线性回归——从公式到代码实现

一、今日目标

  • 理解线性回归的本质
  • 掌握损失函数与优化过程
  • 手写一个完整的训练流程
  • 通过实验观察模型如何收敛

二、什么是线性回归?

线性回归(Linear Regression)是最基础的监督学习模型之一,其目标是:

用一个线性函数去拟合输入与输出之间的关系

最简单的一维形式:

\[y = wx + b \]

其中:

  • (w):权重(斜率)
  • (b):偏置(截距)

三、问题的本质:我们在求什么?

给定一组数据:

x = [1, 2, 3]
y = [2, 4, 6]

我们要找到一条直线,使其尽可能贴近这些点。

换句话说:

找到最优的 (w, b),让预测值和真实值的误差最小


四、损失函数(Loss Function)

我们使用最常见的均方误差(MSE):

L = \frac{1}{n} \sum_{i=1}^{n} (y_i - (wx_i + b))^2

含义:

  • 衡量预测值与真实值之间的差距
  • 差距越小,模型越好

五、如何优化?(核心)

目标:

\[\min_{w,b} L \]

我们通过梯度下降(Gradient Descent)来优化参数。

求导

对参数求偏导:

\[\frac{\partial L}{\partial w} = -\frac{2}{n} \sum x_i (y_i - (wx_i + b)) \]

\[\frac{\partial L}{\partial b} = -\frac{2}{n} \sum (y_i - (wx_i + b)) \]


参数更新

\[w := w - \eta \cdot \frac{\partial L}{\partial w} \]

\[b := b - \eta \cdot \frac{\partial L}{\partial b} \]

其中:

  • (\(\eta\)):学习率(learning rate)

六、手写线性回归(核心代码)

import numpy as np

def regression_train(x, y, lr, epochs):
    w = 0
    b = 0

    n = len(x)

    for epoch in range(epochs):
        y_pred = w * x + b

        loss = ((y - y_pred) ** 2).mean()

        dw = (-2 * (x * (y - y_pred))).mean()
        db = (-2 * (y - y_pred)).mean()

        w -= lr * dw
        b -= lr * db

        if epoch % 100 == 0:
            print(f"Epoch {epoch}, Loss: {loss:.4f}, w: {w:.4f}, b: {b:.4f}")

    return w, b


if __name__ == "__main__":
    x = np.array([1, 2, 3])
    y_true = np.array([2, 4, 6])

    lr = 0.01
    epochs = 100000

    w, b = regression_train(x, y_true, lr, epochs)

    print(f"w: {w}, b: {b}")

七、训练结果分析

训练结果如下:

最终输出:

w ≈ 1.9996
b ≈ 0.0008

结果解读

理论最优解:

\[w = 2,\quad b = 0 \]

实际结果:

  • w → 2(非常接近)
  • b → 0(误差极小)
  • loss → 0

为什么不是“完全等于”?

原因:

  1. 使用的是数值优化(梯度下降),不是解析解
  2. 学习率有限,不会一步到位
  3. 存在浮点数精度误差

本质上:已经收敛到最优解附近


八、关键经验总结

1. 初始化不敏感

w = 0
b = 0

对线性回归完全可行


2. 学习率决定收敛速度

  • 太小 → 收敛慢
  • 太大 → 发散
  • 合适 → 快速稳定收敛

3. 损失函数是“碗状”的

线性回归的损失函数是凸函数:

  • 一定存在唯一最优解
  • 梯度下降一定能找到

九、从本质理解线性回归

你可以这样理解:

  • 数据点:现实世界
  • 模型:我们对世界的假设
  • 损失函数:衡量假设好坏
  • 梯度下降:不断修正认知


结语

线性回归看似简单,但它包含了机器学习最核心的思想:

模型 + 损失函数 + 优化方法

后续所有复杂模型,本质上都是在这个框架上的扩展。

posted @ 2026-03-30 23:45  YZG5N  阅读(115)  评论(0)    收藏  举报