【机器学习:三、常见的代价函数】
代价函数的选择与任务类型(回归、分类等)以及模型的具体目标密切相关。
回归任务中的代价函数
均方误差(Mean Squared Error, MSE)
- 公式:
J ( θ ) = 1 m ∑ i = 1 m ( y i − y ^ i ) 2 J(\theta)=\frac{1}{m}\sum_{i=1}^m(y_i-\hat{y}_i)^2 J(θ)=m1i=1∑m(yi−y^i)2
其中, y i y_{i} yi是真实值, y ^ i \hat{y}_i y^i是预测值,m是样本数量。 - 特点:
- 对误差平方,放大了较大的误差,适用于预测准确度要求高的场景。
- 对异常值较为敏感。
平均绝对误差(Mean Absolute Error, MAE)
- 公式:
J ( θ ) = 1 m ∑ i = 1 m ∣ y i − y ^ i ∣ J(\theta)=\frac{1}{m}\sum_{i=1}^m|y_i-\hat{y}_i| J(θ)=m1i=1∑m∣yi−y^i∣ - 特点:
- 对异常值不敏感。
- 相比MSE,优化时导数在零点处不连续,可能导致收敛较慢。
Huber损失
- 公式:
L ( y , y ^ ) = { 1 2 ( y − y ^ ) 2 , i f ∣ y − y ^ ∣ ≤ δ δ ⋅ ∣ y − y ^ ∣ − δ 2 2 , i f ∣ y − y ^ ∣ > δ L(y,\hat{y})=\begin{cases}\frac{1}{2}(y-\hat{y})^2,&\mathrm{if}|y-\hat{y}|\leq\delta\\\delta\cdot|y-\hat{y}|-\frac{\delta^2}{2},&\mathrm{if}|y-\hat{y}|>\delta&\end{cases} L(y,y^)={21(y−y^)2,δ⋅∣y−y^∣−2δ2,if∣y−y^∣≤δif∣y−y^∣>δ - 特点:
- 结合了 MSE 和 MAE 的优点。
- 对异常值具有一定鲁棒性。
分类任务中的代价函数
对数损失(Log Loss, 或称交叉熵损失)
- 公式(用于二分类):
J ( θ ) = − 1 m ∑ i = 1 m [ y i log ( y ^ i ) + ( 1 − y i ) log ( 1 − y ^ i ) ] J(\theta)=-\frac{1}{m}\sum_{i=1}^m\left[y_i\log(\hat{y}_i)+(1-y_i)\log(1-\hat{y}_i)\right] J(θ)=−m1i=1∑m[yilog(y^i)+(1−yi)log(1−y^i)] - 特点:
- 用于分类任务中,衡量模型预测的概率与真实类别标签的吻合程度。
- 对错误分类的惩罚较高。
平方误差损失
- 尽管平方误差通常用于回归任务,但也可以用于分类问题(主要用于标签数值化的场景)。
- 缺点:相对于交叉熵损失,对分类问题不敏感,收敛速度较慢。
Hinge 损失(用于支持向量机, SVM)
- 公式
J ( θ ) = 1 m ∑ i = 1 m max ( 0 , 1 − y i y ^ i ) J(\theta)=\frac{1}{m}\sum_{i=1}^m\max(0,1-y_i\hat{y}_i) J(θ)=m1i=1∑mmax(0,1−yiy^i)
其中, y i ∈ { − 1 , 1 } y_i\in\{-1,1\} yi∈{−1,1} 是真实标签, y ^ i \hat{y}_i y^i 是预测值。 - 特点:
- 用于支持向量机分类。
- 通过最大化分类边界间隔,提高分类的鲁棒性。
非监督学习中的代价函数
K-Means 损失函数
- 公式
J = ∑ i = 1 k ∑ x ∈ C i ∥ x − μ i ∥ 2 J=\sum_{i=1}^k\sum_{x\in C_i}\|x-\mu_i\|^2 J=i=1∑kx∈Ci∑∥x−μi∥2
其中, C i C_{i} Ci是第i个聚类簇, μ i \mu_{i} μi是该簇的中心。 - 特点:
- 用于聚类任务,目标是最小化样本到其所属簇中心的平方距离。
自编码器的重建误差
- 公式:
J ( θ ) = 1 n ∑ i = 1 n ∥ x i − x ^ i ∥ 2 J(\theta)=\frac{1}{n}\sum_{i=1}^n\left\|x_i-\hat{x}_i\right\|^2 J(θ)=n1i=1∑n∥xi−x^i∥2
其中, x i x_{i} xi是原始输入, x ^ i \hat{x}_i x^i是重建输出。 - 特点:
- 用于衡量模型重建输入数据的能力。