📈 线性回归

最基础的回归算法,理解数据中的线性关系

📚 什么是线性回归?

🎯 生活化理解

想象你在研究学习时间和考试成绩的关系:

  • 📚 学习1小时 → 考60分
  • 📚 学习2小时 → 考70分
  • 📚 学习3小时 → 考80分
  • 线性回归帮你找出这个规律:分数 ≈ 学习时间 × 10 + 50
  • 🔮 然后你可以预测:学习4小时可能考90分

定义

线性回归(Linear Regression)是一种用于预测连续数值的机器学习算法。它假设输入特征和输出之间存在线性关系。

简单说:找一条直线,让这条直线尽可能接近所有数据点

$$y = w_1 x_1 + w_2 x_2 + ... + w_n x_n + b$$

或者简化为:$y = wx + b$(只有一个特征时)

数学符号解释

  • $y$:要预测的输出值(目标变量)
  • $x_1, x_2, ..., x_n$:输入特征
  • $w_1, w_2, ..., w_n$:权重(参数),表示每个特征的重要性
  • $b$:偏置(截距),直线与y轴的交点
  • $w$:斜率(只有一个特征时的权重)

🎮 交互式演示:线性回归

方法1:点击画布添加数据点

在下方画布上点击,添加数据点。然后点击"拟合直线"按钮,看看线性回归如何找到最佳拟合线!

方法2:调整参数观察效果

手动调整直线的斜率和截距,观察如何影响拟合效果和损失值。

2.0
50
10

🎯 目标:最小化损失

什么是损失函数?

损失函数衡量预测值与真实值之间的差距。线性回归的目标是找到使损失最小的参数 $w$ 和 $b$。

均方误差 (MSE - Mean Squared Error)

$$MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2$$

其中:

  • $n$:数据点的数量
  • $y_i$:第 $i$ 个真实值
  • $\hat{y}_i$:第 $i$ 个预测值($wx_i + b$)

🤔 为什么用平方?

  • 放大大误差:平方使大误差的惩罚更大
  • 总是正数:平方消除正负抵消的问题
  • 数学友好:平方函数可导,便于优化

损失函数可视化

下面展示了不同参数值对应的损失。我们的目标是找到损失最小的点(低谷)。

⚙️ 如何求解?

方法1:解析解(最小二乘法)

对于线性回归,可以直接用数学公式求出最优解:

$$w = \frac{\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})}{\sum_{i=1}^{n}(x_i - \bar{x})^2}$$ $$b = \bar{y} - w\bar{x}$$

其中 $\bar{x}$ 和 $\bar{y}$ 分别是 $x$ 和 $y$ 的平均值。

方法2:梯度下降(迭代优化)

对于复杂情况,可以使用梯度下降等优化算法:

  1. 随机初始化参数 $w$ 和 $b$
  2. 计算损失函数对参数的梯度(导数)
  3. 沿梯度下降方向更新参数
  4. 重复步骤2-3,直到收敛

注意:梯度下降会在后续页面详细讲解

💻 简单实现

Python 伪代码

# 计算平均值
x_mean = sum(x) / len(x)
y_mean = sum(y) / len(y)

# 计算斜率 w
numerator = sum((x[i] - x_mean) * (y[i] - y_mean) for i in range(n))
denominator = sum((x[i] - x_mean) ** 2 for i in range(n))
w = numerator / denominator

# 计算截距 b
b = y_mean - w * x_mean

# 预测
def predict(x_new):
    return w * x_new + b

🌟 应用场景

📊 房价预测

根据房屋面积预测房价

房价 = 面积 × 单价 + 基础价格

💰 销售额预测

根据广告投入预测销售额

销售额 = 广告费 × 转化率 + 基础销量

🌡️ 温度预测

根据时间预测温度

温度 = 时间 × 变化率 + 起始温度

📈 趋势分析

分析数据的线性趋势

识别增长或下降趋势

✅❌ 优缺点

✅ 优点

  • 简单易懂:概念直观,容易理解
  • 计算快速:有解析解,计算效率高
  • 可解释性强:参数有明确的物理意义
  • 不易过拟合:模型简单,泛化能力强

❌ 缺点

  • 只能处理线性关系:如果数据不是线性的,效果不好
  • 对异常值敏感:离群点会严重影响结果
  • 需要假设:假设数据满足线性、独立、同方差等条件

🔮 扩展:多项式回归

如果数据不是线性的怎么办?

当数据呈现曲线关系时,可以使用多项式回归:

$$y = w_0 + w_1 x + w_2 x^2 + w_3 x^3 + ... + w_n x^n$$

通过添加 $x$ 的高次项,可以拟合更复杂的曲线。但要注意过拟合的风险!