本文编写于 316 天前,最后修改于 315 天前,其中某些信息可能已经过时。

通俗易懂解释一类和二类错误(Type I Error Type II Error)

作者 KULDEEP PATEL

翻译自False Positive (Type I Error) and False Negative (Type II Error)


本文涵盖以下与“误报False Positive和漏报False Negative”及其在机器学习领域中的意义有关的主题:

  • 解释
  • 3个案例
  • Python代码(Scikit-Learn)
  • 我们如何衡量分类问题中的错误?
  • 还想获得更多相关内容?:有关医学检验假阳性和假阴性的新闻

解释

▲I型错误(误报 False Positive)和II型错误(漏报 False Negative)

通过查看该图,您对I型和II型错误有了解了吗?让我们探索一下它。

这张图表示年龄(在X轴上,自变量)与已婚(在Y轴上,因变量)之间的关系。Y取决于X的值,即某人已婚(Y = 1或Yes)或未婚(Y = NO 获0)的决定取决于人的年龄。

误报 (False Postive),也称Type I Error

蓝色十字标记→红色十字标记(实际→预测)

就是那个25到30之间的一蓝一红的2个点

注意图中的十字标记符号,其中蓝色十字标记表示实际值,红色十字标记表示预测值。在25至30岁左右的年龄,一个名叫A先生的人实际上并未结婚。但是,预测说A先生已结婚,这是一个错误的预测(即False),并且预测值是Yes或1(即Positive)。因此,它被称为“误报False Postive”或“ I类错误”。

漏报(False Negative),也称Type II Error

蓝色圆圈标记→红色圆圈标记(实际→预测)即20-25之间的两个点

在此方案中,蓝色圆圈标记和红色圆圈标记分别表示实际值和预测值。实际上,一个名为B先生的人已婚,年龄约为20-25岁。但是,预测值表明B先生尚未结婚。因此,在这种情况下,预测也是错误的(即False),并且预测值为No或0(即Negative)。这被称为“漏报False Negative”或II型错误。

解释说明 Interpretation

误报-当预测错误且预测值是真时

漏报-当预测错误且预测值为假时

False Positive- when a prediction is wrong & predicted value is positive

False Negative- when a prediction is wrong & predicted value is Negative

混淆矩阵中的I型和II型错误表示:

▲混淆矩阵 Confusion Matrix

案例

第一个案例:火灾报警

类型I错误(误报):当没有火警时,火警会响起[Sources:Gifer(火警)]

类型II错误(漏报) :发生火灾时,火警警报无法响起 [Sources:Gifer(FireAlarm),tenor(Fire)]

第二个案例:男人怀孕

I型错误(误报):医生说男人怀孕了…

II型错误(漏报):医生说孕妇没有怀孕…

[来源:pinterest(医生),fotosearch(男人)和deviantart(女士)]

Python Code解释(用Sklearn)

# Assume we have a dataset which contains the information on pregnancy tests
# 0- Represents Lady is not pregnant 女士没怀孕
# 1- Represents Lady is pregnant 女士怀孕了
# y- Output/Target/Dependent Variable 因变量
# y_actual - In reality 真实值
# y_predicted - Predicted by Machine Learning algorithm  机器学习预测值
y_actual = [1,0,0,0,0,0,1,1,1,0]
y_predicted = [1,1,1,0,0,0,1,1,0,0]

from sklearn. metrics import confusion_ matrix
print(confusion_matrix(y_actual, y_predicted))

# 输出
# [[4 2]
#  [1 3]]

▲混淆矩阵Confusion Matrix

# False Positive and False Negative
FP=confusion_matrix(y_actual,y_predicted)[0][2]
FN=confusion_matrix(y_actual,y_predicted)[1][0]
print("False Positive (Type I Error) :",FP)
print("False Negative (Type II Error):",FN)
# Accuracy 准确度 = 1-(漏报的个数+误报的个数)/总数据个数
accuracy=100-((FP+FN)*100/len(y_predicted))
print(" Accuracy : ",accuracy,' %')

# 输出
# False Positive (Type I Error) : 2
# False Negative (Type II Error): 1
# Accuracy : 70.0 %

▲误报和漏报 False Positive and False Negative

▲与混淆矩阵相关的结果

▲3个错误(2个误报 蓝色箭头+ 1个漏报 红色箭头)

如何衡量分类问题中的错误

I型错误(误报)和II型错误(漏报)可帮助我们确定模型的准确性,可以借助混淆矩阵来确定模型的准确性。

如果我们将类型I和类型II错误的值相加,则总错误=误报+漏报,精准程度=1-总错误数/总个数。

如果错误较小,则准确度会更高,反之亦然。更好的准确性,更好的性能,这正是我们想要的。。

我们来解释下在Python代码中获得的结果

误报数= 2,表示2位女士实际上并未怀孕,但模型预测表明他们已怀孕。

漏报数= 1,表示1位女士实际情况下怀孕,但根据预测她没有怀孕。

因此,由于孕妇怀孕且模型预测说她没有怀孕,这种情况更加危险。

因此,这里的Type II Error比Type I Error更危险。

我们可以得出结论,在10个预测中,我们的模型做出了3个错误预测(1个假阴性+ 2个假阳性)和7个正确预测(4个真阳性+3个真阴性)。

因此我们可以说模型的准确性为70%,误差为30%。

还想获得更多相关内容?:有关医学检验假阳性和假阴性的新闻

请点击查看 医学测试当中的预测价值

非常感谢您的阅读!

参考资料

  1. Taking the Confusion Out of Confusion Matrices
  2. Simple guide to confusion matrix terminology
  3. Everything you Should Know about Confusion Matrix for Machine Learning