多分类是什么?在三个及以上类别中选一个
多分类(Multi-class Classification),也叫多类分类,是指要把每个样本分到三个或更多个类别中的某一个的分类任务。每个样本只属于其中的一个类别,各个类别之间是互斥的。与之相对的是二分类,只有两个类别,比如是否是垃圾邮件。
一些例子
手写数字识别:判断一张图片中的手写数字是 0 到 9 中的哪一个,一共有 10 个类别。图像分类:判断一张图片中的主要物体是什么,比如著名的 ImageNet 图像识别比赛有 1000 个类别。新闻分类:把一篇新闻归入体育、财经、科技、娱乐等栏目之一。语种识别:判断一段文字是用哪种语言写的。植物和动物识别、商品分类、客服工单的分派等,也都是多分类问题。
多分类与多标签分类的区别
需要注意区分多分类和多标签分类。在多分类中,每个样本只能属于一个类别,比如一个手写数字只能是 0 到 9 中的某一个。在多标签分类中,一个样本可以同时属于多个类别,比如一篇新闻可以同时被标注为“科技”和“财经”,一张图片中可以同时包含“人”“狗”和“汽车”。两者在模型的设计和评价方法上都有所不同。
如何处理多分类问题
有些模型能够直接处理多分类问题:决策树和随机森林,在叶子节点上直接给出类别;K 近邻,根据最近的邻居中哪个类别最多来判断;朴素贝叶斯,直接计算每个类别的概率;神经网络,在输出层设置与类别数量相同的神经元,每个神经元输出一个分数,再通过 softmax 函数把这些分数转换成一组和为 1 的概率,选择概率最大的类别作为预测结果,训练时使用交叉熵损失。逻辑回归也可以推广为多项逻辑回归,也叫 softmax 回归。
另一些模型,比如原始的支持向量机,天然只能处理二分类问题。这时可以把多分类问题拆分成多个二分类问题。一对多,也叫一对其余:为每个类别训练一个二分类器,判断样本“是不是这个类别”,N 个类别需要 N 个分类器。预测时,选择给出分数最高的那个分类器对应的类别。这种方法简单,但每个分类器面对的正负样本数量往往很不平衡。一对一:为每两个类别训练一个二分类器,N 个类别需要 N 乘以 N 减 1 再除以 2 个分类器。预测时,让所有分类器投票,得票最多的类别胜出。虽然分类器的数量更多,但每个分类器只用两个类别的数据训练,训练速度可能更快。纠错输出码:为每个类别设计一个二进制编码,每一位对应一个二分类器,预测时比较输出的编码与各个类别编码的距离,具有一定的容错能力。
如何评价多分类模型
最直接的指标是准确率,也就是所有样本中分类正确的比例。混淆矩阵可以清楚地展示模型在每个类别上的表现,以及哪些类别之间容易被混淆。对于精确率、召回率、F1 分数这些原本针对二分类定义的指标,在多分类中需要先对每个类别分别计算,再进行平均:宏平均对每个类别的指标直接求平均,每个类别同等重要,能更好地反映模型在少数类别上的表现;微平均先把所有类别的统计数量加在一起再计算,样本多的类别影响更大。在图像分类等类别很多的任务中,还常用前五准确率:只要正确的类别出现在模型预测的概率最高的前五个类别中,就算预测正确。