且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

更新时间:2022-09-27 23:05:47

本节书摘来自异步社区出版社《写给程序员的数据挖掘实践指南》一书中的第5章,第5.5节,作者:【美】Ron Zacharski(扎哈尔斯基),更多章节内容可以访问云栖社区“异步社区”公众号查看。

5.5Kappa统计量

本章一开始提到一些我们可能对分类器感兴趣的问题,其中包括“分类器到底好到什么程度”。我们已经对评估方法进行了改善,并且考察了10折交叉验证和混淆矩阵。前几页的例子中,我们也算出分类器预测汽车MPG的精确率为53.316%。但是,53.316%意味着分类器到底是好还是坏?为回答这个问题,我们将继续考察一个统计量,即Kappa统计量。

《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

Kappa统计量比较的是分类器与仅仅基于随机的分类器的性能。为展示其中的原理,我将引入一个比MPG更简单的例子,即再次回到女运动员那个例子。下面给出了女运动员分类的结果:

《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

上表也给出了每行和每列的总实例数目。为确定精确率,我们将对角线的数字相加(35+88+28=151)然后除以总的实例数,得到151/200=0.755。

现在将生成另一个混淆矩阵,该矩阵代表随机分类器(进行随机预测的分类器)的分类结果。首先,生成一个只包含上述表格中总数的表格:

《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

观察最后一行,我们发现有50%的可能会将一个实例分为“篮球运动员”(200个实例中有100个),有20%的可能会将实例分为“体操运动员”(200个实例中有40个),有30%的可能会将实例分为“马拉松运动员”。

接下来将使用这些比值将上述表格的剩余部分填满。随机分类器将会把20%的人分为体操运动员。60的20%为12,因此我们将12填入表格中。该分类器会将50%的人分为篮球运动员(即60中的30人),会将30%的人分为马拉松运动员。
《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

接下来按照上述方法继续处理。实际有100个篮球运动员,随机分类器会将其中的20%(20人)分为体操运动员,50%分为篮球运动员,30%分为马拉松运动员。表中第四行可以依此类推,于是有:

《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

为确定随机分类器的精确率,我们将对角线的数字累加并除以实例总数,得到:

《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

Kappa统计量给出的是相对于随机分类器而言实际分类器到底好多少,其计算公式为:

.《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

其中,P(c)是实际分类器的精确率,而P(r)是随机分类器的精确率。本例中实际分类器的精确率为0.755,而随机分类器的精确率为0.37,因此有:
《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

如何解释上述结果中的0.61?这到底意味着分类器是差、好还是很好?下面给出一个帮助我们理解该统计量大小的对照表:

一个最常被人引用的Kappa统计量区间对照解释

<0: 比随机方法的性能还差(less than chance performance)

0.01-0.20: 轻微一致(slightly good)

0.21-0.40: 一般一致(fair performance)

0.41-0.60: 中度一致(moderate performance)

0.61-0.80: 高度一致(substantially good performance)

0.81-1.00: 接近完美(near perfect performance)

① Landis, JR, Koch, GG. 1977. The measurement of observeragree- ment for categorical data. Biometrics 33:159-74

《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

假设我们开发了一个傻瓜分类器,它基于大家对10部电影的喜好程度预测当今大学生的专业。我们的数据集由来自计算机科学、教育、英语和心理学专业的600名学生组成。下面给出了混淆矩阵,请计算Kappa统计量并对结果进行解释。

《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

该分类器的精确率为0.697。

《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

该分类器有多好?请计算Kappa统计量并对结果进行解释。

首先,对所有列进行求和有:

.《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

接下来,为随机分类器构建混淆矩阵,有:

《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

随机分类器的精确率为:

《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

于是我们构建的分类器的P(c)为0.697,

随机分类器的P(r)为0.292,

Kappa统计量为:
《写给程序员的数据挖掘实践指南》——5.5Kappa统计量

这也意味着我们算法的性能较好。《写给程序员的数据挖掘实践指南》——5.5Kappa统计量