本节书摘来自异步社区出版社《写给程序员的数据挖掘实践指南》一书中的第5章,第5.3节,作者:【美】Ron Zacharski(扎哈尔斯基),更多章节内容可以访问云栖社区“异步社区”公众号查看。
5.3混淆矩阵
到目前为止,通过计算下列精确率百分比,我们对分类器进行评估:
有时,我们可能希望得到分类器算法的更详细的性能。能够详细揭示性能的一种可视化方法是引入一个称为混淆矩阵(confusion matrix)的表格。混淆矩阵的行代表测试样本的真实类别,而列代表分类器所预测出的类别。
它之所以名为混淆矩阵,是因为很容易通过这个矩阵看清楚算法产生混淆的地方。下面以女运动员分类为例来展示这个矩阵。假设我们有一个由100名女子体操运动员、100名WNBA篮球运动员及100名女子马拉松运动员的属性构成的数据集。我们利用10折交叉验证法对分类器进行评估。在10折交叉测试中,每个实例正好只被测试过一次。上述测试的结果可能如下面的混淆矩阵所示:
同前面一样,每一行代表实例实际属于的类别,每一列代表的是分类器预测的类别。因此,上述表格表明,有83个体操运动员被正确分类,但是却有17个被错分为马拉松运动员。92个篮球运动员被正确分类,但是却有8个被错分为马拉松运动员。85名马拉松运动员被正确分类,但是却有8个人被错分为体操运动员,还有16个人被错分为篮球运动员。
混淆矩阵的对角线给出了正确分类的实例数目。
上述表格中,算法的精确率为:
通过观察上述矩阵很容易了解分类器的错误类型。在本例当中,分类器在区分体操运动员和篮球运动员上表现得相当不错,而有时体操运动员和篮球运动员却会被误判为马拉松运动员,马拉松运动员有时被误判为体操运动员或篮球运动员。
一个编程的例子
回到上一章当中提到的来自卡内基梅隆大学的汽车MPG数据集,该数据集的格式如下: