目录
习题 2-1 分析为什么平方损失函数不适用于分类问题 , 交叉熵损失函数不适用于回归问题.
首先,要理解这个就要明白什么是平方损失函数,什么是交叉熵损失函数。
1、平方损失函数的定义
平方损失函数较为容易理解,它直接测量机器学习模型的输出与实际结果之间的距离。这里可以定义机器学习模型的输出为,实际的结果为
,那么平方损失函数可以被定义为:
2、交叉熵损失函数的定义
首先,就要说一说交叉熵的概念,
交叉熵(Cross Entry)是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预测准确率。其离散函数形式
参数解释: 是真实分布的概率,
是模型通过数据计算出来的概率估计。
因而,对于该二分类模型其交叉熵损失函数可以定义为:
其中: 为标签值,
为预值测
熵就是在信息论的角度定义出来的
信息熵是在结果出来之前对可能产生的信息量的期望。相对熵表示两个概率分布的差异,即KL散度。当两个分布相同时,相对熵的值为0 00,其余情况下都大于0 00。
这是就又出现一个概念,相对熵(即KL散度)
相对熵又称互熵,设p ( x ) p(x)p(x)和q ( x ) q(x)q(x)是取值的两个概率分布,相对熵用来表示两个概率分布的差异,当两个随机分布相同时,它们的相对熵为零,当两个随机分布的差别增大时,它们的相对熵也会增大。
KL散度 = 交叉熵 - 信息熵
在终于弄清了定义之后,
3、为什么平方损失函数不适用于分类问题
有个状况较梯度消失,当时第一下写手写数字识别是,当时还不太懂,就随便调到的库,正好softmax和平方损失调的一起,当时去问老师,为啥准确率下来了。
softmax函数写在了下边
当sigmoid函数和MSE一起使用时会出现梯度消失。原因如下:
(1)MSE对参数的偏导
(2)corss-entropy对参数的偏导
由上述公式可以看出,在使用MSE时,w、b的梯度均与sigmoid函数对z的偏导有关系,而sigmoid函数的偏导在自变量非常大或者非常小时,偏导数的值接近于零,这将导致w、b的梯度将不会变化,也就是出现所谓的梯度消失现象。而使用cross-entropy时,w、b的梯度就不会出现上述的情况。所以MSE不适用于分类问题。
4、为什么交叉熵损失函数不适用于回归问题
从平方损失函数运用到多分类场景下,可知平方损失函数对每一个输出结果都十分看重,而交叉熵损失函数只对正确分类的结果看重。例如,对于一个多分类模型其模型结果输出为( a , b , c ) (a,b,c)(a,b,c),而实际真实结果为( 1 , 0 , 0 ) (1, 0, 0)(1,0,0)。则根据两种损失函数的定义其损失函数可以描述为:
从上述的结果中可以看出,交叉熵损失函数只和分类正确的预测结果有关。而平方损失函数还和错误的分类有关,该损失函数除了让正确分类尽量变大,还会让错误分类都变得更加平均,但实际中后面的这个调整使没必要的。但是对于回归问题这样的考虑就显得重要了,因而回归问题上使用交叉熵并不适合。
并且从函数的角度出发
平方数损失函数假设最终结果都服从高斯分布,而高斯分布实际上是一个连续变量,并不是一个离散变量。如果假设结果变量服从均值u uu,方差为σ \sigmaσ,那么利用最大似然法就可以优化它的负对数似然,公式最终变为了:
出去与y 无关的项目,最后剩下的就是平方损失函数的形式。
5、交叉熵损失函数与softmax回归
这里稍微说一下softmax,剩下的其实直接调库就行,nn库里边就有这些函数。
softmax回归相对于线性回归输出单元从一个变成了多个,适合用来解决分类问题。且引入了softmax运算使得输出更适合离散值的预测和训练。交叉熵损失函数对比平方损失函数其没有那么严格,其只关注对正确类别的预测概率。
在分类问题中,softmax将输出的结果进行处理,使其多个分类的预测概率值和为1,输出类别的概率分布,再通过交叉熵来计算损失,所以两者经常一起使用。
所以还是我之前说过的更重要的是去理解思想,现在这个都能调包,都是封装好的,但是你怎么调,怎么搭配,怎么样合理,原理是什么,这是要考虑的问题。
习题 2-12 对于一个三分类问题 , 数据集的真实标签和模型的预测标签如下 :
分别计算模型的精确率、召回率、F1值以及它们的宏平均和微平均.
格式要求:使用公式编辑器,在博客上正确书写公式。
做这个题就不得不说一说混淆矩阵的概念了
首先先来一波上学期学的神书西瓜书上的混淆矩阵。
然后再来一波这学期的神书蒲公英书上的混淆矩阵。
对此我要拜一拜周志华和邱锡鹏两位大神
好,对于两位大佬的膜拜完了,那我们就开始正式做了,首先,先按上边的四种类型来统计一下数据,也就是c有三种情况即1、2、3。
先统计出来的情况:(下边的1、2,代表的是序号)
:1 1个
:2 1个
:8 1个
:3,4,5,6,7,9 6个
:3、4 2个
:5 1个
:2、9 2个
:1、6、7、8 4个
:6、7 2个
:8、9 2个
:5 1个
:1、2、3、4 4个
精准率(也叫精度或查准率):
召回率(也叫查全率):
F值(是一个综合指标,为精确率和召回率的调和平均):
一般取值为,称作F1的值
宏平均(Macro Average):
宏查准率:
宏查全率:
宏F1:
微平均(是每一个样本的性能指标的算术平均值):
宏平均和微平均的区别
宏平均的计算方法独立于不同类别,将每个类别的P、R、F值单独计算出来,然后将所有类别的度量值直接平均,因此它将各个类别平等对待。
微平均会结合不同类别的贡献大小来计算平均值。
所以在多分类问题中,如果存在数据不平衡问题,则使用微平均得到的效果更加可信。
实验体会
本次作业感觉学到了好多,尤其是对于混淆矩阵,计算查全率,查准率等,以前以为懂了,但是做这个题的时候才发现,是模棱两可的懂了,发现只会2类的那种,当是3个种类的时候,发现概念上还是有点不太明白,又回去看书,又查了好多资料,才终于清晰了定义,终于明白了,尤其是算FN的时候,才明白可以认为,除了找的那一类,其他的算一类。
并且明白了,在这个在csdn上规范的写公式,也就是Latex的语法,感觉这个还是比较重要的,以前写的公式都是横着的,很难看懂,感觉这个很重要,看着写出来的公式,感觉真的看着都舒服了,感觉这个公式太多了,写了好长时间,当然这是由于不熟练了。
最后感谢老师,教会了我这么多东西,哈哈哈。