📚 什么是线性回归?
🎯 生活化理解
想象你在研究学习时间和考试成绩的关系:
- 📚 学习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:梯度下降(迭代优化)
对于复杂情况,可以使用梯度下降等优化算法:
- 随机初始化参数 $w$ 和 $b$
- 计算损失函数对参数的梯度(导数)
- 沿梯度下降方向更新参数
- 重复步骤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$ 的高次项,可以拟合更复杂的曲线。但要注意过拟合的风险!