回归问题中的损失函数(Loss Function)
损失函数是回归模型训练的核心,它量化预测值与真实值的差距,指导模型优化方向。
🎯 核心作用
评估模型性能:衡量预测好坏的"标尺"
指导参数更新:通过梯度下降最小化损失
决定收敛标准:判断训练何时停止
📊 常用损失函数详解
1️⃣ 均方误差 (MSE) / L2 Loss
$L = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2$
特点 | 说明 |
|---|---|
✅ 优点 | 数学性质好、可导、计算高效 |
⚠️ 缺点 | 对异常值敏感(平方放大误差) |
📌 适用场景 | 数据质量高、无明显异常值 |
2️⃣ 平均绝对误差 (MAE) / L1 Loss
$L = \frac{1}{n}\sum_{i=1}^{n}|y_i - \hat{y}_i|$
特点 | 说明 |
|---|---|
✅ 优点 | 对异常值鲁棒、解释性强 |
⚠️ 缺点 | 在零点不可导、收敛较慢 |
📌 适用场景 | 数据含噪声或异常值 |
3️⃣ Huber Loss (MSE + MAE 的结合)
$L = \begin{cases} \frac{1}{2}(y - \hat{y})^2 & \text{if } |y - \hat{y}| \leq \delta \\ \delta \cdot (|y - \hat{y}| - \frac{1}{2}\delta) & \text{otherwise} \end{cases}$
特点 | 说明 |
|---|---|
✅ 优点 | 兼顾精度与鲁棒性 |
⚠️ 缺点 | 需调参 δ(阈值) |
📌 适用场景 | 数据有少量异常值时 |
4️⃣ 对数-余弦损失 (Log-Cosh Loss)
$L = \sum_{i=1}^{n}\log(\cosh(y_i - \hat{y}_i))$
特点 | 说明 |
|---|---|
✅ 优点 | 平滑、对异常值不敏感 |
⚠️ 缺点 | 计算稍复杂 |
📌 适用场景 | 需要平滑梯度的场景 |
5️⃣ 分位数损失 (Quantile Loss)
$L_\tau = \sum_{i: y_i \geq \hat{y}_i} \tau|y_i - \hat{y}_i| + \sum_{i: y_i < \hat{y}_i} (1-\tau)|y_i - \hat{y}_i|$
特点 | 说明 |
|---|---|
✅ 优点 | 可预测条件分位数(如中位数、90%分位) |
⚠️ 缺点 | 需指定分位点 τ |
📌 适用场景 | 风险预测、不确定性建模 |
🔍 选择指南
数据特征 → 推荐损失函数
─────────────────────────────────────────
高质量、无异常值 → MSE
含噪声、有异常值 → MAE 或 Huber
需要预测区间/风险边界 → Quantile Loss
需要平滑梯度 → Log-Cosh
分类任务(二分类) → 交叉熵
🧪 对比示例
假设真实值 y=10,不同预测下的损失:
预测值 | MSE 损失 | MAE 损失 | Huber(δ=1) 损失 |
|---|---|---|---|
9 | 1 | 1 | 0.5 |
10 | 0 | 0 | 0 |
12 | 4 | 2 | 1.5 |
20 | 100 | 10 | 5.5 |
→ 可以看到 MSE 对大误差(20)惩罚最重!
💡 实践建议
默认先用 MSE:大多数情况下表现良好
检查残差分布:若有长尾/异常值,换 MAE 或 Huber
业务导向:
房价预测:MSE(大误差代价高)
销量预测:MAE(更关注平均偏差)
风险预测:Quantile Loss(关注尾部风险)