【机器学习笔记Ⅰ】3 代价函数
代价函数(Cost Function)
代价函数(也称为损失函数,Loss Function)是机器学习中用于量化模型预测误差的函数。它衡量模型预测值(( \hat{y} ))与真实值(( y ))之间的差异,并通过优化算法(如梯度下降)调整模型参数(如权重 ( w ) 和偏置 ( b )),以最小化这种差异。
核心作用
- 评估模型性能:代价函数的值越小,说明模型预测越准确。
- 指导参数优化:为梯度下降等算法提供方向(如何调整参数以降低误差)。
常见代价函数
1. 均方误差(Mean Squared Error, MSE)
-
用于回归问题(预测连续值,如房价、温度)。
-
公式:
- ( N ):样本数量。
- ( y^{(i)} ):第 ( i ) 个样本的真实值。
- ( \hat{y}^{(i)} ):第 ( i ) 个样本的预测值。
-
特点:
- 对异常值敏感(平方放大大误差)。
- 可导,适合梯度下降。
示例:
- 真实值 ( y = [2, 4, 6] ),预测值 ( \hat{y} = [1, 5, 6] )。
2. 交叉熵损失(Cross-Entropy Loss)
-
用于分类问题(如二分类、多分类)。
-
公式(二分类):
- ( \hat{y}^{(i)} ) 是模型预测的概率(如逻辑回归输出)。
-
特点:
- 惩罚预测概率与真实标签的偏差。
- 与Softmax激活函数配合用于多分类。
3. 平均绝对误差(Mean Absolute Error, MAE)
-
公式:
-
特点:
- 对异常值鲁棒(误差线性增长)。
- 不可导(优化时需特殊处理)。
为什么需要代价函数?
-
参数学习的指南针:
例如,在线性回归中,通过最小化MSE找到最佳拟合直线。 -
模型对比:不同模型可通过同一代价函数评估优劣。
代价函数 vs 损失函数
- 损失函数(Loss Function):计算单个样本的误差。
- 代价函数(Cost Function):通常是所有样本损失的平均值(如MSE)。
(实际使用时两者常混用。)
代码示例(MSE实现)
import numpy as npdef mean_squared_error(y_true, y_pred):return np.mean((y_true - y_pred) ** 2)# 示例
y_true = np.array([3, 5, 7])
y_pred = np.array([2.5, 5.1, 7.8])
print("MSE:", mean_squared_error(y_true, y_pred)) # 输出: 0.23
如何选择代价函数?
问题类型 | 代价函数 | 原因 |
---|---|---|
回归(连续值预测) | 均方误差(MSE) | 对误差敏感,易优化。 |
分类(概率输出) | 交叉熵损失(Cross-Entropy) | 匹配概率分布,梯度稳定。 |
鲁棒性需求高 | 平均绝对误差(MAE) | 减少异常值影响。 |
关键点总结
- 代价函数是模型优化的核心目标。
- 不同任务需选择不同代价函数(如回归用MSE,分类用交叉熵)。
- 梯度下降等算法通过计算代价函数的梯度来更新参数。