损失函数与评价指标
1.平方损失函数VS交叉熵损失函数
1.1平方损失函数(Mean Squared Error,MSE)
1.1.1什么是平方损失函数
平方损失函数是求一个样本的预测值与真实值差的平方,公式如下:
£
(
y
,
f
(
x
;
θ
)
)
=
1
2
(
y
−
f
(
x
;
θ
)
)
2
\pounds\left( y,f\left( x;\theta \right) \right) =\frac{1}{2}\left( y-f\left( x;\theta \right) \right) ^2
£(y,f(x;θ))=21(y−f(x;θ))2
式中,
f
(
x
;
θ
)
f\left( x;\theta \right)
f(x;θ)是模型的输出值,
y
y
y是真实值。
在下图中,若绿色直线上的点为模型预测值,蓝点为模型真实值,则平方损失即为红色线段长度的平方。
1.1.2为什么平方损失函数适用于回归
平方损失函数适用于回归问题的原因是它能够衡量预测值与真实值之间的差异,并且对较大的差异进行更强烈的惩罚。在回归问题中,我们通常希望通过最小化预测值与真实值之间的差异来优化模型参数,使得预测值尽可能接近真实值。
以下是平方损失函数适用于回归问题的几个原因:
-
连续数值的预测:回归问题的目标是预测连续数值,例如房价、销售额等。平方损失函数对预测值与真实值之间的差异进行平方,能够更好地衡量连续数值之间的差异。
-
可微性:在回归问题中,平方损失函数是一个连续可导的函数,这使得我们可以使用梯度下降等优化算法来最小化损失函数,从而找到最优的模型参数。
-
强调较大误差:平方损失函数对较大的预测误差进行更强烈的惩罚,这意味着模型会更加关注那些与真实值差异较大的样本,从而更有可能找到能够准确预测这些样本的模型。
总而言之,平方损失函数适用于回归问题,因为它能够衡量连续数值之间的差异,并且对较大的差异进行更强烈的惩罚,从而帮助优化回归模型的参数。
1.1.3为什么平方损失函数不适用于分类
平方损失函数不适用于分类问题的原因是它在分类任务中存在一些问题。
-
非凸优化问题:由于分类问题的目标是预测
离散
的类别标签,而不是连续数值,平方损失函数的形状不符合分类问题的本质。在分类问题中,损失函数的形状通常是非凸的
(如下图),这会导致优化过程中存在多个局部最小值,使得模型难以找到全局最优解。
-
梯度消失问题:平方损失函数对于预测值与真实值之间的
差异较小
时,梯度会变得非常小,这可能导致梯度下降等优化算法在训练过程中出现梯度消失
的问题。这会导致模型收敛速度变慢,甚至无法收敛到合适的解。
图中,对于分类问题,在平方损失函数中,当离最优值较近或较远时,梯度几乎都很小,此时,我们也无法判断是否达到了最优。 -
非平衡类别问题:在分类问题中,类别之间可能存在不平衡的情况,即某个类别的样本数量远远多于其他类别。平方损失函数对所有样本的预测误差都进行平方惩罚,使其关注多数类别的样本,在预测时偏向多数类别,而对少数类别的预测效果较差。
1.2交叉熵损失函数(Cross Entropy Loss)
1.2.1什么是交叉熵损失函数
交叉熵主要用于度量同一个随机变量
x
\mathbf{x}
x的标签的预测分布
Q与真实分布
P之间的差距,公式如下:
£
(
y
,
f
(
x
;
θ
)
)
=
−
y
T
log
f
(
x
;
θ
)
\pounds\left( \mathbf{y,}f\left( \mathbf{x;}\theta \right) \right) =-\mathbf{y}^{_T}\log f\left( \mathbf{x;}\theta \right)
£(y,f(x;θ))=−yTlogf(x;θ)
=
−
∑
c
=
1
C
y
c
log
f
c
(
x
;
θ
)
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =-\sum_{c=1}^C{y_c\log f_c\left( \mathbf{x;}\theta \right)}
=−c=1∑Cyclogfc(x;θ)
式中,
y
\mathbf{y}
y为随机变量
x
\mathbf{x}
x的标签的真实分布,
f
(
x
;
θ
)
f\left( \mathbf{x;}\theta \right)
f(x;θ)为随机变量
x
\mathbf{x}
x的标签的预测分布。
不太好理解,那就来举个例子:
篮球 | 足球 | 排球 | |
---|---|---|---|
真实分布 | 1 | 0 | 0 |
预测分布 | 0.8 | 0.1 | 0.1 |
在这个例子中,
x
\mathbf{x}
x的标签的真实分布为(1,0,0),
x
\mathbf{x}
x的标签的预测分布为(0.8,0.1,0.1)。
交叉熵:
£
(
y
,
f
(
x
;
θ
)
)
=
−
(
1
×
log
0.8
+
0
×
log
0.1
+
0
×
log
0.1
)
=
0.0969
\pounds\left( \mathbf{y,}f\left( \mathbf{x;}\theta \right) \right) =-\left( 1\times \log 0.8+0\times \log 0.1+0\times \log 0.1 \right) =0.0969
£(y,f(x;θ))=−(1×log0.8+0×log0.1+0×log0.1)=0.0969
篮球 | 足球 | 排球 | |
---|---|---|---|
真实分布 | 1 | 0 | 0 |
预测分布 | 0.7 | 0.1 | 0.2 |
在这个例子中,
x
\mathbf{x}
x的标签的真实分布为(1,0,0),
x
\mathbf{x}
x的标签的预测分布为(0.7,0.1,0.2)。
交叉熵:
£
(
y
,
f
(
x
;
θ
)
)
=
−
(
1
×
log
0.7
+
0
×
log
0.1
+
0
×
log
0.2
)
=
0.1549
\pounds\left( \mathbf{y,}f\left( \mathbf{x;}\theta \right) \right) =-\left( 1\times \log 0.7+0\times \log 0.1+0\times \log 0.2 \right) =0.1549
£(y,f(x;θ))=−(1×log0.7+0×log0.1+0×log0.2)=0.1549
篮球 | 足球 | 排球 | |
---|---|---|---|
真实分布 | 1 | 0 | 0 |
预测分布 | 0.3 | 0.6 | 0.1 |
在这个例子中,
x
\mathbf{x}
x的标签的真实分布为(1,0,0),
x
\mathbf{x}
x的标签的预测分布为(0.3,0.6,0.1)。
交叉熵:
£
(
y
,
f
(
x
;
θ
)
)
=
−
(
1
×
log
0.3
+
0
×
log
0.6
+
0
×
log
0.1
)
=
0.5229
\pounds\left( \mathbf{y,}f\left( \mathbf{x;}\theta \right) \right) =-\left( 1\times \log 0.3+0\times \log 0.6+0\times \log 0.1 \right) =0.5229
£(y,f(x;θ))=−(1×log0.3+0×log0.6+0×log0.1)=0.5229
从这三个例子中可以看出,预测分布越接近真实分布,交叉熵越小。
在下图中,若P为真实分布,Q为预测分布,若Q与P越接近,则交叉熵越小,模型越好。
1.2.2为什么交叉熵损失函数适用于分类
- 度量合理性:交叉熵损失函数能够合理地度量两个概率分布之间的差异。在分类问题中,我们关心的是模型预测的类别分布与真实类别分布之间的差距。交叉熵能够度量这两个分布之间的差距,因此是一个很好的选择。
- 梯度计算:交叉熵损失函数对于模型参数的梯度计算相对简化。其导数计算公式中包含了预测结果和真实标签之间的差异,可以更直接地指导参数的更新。相比之下,平方损失函数的导数计算涉及平方项,可能导致梯度消失或梯度爆炸的问题。
- 稳定性:相对于其他损失函数(如平方损失),交叉熵损失函数在训练过程中更加稳定。这是因为交叉熵损失函数对预测概率的梯度在接近真实标签时变小,而在远离真实标签时变大,这使得训练过程更加稳定。
1.2.3为什么交叉熵损失函数不适用于回归
-
输出值的范围:交叉熵损失函数的计算基于概率的概念,适用于输出值是
概率分布
的情况。然而,在回归问题中,输出值通常是连续的实数
,不具备概率的解释。因此,交叉熵损失函数无法直接应用于回归问题。 -
损失函数的形式:交叉熵损失函数的形式是基于分类问题的特点设计的,它对错误分类的样本给予较大的惩罚。而在回归问题中,我们通常更关注预测值与真实值之间的
差异
,而不是错误分类
的概念。因此,回归问题一般不用交叉熵损失函数。 -
梯度计算的问题:交叉熵损失函数对于模型参数的梯度计算相对简化,但在回归问题中,使用交叉熵损失函数可能导致梯度计算不稳定的问题。这是因为交叉熵损失函数的导数计算涉及对概率的求导,而回归问题中的输出值通常不是概率,可能导致梯度计算的不稳定性。
2.精准率、召回率、F1值、宏平均、微平均
对于一个三分类问题,数据集的真实标签和模型的预测标签如下:
真实标签 | 1 | 1 | 2 | 2 | 2 | 3 | 3 | 3 | 3 |
---|---|---|---|---|---|---|---|---|---|
预测标签 | 1 | 2 | 2 | 2 | 3 | 3 | 3 | 1 | 2 |
分别计算模型的精准率、召回率、F1值以及他们的宏平均和微平均。
2.1精确率
精确率,也叫查准率,类别
c
c
c的查准率是所有预测为类别
c
c
c的样本中预测正确的比例:
P
c
=
T
P
c
T
P
c
+
F
P
c
P_c=\frac{TP_c}{TP_c+FP_c}
Pc=TPc+FPcTPc
P
1
=
1
1
+
0
+
1
=
1
2
P_1=\frac{1}{1+0+1} =\frac{1}{2}
P1=1+0+11=21
P
2
=
2
1
+
2
+
1
=
1
2
P_2=\frac{2}{1+2+1} =\frac{1}{2}
P2=1+2+12=21
P
3
=
2
0
+
1
+
2
=
2
3
P_3=\frac{2}{0+1+2} =\frac{2}{3}
P3=0+1+22=32
2.2召回率
精确率,也叫查准率,类别
c
c
c的查准率是所有真实标签为类别
c
c
c的样本中预测正确的比例:
R
c
=
T
P
c
T
P
c
+
F
N
c
R_c=\frac{TP_c}{TP_c+FN_c}
Rc=TPc+FNcTPc
R
1
=
1
1
+
1
+
0
=
1
2
R_1=\frac{1}{1+1+0} =\frac{1}{2}
R1=1+1+01=21
R
2
=
2
0
+
2
+
1
=
2
3
R_2=\frac{2}{0+2+1} =\frac{2}{3}
R2=0+2+12=32
R
3
=
2
1
+
1
+
2
=
1
2
R_3=\frac{2}{1+1+2} =\frac{1}{2}
R3=1+1+22=21
2.3F值
F值是一个综合指标,为精确率和召回率的调和平均:
F
c
=
(
1
+
β
2
)
×
P
c
×
R
c
β
2
×
P
c
+
R
c
F_c=\frac{\left( 1+\beta ^2 \right) \times P_c\times R_c}{\beta ^2\times P_c+R_c}
Fc=β2×Pc+Rc(1+β2)×Pc×Rc
其中
β
\beta
β用于平衡精确率和召回率的重要性,当
β
=
1
\beta=1
β=1时的值称为
F
1
F1
F1值,是精确率和召回率的调和平均。
F
1
1
=
2
×
1
2
×
1
2
1
2
+
1
2
=
1
2
F1_1=\frac{2\times \frac{1}{2}\times \frac{1}{2}}{\frac{1}{2}+\frac{1}{2}}= \frac{1}{2}
F11=21+212×21×21=21
F
1
2
=
2
×
1
2
×
2
3
1
2
+
2
3
=
4
7
F1_2=\frac{2\times \frac{1}{2}\times \frac{2}{3}}{\frac{1}{2}+\frac{2}{3}}= \frac{4}{7}
F12=21+322×21×32=74
F
1
3
=
2
×
2
3
×
1
2
2
3
+
1
2
=
4
7
F1_3=\frac{2\times \frac{2}{3}\times \frac{1}{2}}{\frac{2}{3}+\frac{1}{2}}=\frac{4}{7}
F13=32+212×32×21=74
2.4宏平均
宏平均是每一类
的性能指标的算术平均值:
P
m
a
c
r
o
=
1
C
∑
c
=
1
C
P
c
=
1
3
(
1
2
+
1
2
+
2
3
)
=
5
9
P_{macro}=\frac{1}{C}\sum_{c=1}^C{P_c}=\frac{1}{3}\left( \frac{1}{2}+\frac{1}{2}+\frac{2}{3} \right) =\frac{5}{9}
Pmacro=C1c=1∑CPc=31(21+21+32)=95
R
m
a
c
r
o
=
1
C
∑
c
=
1
C
R
c
=
1
3
(
1
2
+
2
3
+
1
2
)
=
5
9
R_{macro}=\frac{1}{C}\sum_{c=1}^C{R_c}=\frac{1}{3}\left( \frac{1}{2}+\frac{2}{3}+\frac{1}{2} \right) =\frac{5}{9}
Rmacro=C1c=1∑CRc=31(21+32+21)=95
F
1
m
a
c
r
o
=
2
×
P
m
a
c
r
o
×
R
m
a
c
r
o
P
m
a
c
r
o
+
R
m
a
c
r
o
=
2
×
5
9
×
5
9
5
9
+
5
9
=
5
9
F1_{macro}=\frac{2\times P_{macro}\times R_{macro}}{P_{macro}+R_{macro}}=\frac{2\times \frac{5}{9}\times \frac{5}{9}}{\frac{5}{9}+\frac{5}{9}}=\frac{5}{9}
F1macro=Pmacro+Rmacro2×Pmacro×Rmacro=95+952×95×95=95
宏平均的计算方式是对每个类别
平等对待,不考虑类别之间的样本数量差异。这种方法适用于希望平等对待每个类别,关注每个类别的性能的情况。
2.5微平均
P
m
i
c
r
o
=
T
P
‾
T
P
‾
+
F
P
‾
=
1
+
2
+
2
3
1
+
2
+
2
3
+
1
+
2
+
1
3
=
5
9
P_{micro}=\frac{\overline{TP}}{\overline{TP}+\overline{FP}}=\frac{\frac{1+2+2}{3}}{\frac{1+2+2}{3}+\frac{1+2+1}{3}}=\frac{5}{9}
Pmicro=TP+FPTP=31+2+2+31+2+131+2+2=95
R
m
i
c
r
o
=
T
P
‾
T
P
‾
+
F
N
‾
=
1
+
2
+
2
3
1
+
2
+
2
3
+
1
+
1
+
2
3
=
5
9
R_{micro}=\frac{\overline{TP}}{\overline{TP}+\overline{FN}}=\frac{\frac{1+2+2}{3}}{\frac{1+2+2}{3}+\frac{1+1+2}{3}}=\frac{5}{9}
Rmicro=TP+FNTP=31+2+2+31+1+231+2+2=95
F
1
m
i
c
r
o
=
2
×
P
m
i
c
r
o
×
R
m
i
c
r
o
P
m
i
c
r
o
+
R
m
i
c
r
o
=
2
×
5
9
×
5
9
5
9
+
5
9
=
5
9
F1_{micro}=\frac{2\times P_{micro}\times R_{micro}}{P_{micro}+R_{micro}}=\frac{2\times \frac{5}{9}\times \frac{5}{9}}{\frac{5}{9}+\frac{5}{9}}=\frac{5}{9}
F1micro=Pmicro+Rmicro2×Pmicro×Rmicro=95+952×95×95=95
微平均的计算方式是将所有类别
的预测结果和真实标签看作一个整体,不区分不同类别之间的差异。这种方法适用于类别之间的样本数量差异较大,或者希望更加关注整体性能而不是单个类别的性能的情况。