通俗易懂解释一类和二类错误(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型错误(误报)和II型错误(漏报)

▲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)]

第二个案例:男人怀孕

1_5pZNWXDxY4M9SUJ56QV7yA

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][1]
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

Relate the results with a confusion matrix

▲与混淆矩阵相关的结果

3 Errors (2 False Positive + 1 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%。

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

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

非常感谢您的阅读!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐