会计欺诈预测的AUC法与NDCG法【学术前沿】
之前我们提到的文章《Detecting Accounting Frauds in Publicly Traded U.S. Firms:New Perspective and New Method》中作者探究了几个模型对于会计欺诈预测的效果。如何来评判这些预测模型效果的好坏?作者用了两个评价指标AUC(Area under Curve Roc)与NDCG(Normalized Discounted Cumulative Gain)。那么今天我们就来细说一下这两个广泛应用于机器学习、统计等领域的方法,并介绍这些方法是如何用在会计欺诈预测中来检测模型效果的。
1、AUC
1.1、什么是AUC
这一部分我们转载了公众号“机器会学习”中的内容:
AUC是一个模型评价指标,只能用于二分类模型的评价,对于二分类模型,还有很多其他评价指标,比如logloss,accuracy,precision。如果你经常关注数据挖掘比赛,比如kaggle,那你会发现AUC和logloss基本是最常见的模型评价指标。为什么AUC和logloss比accuracy更常用呢?因为很多机器学习的模型对分类问题的预测结果都是概率,如果要计算accuracy,需要先把概率转化成类别,这就需要手动设置一个阈值,如果对一个样本的预测概率高于这个预测,就把这个样本放进一个类别里面,低于这个阈值,放进另一个类别里面。所以这个阈值很大程度上影响了accuracy的计算。使用AUC或者logloss可以避免把预测概率转换成类别。
AUC是Area under curve的首字母缩写。Area under curve是什么呢,从字面理解,就是一条曲线下面区域的面积。所以我们要先来弄清楚这条曲线是什么。这个曲线有个名字,叫ROC曲线。ROC曲线是统计里面的概率,最早由电子工程师在二战中提出来(更多关于ROC的资料可以参考维基百科)。
ROC曲线是基于样本的真实类别和预测概率来画的,具体来说,ROC曲线的x轴是伪阳性率(false positive rate),y轴是真阳性率(true positive rate)。那么问题来了,什么是真、伪阳性率呢?对于二分类问题,一个样本的类别只有两种,我们用0,1分别表示两种类别,0和1也可以分别叫做阴性和阳性。当我们用一个分类器进行概率的预测的时候,对于真实为0的样本,我们可能预测其为0或1,同样对于真实为1的样本,我们也可能预测其为0或1,这样就有四种可能性:
真阳性率=(真阳性的数量)/(真阳性的数量+伪阳性的数量)
伪阳性率=(伪阳性的数量)/(伪阳性的数量+真阴性的数量)
有了上面两个公式,我们就可以计算真、伪阳性率了。但是如何根据预测的概率得到真伪阳性、阴性的数量。
我们来看一个具体例子,比如有5个样本:
真实的类别(标签)是y=c(1,1,0,0,1)
一个分类器预测样本为1的概率是p=c(0.5,0.6,0.55,0.4,0.7)
如文章一开始所说,我们需要选定阈值才能把概率转化为类别,选定不同的阈值会得到不同的结果。如果我们选定的阈值为0.1,那5个样本被分进1的类别,如果选定0.3,结果仍然一样。如果选了0.45作为阈值,那么只有样本4被分进0,其余都进入1类。一旦得到了类别,我们就可以计算相应的真、伪阳性率,当我们把所有计算得到的不同真、伪阳性率连起来,就画出了ROC曲线,我们不需要手动做这个,因为很多程序包可以自动计算真、伪阳性率,比如在R里面,下面的代码可以计算以上例子的真、伪阳性率并且画出ROC曲线:
上面代码可以画出下图:
得到了ROC曲线,那么曲线下面的面积也就可以算出来了,同样,我们可以通过程序得到面积:
这个ROC的面积也就是我们要计算的AUC值。
1.2、在会计欺诈预测中的应用
实验详情参阅我们往期文章《更高效的会计欺诈预测模型——集成学习(ensemble learning method)与基于会计原始数据的回归模型预测会计欺诈行为》。
由于欺诈预测任务可以转换为一个二元分类问题(欺诈与非欺诈),所以可以使用分类问题的评估指标来度量欺诈检测性能。
定义真阳性(ture positive TP)为有欺诈行为的公司准确的被分入欺诈组的数量。
伪阴性(false negative FN)为有欺诈行为的公司被错误分入无欺诈组的数量。
真阴性(ture negative TN)为无欺诈行为公司被正确分入无欺诈组的数量。
伪阳性(false positive FP)为无欺诈行为的公司被错误分入欺诈组的数量。
该实验首先使用了accuracy的方法,其公式为
但由于该实验的欺诈和非欺诈数据的不平衡性,这个标准的分类性能度量在实验场景中是不合适的(回想一下,样本中每年的欺诈百分比低于1%)。如果使用这种模型,那么一个将所有公司都归类为非欺诈的幼稚策略将导致该评价准确率超过99%。然而,具有如此高绩效的欺诈预测模型几乎没有价值,因为该实验主要关心的是尽可能准确地检测出尽可能多的欺诈公司,而不会对太多的非欺诈公司年进行错误分类。也就是说,既关心真阴率,也关心真阳率。
该团队又考虑了另外一种方法,可以使用balanced accuracy (BAC)作为替代的绩效评估指标,其定义为欺诈观测值和无欺诈观测值中欺诈检测精度的平均值。其公式为:
但该方法也有两个关键限制。首先,BAC是基于一个分类器的一个特定的预测欺诈概率阈值来构造的,通常由分类器自动确定,以最大化BAC。换句话说,通过设置不同的分类器阈值,可以获得不同的BAC值。由于对误报和误报的成本没有任何认识,因此无法确定用于对欺诈和无欺诈进行分类的最佳预测概率阈值。第二,诸如灵敏度之类的测量方法对样本中阳性和阴性实例的相对频率非常敏感(数据不平衡)。
为了避免以上诸多限制,最终该团队决定使用AUC法。通过计算ROC曲线下的面积(AUC),可以将欺诈检测模型的效绩降低到单个标量。因为AUC是单位正方形面积的一部分,所以它的值总是在0到1.0之间。因为随机猜测会产生(0,0)和(1,1)之间的对角线,其面积为0.5,所以任何实际的分类器的AUC都不应该小于0.5。如已有研究所讨论的,AUC等价于一个分类器随机选择的20个阳性实例的排名高于随机选择的20个阴性实例的概率。
2、NDCG
2.1、DCG简单介绍
该部分我们转载了CSDN博主“_荣耀之路_”的描述:
Discounted Cumulative Gain(DCG)是衡量排名质量的一种方法。在信息检索中,经常被用来衡量网络搜索引擎算法或相关应用程序的有效性。DCG使用搜索引擎结果集中文档的分级相关性度量,根据文档在结果列表中的位置度量文档的有用性或增益。增益从结果列表的顶部累积到底部,每个结果的增益在较低的位置会有折损。
在使用DCG和相关度量时有两个假设:
(1)在搜索引擎结果列表越前面的文档,高相关度的文档越有用。
(2)高度相关的文档比略微相关的文档更有用,而略微相关的文档比不相关的文档更有用。
DCG起源于更早的、更原始的度量方法Cumulative Gain。
CG:
CG是DCG的前身,在考虑结果集的实用性时不包括结果的位置。它是搜索结果列表中所有结果的分级相关性的和。在指定位置p的CG定义为:
其中reli是位置处结果的分级相关性。
使用CG函数计算的值不受搜索结果顺序变化的影响。也就是说将高相关度的文档移动到更高的、不太相关的文档之上不会改变CG计算的值。为了更精确的度量使用DCG代替CG。
DCG:
DCG的前提是在搜索结果列表中高相关度的文档出现在较低的位置应该被惩罚,分级的相关性值与结果的位置成对数比例降低。
在指定位置p传统的DCG累加公式定义为:
2.2、NDCG@k在欺诈预测中的应用
该欺诈检测任务也可以被认为是一个排名问题,因为它将实验的样本外绩效评估限制在一个很小的数量(即k,定义如下)通过欺诈检测模型预测存在欺诈概率最高的公司年份。在此场景中,欺诈检测模型的性能可以通过k处的归一化折现累积收益(NDCG@k,针对排序问题的性能评估指标)进行度量。NDCG@k是一种广泛使用的评价排名算法的度量标准,如web搜索引擎算法和推荐算法。
一般的DCG@k公式为
公式中的 在第i个观测对象真的发生欺诈时值为1,其余的情况为0。k值表示欺诈检测模型(排名列表)预测的公司欺诈概率最高的测试期内的年数。在随后的实证分析中,研究人员选择了k,因此排名列表中的公司年数代表了测试年度中所有公司年数的1%。该实验选择了1%的下限是因为美国证券交易委员会AAERs批准的会计欺诈的平均频率通常低于每年1%。
关于DCG@k的定义存在两个假设:
(1)一个真正欺诈的观测对象的分数应高于无欺诈观测对象的分数。
(2)一个真正的欺诈观察如果在排名列表中排名越高,那么它的得分越高。也就是说,排名越高的观察值所占的权重越大。
NDCG@k是由ideal DCG@k规范化之后的DCG@k,其公式为:
当所有真实欺诈对象的排名全都在最前时,NDCG@k与ideal DCG@k是等价的。所以NDCG@k的值会在0与1之间,越靠近1说明该模型的排名效果越好。
相对于第一个业绩评估指标AUC, NDCG@k避免了调查大量预测欺诈的重大直接和间接成本,因为真实舞弊的数据严重不平衡,其中大部分可能是假阳性。由于美国证券交易委员会AAERs批准的会计欺诈的平均频率通常不到1%,即使是之前研究中表现最好的欺诈检测模型(如Cecchini)也会导致大量的误报。
“智能财会联盟”共同发起单位邀请函
学术前沿专题回顾
人才&实务专题回顾
会议动态专题回顾