
104
|
第
3
章
左侧的两个 5
×
5 矩阵显示了被分类为数字 3 的图片,右侧的两个 5
×
5 矩阵显示了被分
类为数字 5 的图片。分类器弄错的数字(即左下方和右上方的矩阵)里,确实有一些写
得非常糟糕,即便是人类也很难做出区分(例如,第 1 行的数字 5 看起来真的很像数字
3)。然而,对我们来说,大多数错误分类的图片看起来还是非常明显的错误,我们很难
理解分类器为什么会弄错
注 3
。原因在于,我们使用的简单的 SGDClassifier 模型是
一个线性模型。它所做的就是为每个像素分配一个各个类别的权重,当它看到新的图像
时,将加权后的像素强度汇总,从而得到一个分数进行分类。而数字 3 和数字 5 只在一
部分像素位上有区别,所以分类器很容易将其弄混。
1
数字 3 和数字 5 之间的主要区别是在于连接顶线和下方弧线的中间那段小线条的位置。
如果你写的数字 3 将连接点略往左移,分类器就可能将其分类为数字 5,反之亦然。换
言之,这个分类器对图像移位和旋转非常敏感。因此,减少数字 3 和数字 5 混淆的方法
之一,就是对图片进行预处理,确保它们位于中心位置并且没有旋转。这也同样有助于
减少其他错误。
3.6 多标签分类
到目前为止,每个实例都只会被分在一个类里。而在某些情况下,你希望分类器为每个
实例输出多个类。例如,人脸识别的分类器:如果在一张照片里识别出多个人怎么办?
当然,应该为识别出来的每个人都附上一个标签。假设分类器经过训练,已经可以识别
出三张脸
—
爱丽丝、鲍勃和查理,那么当看到一张爱丽丝和查理的照片时,它应该输 ...