【23-24 秋学期】NNDL 作业2

第二章课后题


习题 2-1

分析为什么平方损失函数不适用于分类问题,交叉损失函数不适用于回归问题

损失函数的作用是衡量预测值和真实值之间的差异。

(1)平方损失函数不适用分类问题的原因:

如下图所示,平方损失函数会对预测值与真实值之间的差值进行平方。

但是分类问题的标签通常是离散的,如0或1。可以发现,分类问题的预测值和真实值之间的差异只跟类别有关,那么使用平方损失函数对分类问题没有意义。

举个例子,比如3分类问题,标签设为0,1,2。如果使用平方损失函数后,类别0被预测为1的差异小于类别0预测为2的差异;但是类别0被预测为1或者2没有区别都是预测错误。

(2)交叉熵损失函数不适用于回归问题的原因:

如下图所示,交叉熵损失函数的公式为:

【23-24 秋学期】NNDL 作业2_第1张图片

在下图中可以看到, fc(x;\Theta )表示输出类别标签的条件概率分布,而y_{c}是样本的真实条件概率分布。对两个概率分布可以用交叉熵表示之间的差异。

可以发现,当两个分布相同时,值为0;两个概率分布不同时,值大于0。可以看出,交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度

我们使用交叉熵的目的是为了让交叉熵最小,预测值与真实值相符合。此时我们更关注的是分类正确的预测结果,但是回归问题中不仅需要得到更多的正确分类,也需要平均错误分类。

同时,交叉熵损失函数要求真实标签是离散的,而在回归问题中的真实值通常是连续的,不是离散的,所以并不适合。

习题2-12

对于一个三分类问题 ,数据集的真实标签和模型的预测标签如下。分别计算模型的精确率、召回率、F1值以及它们的宏平均和微平均(格式要求:使用公式编辑器。)

【23-24 秋学期】NNDL 作业2_第2张图片

(1)已知条件

混淆矩阵如下:

混淆矩阵
预测类别
\widehat{y}=c \widehat{y}\neq c
真实类别 y=c TP_{c} FN_{c}
y\neq c FP_{c} FN_{c}

查准率公式:

\mathfrak{P}_{c}=\frac{TP_{c}}{TP_{c}+FP_{c}}

查全率公式:

\mathfrak{R_{c}}=\frac{TP_{c}}{TP_{c}+FN_{c}}

F1值公式(其中\beta =1):

\mathfrak{f_{c}}=\frac{(1+\beta ^{2})*\mathfrak{P_{c}}*\mathfrak{R}_{c}}{\beta ^{2}*\mathfrak{P}_{c}+\mathfrak{R_{c}}}

宏平均:

\mathfrak{P}_{macro}=\frac{1}{c}\sum_{c=1}^{c}\mathfrak{P}_{c}

\mathfrak{R}_{macro}=\frac{1}{c}\sum_{c=1}^{c}\mathfrak{R}_{c}

\mathfrak{f1}_{macro}=\frac{2*\boldsymbol{P}_{macro}*\mathfrak{R_{marco}}}{\boldsymbol{P}_{macro}+\mathfrak{R_{marco}}}

微平均是将各个混淆矩阵对应元素平均,得到TP、FP、TN、FN,然后计算相应的平均值。其计算公式如下:

_{micro}P=\frac{\overline{TP}}{\overline{TP}+\overline{FP}}

_{micro}R=\frac{\overline{TP}}{\overline{TP}+\overline{FN}}

_{micro}F1=\frac{2*_{micro}P*_{micro}P}{_{micro}P+_{micro}R}

(2)求解

首先算出混淆矩阵中的值可得:

当c=1时:

预测类别
\widehat{y}=c \widehat{y}\neq c
真实类别 y=c 1 1
y\neq c 1 6

当c=2时:

预测类别
\widehat{y}=c \widehat{y}\neq c
真实类别 y=c 2 1
y\neq c 2 4

当c=3时:

预测类别
\widehat{y}=c \widehat{y}\neq c
真实类别 y=c 2 2
y\neq c 1 4

求解查准率

\mathfrak{P}_{1}=\frac{TP_{1}}{TP_{1}+FP_{1}}=\frac{1}{1+1}= \frac{1}{2}

\mathfrak{P}_{2}=\frac{TP_{2}}{TP_{2}+FP_{2}}=\frac{2}{2+2}= \frac{1}{2}

\mathfrak{P}_{3}=\frac{TP_{3}}{TP_{3}+FP_{3}}=\frac{2}{2+1}= \frac{2}{3}

求解查全率:

\mathfrak{R_{1}}=\frac{TP_{1}}{TP_{1}+FN_{1}}=\frac{1}{1+1}=\frac{1}{2}

\mathfrak{R_{2}}=\frac{TP_{2}}{TP_{2}+FN_{2}}=\frac{2}{2+1}=\frac{2}{3}

\mathfrak{R_{3}}=\frac{TP_{3}}{TP_{3}+FN_{3}}=\frac{2}{2+2}=\frac{1}{2}

求解F1值:

\mathfrak{f_{1}}=\frac{2*\mathfrak{P_{1}}*\mathfrak{R}_{1}}{\beta ^{2}*\mathfrak{P}_{1}+\mathfrak{R_{1}}}=\frac{2*\frac{1}{2}*\frac{1}{2}}{1*\frac{1}2{+\frac{1}{2}}}=\frac{1}{2}

\mathfrak{f_{2}}=\frac{2*\mathfrak{P_{2}}*\mathfrak{R}_{2}}{\beta ^{2}*\mathfrak{P}_{2}+\mathfrak{R_{2}}}=\frac{2*\frac{1}{2}*\frac{2}{3}}{1*\frac{1}2{+\frac{2}{3}}}=\frac{4}{5}

\mathfrak{f_{3}}=\frac{2*\mathfrak{P_{3}}*\mathfrak{R}_{3}}{\beta ^{2}*\mathfrak{P}_{3}+\mathfrak{R_{3}}}=\frac{2*\frac{2}{3}*\frac{1}{2}}{1*\frac{2}3{+\frac{1}{2}}}=\frac{4}{5}

宏平均:

\mathfrak{P}_{macro}=\frac{1}{c}\sum_{c=1}^{c}\mathfrak{P}_{c}=\frac{1}{3}*(\frac{1}{2}+\frac{1}{2}+\frac{2}{3})=\frac{5}{9}

\mathfrak{R}_{macro}=\frac{1}{c}\sum_{c=1}^{c}\mathfrak{R}_{c}=\frac{1}{3}*(\frac{1}{2}+\frac{2}{3}+\frac{1}{2})=\frac{5}{9}

\mathfrak{f1}_{macro}=\frac{2*\boldsymbol{P}_{macro}*\mathfrak{R_{marco}}}{\boldsymbol{P}_{macro}+\mathfrak{R_{marco}}}=\frac{2*\frac{5}{9}*\frac{5}{9}}{\frac{5}{9}+\frac{5}{9}}=\frac{5}{9}

微平均:

_{micro}P=\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}

_{micro}R=\frac{\overline{TP}}{\overline{TP}+\overline{FN}}=\frac{\frac{1+2+2}{3}}{\frac{1+2+2}{3}+\frac{2+1+1}{3}}=\frac{5}{9}

_{micro}F1=\frac{2*_{micro}P*_{micro}P}{_{micro}P+_{micro}R}=\frac{2*\frac{5}{9}*\frac{5}{9}}{\frac{5}{9}+\frac{5}{9}}=\frac{5}{9}

你可能感兴趣的:(python,pytorch)