NNDL 作业1:第二章课后题

习题 2-1分析为什么平方损失函数不适用于分类问题 , 交叉熵损失函数不适用于回归问题。
1、平方损失函数的定义

平方损失函数较为容易理解,它直接测量机器学习模型的输出与实际结果之间的距离。平方损失函数可以被定义为: 

NNDL 作业1:第二章课后题_第1张图片

2、交叉熵损失函数定义
交叉熵(Cross Entry)是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预测准确率。其离散函数形式

NNDL 作业1:第二章课后题_第2张图片

 参数解释:p(x)是真实分布的概率,q(x)是模型通过数据计算出来的概率估计。因而,对于该二分类模型其交叉熵损失函数可以定义为:

 NNDL 作业1:第二章课后题_第3张图片

 3、 两种损失函数的区别
平方损失函数与交叉熵损失函数都可以用作为机器学习模型的目标函数,但是在何种场景下使用何种损失函数才是较为合理的选择呢?一般来讲,如果学习模型致力于解决的问题是回归问题的连续变量,那么使用平方损失函数较为合适;若是对于分类问题的离散Ont-Hot向量,那么交叉熵损失函数较为合适。

4、为什么平方损失函数不适用于分类问题
首先我们要明确分类问题的概念:在二分类问题中y = { + 1 , − 1 } 在C分类问题中y = { 1 , 2 , 3 , ⋅ ⋅ ⋅ , C }。可以看出分类问题输出的结果为离散的值。
这里我在邱锡鹏老师的问题讨论区里
看到一则评论为:分类问题中的标签,是没有连续的概念的。每个标签之间的距离也是没有实际意义的,所以预测值和标签两个向量之间的平方差这个值不能反应分类这个问题的优化程度。比如分类 1,2,3, 真实分类是1, 而被分类到2和3错误程度应该是一样的,但是明显当我们预测到2的时候是损失函数的值为1/2而预测到3的时候损失函数为2,这里再相同的结果下却给出了不同的值,这对我们优化参数产生了误导。至于分类问题我们一般采取交叉熵损失函数(Cross-Entropy Loss Function)来进行评估。

5、为什么交叉熵损失函数不适用于回归问题

交叉熵损失函数只和分类正确的预测结果有关。而平方损失函数还和错误的分类有关,该损失函数除了让正确分类尽量变大,还会让错误分类都变得更加平均,但实际中后面的这个调整使没必要的。但是对于回归问题这样的考虑就显得重要了,因而回归问题上使用交叉熵损失函数并不适合。

习题 2-12 对于一个三分类问题 , 数据集的真实标签和模型的预测标签如下 :

分别计算模型的精确率、召回率、F1以及它们的宏平均微平均.  

格式要求:使用公式编辑器,在博客上正确书写公式。

混淆矩阵:

预测为真 预测为假
类别为真 正确预测为真(True Positive,TP) 错误预测为假(False Nagetive,FN)
类别为假 错误预测成真(False Nagetive,FP) 正确预测为假(True Positive,TN)

精准率:

P_{c}=\frac{TP_{c}}{TP_{c}+FP_{c}}

P_{1}=\tfrac{1}{1+1}=\tfrac{1}{2}

P_{2}=\tfrac{2}{2+2}=\tfrac{1}{2}

P_{3}=\tfrac{2}{2+1}=\tfrac{2}{3}

召回率:

R_{c}=\tfrac{TP_{c}}{TP_{c}+FN_{c}}

R_{1}=\tfrac{1}{1+1}=\tfrac{1}{2}

R_{2}=\tfrac{2}{2+1}=\tfrac{2}{3}

R_{3}=\tfrac{2}{2+2}=\tfrac{1}{2}

F值:

一般取值为\beta =1,称作F1的值

F_{c}=\tfrac{(1+\beta ^{2})*P_{c}*R_{c}}{\beta ^{2}*P_{c}+R_{c}}

F_{1}=\tfrac{(1+1^{2})*\tfrac{1}{2}*\tfrac{1}{2}}{1 ^{2}*\tfrac{1}{2}+\tfrac{1}{2}}=\tfrac{4}{7}

F_{2}=\tfrac{(1+1^{2})*\tfrac{1}{2}*\tfrac{2}{3}}{1 ^{2}*\tfrac{1}{2}+\tfrac{2}{3}}=\tfrac{4}{7}

F_{3}=\tfrac{(1+1^{2})*\tfrac{2}{3}*\tfrac{1}{2}}{1 ^{2}*\tfrac{2}{3}+\tfrac{1}{2}}=\tfrac{4}{7}

宏平均:

宏查准率:

P_{macro}=\frac{1}{C}\sum_{c=1}^{C}P_{c}

P_{macro}=\frac{1}{3}(\frac{1}{2}+\frac{1}{2}+\frac{2}{3})=\frac{5}{9}

宏查全率:

R_{macro}=\tfrac{1}{C}\sum_{c=1}^{C}R_{c}

R_{macro}=\frac{1}{3}(\frac{1}{2}+\frac{2}{3}+\frac{1}{2})=\frac{5}{9}

F1_{macro}=\tfrac{2*P_{macro}*R_{macro}}{P_{macro}+R_{macro}}

F1_{macro}=\tfrac{2*\tfrac{5}{9}*\tfrac{5}{9}}{\tfrac{5}{9}+\tfrac{5}{9}}=\tfrac{5}{9}

微平均:

P_{micro}=\tfrac{\sum_{n}^{i=1}TP_{i}}{\sum_{n}^{i=1}TP_{i}+\sum_{n}^{i=1}FP_{i}}

P_{micro}=\tfrac{1+2+2}{1+2+2+1+2+1}=\tfrac{5}{9}

R_{micro}=\tfrac{\sum_{n}^{i=1}TP_{i}}{\sum_{n}^{i=1}TP_{i}+\sum_{n}^{i=1}FN_{i}}

R_{micro}=\tfrac{1+2+2}{1+2+2+1+1+2}=\tfrac{5}{9}

F1_{micro}=\tfrac{2*P_{micro}*R_{micro}}{P_{micro}+R_{micro}}

F1_{micro}=\tfrac{2*\tfrac{5}{9}*\tfrac{5}{9}}{\tfrac{5}{9}+\tfrac{5}{9}}=\tfrac{5}{9}

总结:

本次主要学习了为什么平方损失函数不适用于分类问题 , 交叉熵损失函数不适用于回归问题,以及如何计算模型的精确率、召回率、F1值以及它们的宏平均和微平均,并且学会了如何使用CSDN的插入公式。

你可能感兴趣的:(机器学习,深度学习,python)