1. 引言
在机器学习中,cost(代价)、loss(损失) 和 objective function(目标函数) 是常被提及的术语。虽然它们经常被混用,但在某些语境下有细微区别:
- Loss Function:衡量模型对单个样本的预测误差。
- Cost Function:衡量模型在多个样本(如训练集、验证集)上的平均误差。
- Objective Function:我们在训练过程中实际优化的目标函数,通常包括 cost 和正则化项。
理解这三者的区别有助于我们更准确地评估模型表现、设计训练策略。
2. 损失函数(Loss Function)
Loss Function 的作用是衡量模型对单个样本的预测误差。
例如在回归任务中,常见的损失函数包括:
- 平方损失(Squared Loss): $$ L_{\text{square}}(\hat{y}, y) = (\hat{y} - y)^2 $$
- 绝对损失(Absolute Loss): $$ L_{\text{abs}}(\hat{y}, y) = |\hat{y} - y| $$
2.1 示例:房价预测中的损失计算
假设我们预测某套房子价格为 110 千美元,实际售价为 105 千美元:
平方损失: $$ L_{\text{square}}(110, 105) = (110 - 105)^2 = 25 $$
绝对损失: $$ L_{\text{abs}}(110, 105) = |110 - 105| = 5 $$
✅ 注意:选择哪种损失函数取决于任务需求和数据分布,比如平方损失对异常值更敏感。
3. 代价函数(Cost Function)
Cost Function 是 loss 的聚合(如平均、中位数等),用于衡量模型在整个数据集上的表现。
一般形式为:
$$ \text{Cost}(f, \mathcal{D}) = \frac{1}{n} \sum_{i=1}^{n} L(\hat{y}_i, y_i) $$
其中:
- $ f $:模型
- $ \mathcal{D} $:数据集
- $ n $:样本数量
3.1 示例:平均平方损失作为代价函数
假设有如下四套房子的预测与实际价格:
房间数 | 面积(m²) | 楼层 | 小区 | 实际价格 | 预测价格 |
---|---|---|---|---|---|
4 | 70 | 1 | A | 105 | 104.5 |
2 | 50 | 2 | A | 83 | 91 |
1 | 30 | 5 | B | 50 | 65.3 |
5 | 90 | 2 | A | 200 | 114 |
平均平方损失为:
$$ \frac{(104.5 - 105)^2 + (91 - 83)^2 + (65.3 - 50)^2 + (114 - 200)^2}{4} = 1923.585 $$
3.2 其他代价函数变体
RMSE(均方根误差):平方损失的均值开平方,单位与目标一致: $$ \text{RMSE} = \sqrt{\text{MSE}} = \sqrt{1923.585} \approx 43.86 $$
MAE(平均绝对误差): $$ \text{MAE} = \frac{1}{n} \sum |\hat{y}_i - y_i| = 27.45 $$
✅ 小技巧:Loss 是“孤独的”(单个样本),Cost 是“群体的”(多个样本)。
4. 目标函数(Objective Function)
Objective Function 是我们在训练过程中优化的目标,通常由 cost 和正则化项组成。
一般形式为:
$$ J(f, \mathcal{D}) = \text{Cost}(f, \mathcal{D}) + \text{Regularizer}(f) $$
目的是在拟合训练数据的同时防止过拟合。
4.1 示例:线性回归中的目标函数
以线性回归为例,模型为:
$$ f(\mathbf{x}) = \sum_{j=0}^d \theta_j x_j $$
使用平方损失作为 cost 函数:
$$ \text{Cost} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 $$
加入 L2 正则化项(岭回归):
$$ J = \frac{1}{2n} \sum_{i=1}^{n} (y_i - \hat{y}i)^2 + \frac{\lambda}{2} \sum{j=1}^{d} \theta_j^2 $$
4.2 示例计算
继续使用前面的房价预测数据,假设参数为:
$$ \theta_0 = 50,\ \theta_1 = 5,\ \theta_2 = 0.2,\ \theta_3 = 0.5,\ \theta_4 = 20 $$
预测结果与前文一致,cost 已知为 1923.585。
加入 L2 正则化项(假设 $\lambda = 0.5$):
$$ \text{Regularizer} = 0.5 \cdot (50^2 + 5^2 + 0.2^2 + 0.5^2 + 20^2) = 1462.645 $$
目标函数值为:
$$ J = 1923.585 + 1462.645 = 3386.23 $$
⚠️ 注意:目标函数的数值本身没有直观意义,主要用于优化过程中的比较。
5. 总结
术语 | 含义 | 用途 |
---|---|---|
Loss Function | 单个样本的预测误差 | 构建 cost 函数的基础 |
Cost Function | 多个样本的平均误差 | 评估模型性能、用于训练 |
Objective Function | 包含 cost 和正则化的训练目标 | 实际优化的目标 |
✅ 一句话总结:
- Loss 是“个体误差”,
- Cost 是“群体误差”,
- Objective Function 是“带约束的训练目标”。
理解这三者有助于我们在建模过程中更精准地设计训练策略、评估模型性能,避免“踩坑”。