(2019-12-16)
首先,Type I/II Error 在维基百科的解释为:
Type I error is the rejection of a true null hypothesis (also known as a "false positive" finding), I类错误是拒绝了本为真的 Null Hypothesis
Type II error is failing to reject a false null hypothesis (also known as a "false negative" finding). 1-power。 II类错误是未能拒绝一个本为假的 Null Hypothesis
用一个例子来讲:
Type I Error: (见图上H0): 阴性 假设 成立,实际上也确实成立,但是我们检测到的样本正好有Bias,导致 落于置信区间外,造成了False Positive Error(本来没病,却检查出有病)
Type II Error: (见图上H1): 阴性 假设 成立,实际上不成立,应该是 。但是我们检测到的样本正好有Bias,导致 落于置信区间内,造成了False Negative Error(本来有病,却检查出没病)
再追加一个例子,如果我们要检验: : 中国人平均身高 ≤ 170cm : 中国人平均身高 > 170cm Type I Error 就是平均身高实际是170cm,但是取到的样本平均身高到了180cm,导致错误地拒绝了H0 Type II Error 就是平均身高实际是180cm,但是取到样本平均身高却是172cm,导致错误地未能拒绝H0
α 的选择越小,蓝线右移,P(Type I Error) 越小,P(Type II Error) 越大; α 的选择越大,蓝线左移,P(Type I Error) 越大,P(Type II Error) 越小。
其中,定义检验的势 Power = 1 - P(Type II Error)
敏感性(Sensitivity)意味着有病的人的检测正确率,特异性(Specificity)意味着没病的人的检测正确率。
具体来讲, 如果拿出机器学习中的混淆矩阵:
敏感性的计算公式为: ,它与FNR是互补关系(和为1) 高敏感性 意味着 低 FNR (False Nagetive Rate,图中的β,漏诊率),有病的都能被检测出来,机器学习中意味着高召回率( ),可以看到公式是一样的。另外它和假设检验中的 power(势) 也是一致的。
特异性的计算公式为: ,它与FPR是互补关系(和为1) 高特异性 意味着 低 FPR (False Positive Rate,图中的α,误诊率),没病的都不会被勿诊为有病,但注意,高特异性并不意味着机器学习中的高精确度( ),因为即便高特异性意味着低FP,但可能模型本身很差,根本无法找出TP,从而导致精确度很低。
将模型检测结果的 TPR (Sensitivity) 作为横坐标,FPR (1 - Specificity) 作为纵坐标,画到笛卡尔坐标系中,即可得到类似与如下的曲线:
直观上理解,其实就是当下图中的蓝线(阈值)从紫色面积的最右边逐渐移到红色部分的最左边时,产生的曲线:
其中的道理是,通过阈值的选择可以让模型对正例的判别变得严格,这样就会有更多的真实正样本被分为正例,TPR( )增加,但同时也会有更多的真实负样本被分为正例,所以同时提高了FPR( ):
极端情况下,
而AUC就是所谓的Area under Curve,代表ROC曲线下面的面积,值域为[0, 1],正常情况下为[, 1]。
AUC的实际意义是:当随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的分数将这个正样本排在负样本前面的概率就是AUC值。所以,AUC的值越大,当前的分类算法越有可能将正样本排在负样本值前面,既能够更好的分类。
假设一个警察会根据一系列经验去抓小偷,但是不能100%保证准确率,那么当警察提高他的严苛度(阈值)时,必然会有更多的小偷被抓到,漏判率降低,但是随之误判率会升高,会有良民被抓。
因此,阈值的设定关系到了我们想要这个模型产出的效果,如果希望抓出更多的Positive样本,就提高阈值,随之Sensitivity增加,FPR增加;如果希望Negative样本不要误判,就降低阈值,Sensitivity降低,FPR降低。
例如在金融领域,欺诈用户如果不能更好地被检测出来,会给企业带来巨大损失,同样如果病人被误判为健康的,那么他的生命就会受到威胁,这两种情况则都需要模型具有较高的敏感度。关于这种情况的优化,可以参考1999年的一篇论文: MetaCost: A General Method for Making Classifiers Cost-Sensitive 。其采用了Bagging的思想对使分类器变得代价敏感。
方法有多种,其中包括:找到离(0,1)最近的点,Youden index等[2]
一个模型只能产生一个结果,那么如何绘制曲线呢? 具体方法是在得到 生成概率/预测概率/后验概率 后,先不急着算出预测类别,而是先对生成概率进行从大到小的排序,例如:
然后我们就可以通过画线分割的方式来选择不同的阈值,同时计算相应的TPR和FPR了,比如先选择阈值:
, ,ROC上添加点 (0, )
当阈值选为时:
, ,ROC上添加点 (0, )
以此类推我们可以继续得到点: (, ) (, ) (, ) (, ) (, ) (, ) (, )
将图像画出即为:
毫无疑问,统计学习是包含在统计学中的,是统计学中的一个上层建筑。 其中的I/II类错误,还有power都是假设检验中的概念,但通过上面的分析也发现了不同统计概念中的一致性(例如Sensitivity, Power, Recall都是一致的)。
实际上在现实世界的统计规律中,如果不给定或者给定极少的(例如1个)特征,那么分类问题就如同盲人摸象,不同类别的分布会重叠在一起。而 统计机器学习的目的 ,就是 通过一定的手段,把这两个分布尽可能地拉开,拉的越开,那么分类的效果就越好 。
而这个手段,就是 数据(特征) + 模型 + 算法(最优化) 。如何更好地利用这些手段,并解决现实生活中的实际问题,就是统计机器学习的研究目标。
References: [1] Youtube - Sensitivity, Specificity, and ROC Curves [2] 全面了解ROC曲线 [3] ROC及AUC计算方法及原理