R中的混淆矩阵:如何制作和计算[附例子]

已发表: 2021-03-09

R 已成为当今用于数据和统计分析的领先软件包之一。 它因其强大的计算、视觉和图形功能而成为首选的开源环境。 如果您是工程专业的学生、商业分析专业人士或对数据科学有浓厚兴趣的人,那么学习 R 编程语言可以在很多方面为您提供帮助。

在本文中,我们将通过这个集成套件介绍机器学习的一些基本概念。 更具体地说,我们将讨论如何在 R 中计算混淆矩阵

但在我们继续讨论技术细节之前,让我们首先了解为什么我们为此目的选择了 R。 正是由于以下优点,这种编程语言在全世界的统计学家和数据科学家中越来越受欢迎:

  • 可重现:使用 R,您可以重现报告并编写可重用的代码
  • 可共享:它的学习曲线较低,为协作开辟了道路
  • 可重复:任何人不仅可以理解您所做的事情,还可以重复这些步骤以在他们的机器上创建相同的功能

由于上述原因,R语言在机器学习领域的使用也有所回升。 您无需成为专家级程序员即可理解其语法。 因此,我们将在下一节中向您介绍一些基础知识。

目录

什么是混淆矩阵?

混淆矩阵或误差矩阵处理统计中的标准分类问题。 它包含一个特定的表格布局,便于数据分析师可视化算法的执行方式。 这尤其适用于监督学习算法。

为了进一步阐述,混淆矩阵遵循 N x N 格式,其中 N 是指目标类别的数量。 您可以使用此表或矩阵来评估分类模型的性能。 这是可能的,因为矩阵将预测值与目标值进行比较。

简而言之,您可以描述您的机器学习模型(在这种情况下为分类器)如何处理一组测试数据(您已经拥有真实值)。

要理解此方法,您需要熟悉以下术语:

  • True Positive (TP):正确预测正值
  • 误报 (FP):负值被错误地预测为正值
  • 假阴性 (FN):预测为负的正值
  • True Negative (TN):负值预测为实际负值

让我们看一些例子以获得更多的清晰度。

混淆矩阵示例

  • 真阳性

当您预测印度将赢得板球世界杯时,它赢了。

  • 假阳性

当您期望印度会赢时,它却输了。

  • 假阴性

当你预测法国不会赢时,它赢了。

  • 真阴性

当您预测印度将“不会赢得”板球世界杯时,它在现实生活中输掉了系列赛。

随着我们进一步前进,您应该记住所有预测值都被描述为:正、负、真和假。

如何计算R中的混淆矩阵?

考虑一个场景,您有一个预期或已知值列表以及来自机器学习模型的另一个预测列表。 在 R 中,您可以使用插入符号库中的一个简单函数来计算混淆矩阵:confusionMatrix()。 它不仅可以计算矩阵,还可以返回结果的详细报告。

您可以按照以下步骤来练习数据挖掘的过程:

  • 用预期的结果测试给定的数据集。
  • 预测测试数据集的行。
  • 确定每个类别的正确和错误预测的总数。

完成此操作后,您会发现按以下方式组织的数字:

  • 矩阵的每一行都对应一个预测的类,每一列都链接到一个实际的类。
  • 表中反映了正确和错误分类的总数,以及每个类别的总和。

假设您有 10 个人,分为男性和女性两类。 当您知道 2 名男性被归类为女性,而 1 名女性被归类为男性时,您必须将信息排列为混淆矩阵。

女性男性

妇女 3 1

男子2 4

在这里,正确的值排列在矩阵的左上角到右下角的对角线上 (3 + 4)。 结果告诉我们,将男性成员预测为女性比将女性预测为男性存在更多错误。 该算法在 10 个可能的结果中做出了 7 个正确的预测,这意味着它有 70% 的准确率。

在 R中制作和计算混淆矩阵的指南

如您所见,混淆矩阵函数是检查预测可能结果的有用工具。 因此,在开始创建矩阵之前,您首先需要对概率值进行“切割”。 换句话说,您需要标记一个阈值以将您的概率转化为类别预测。

为此,您可以使用 ifelse() 函数。 例如:

类预测 <-

ifelse (probability_prediction > 0.50,

“正类”,

“负类”

)

您还可以编写 table() 函数以在基数 R 中制作列联表。但是,confusionMatrix() 函数已知会产生有价值的辅助统计信息。

下一步是计算混淆矩阵和其他相关统计数据。 在这里,您需要预测结果和实际结果。 举个例子,下面给出的陈述:

混淆矩阵(预测的,实际的)

现在,您应该继续将您的数字预测转换为类别预测向量 sat p_class。 假设您想使用 0.50 的截止值。

此外,在进行预测时,不要忘记用单独的指标命名正类和负类。 我们将正类称为“T”,将负类称为“L”。 这样做是为了将类与原始数据匹配。

现在你在测试数据集中有了 p_class 和实际值,你可以开始制作你的混淆矩阵,调用confusionMatrix() 函数。

或者,您可能希望确定数据挖掘模型的准确性。 在这种情况下,建议使用 0.10 而不是 0.90 的阈值。 此后,您可以继续执行与之前练习中相同的步骤。

使用您的新预测类,您可以重复此调用:

pred <- ifelse(概率 > 阈值,“T”,“L”)

最后,您可以在插入符号中使用confusionMatrix() 函数:

混淆矩阵(预测的,实际的)

至此,我们结束了本教程,了解 R 中机器学习的混淆矩阵函数。希望对您有所帮助!

结论

如果您想了解 R(数据科学),请查看我们的数据科学 PG 文凭,该文凭专为在职专业人士而设,提供 10 多个案例研究和项目、实用的实践研讨会、行业专家指导、一对一1 与行业导师,400 多个小时的学习和顶级公司的工作协助。

创建混淆矩阵的需要是什么?

以下原因向我们介绍了使用混淆矩阵的好处以及它如何处理性能问题。
1. 需要混淆矩阵来消除分类准确性的问题。 分类率经常通过隐藏模型的必要细节而导致一些问题。
2. 混淆矩阵可以深入了解分类模型中的预测和错误类型。 正确和错误的预测以总结的方式呈现。
3. 对错误及其类型进行分类,以便您了解模型的性能。

如何计算R中的混淆矩阵?

R中的混淆矩阵可以通过使用插入符号库的“confusionMatrix()”函数来计算。 该函数不仅计算矩阵,还返回矩阵的详细报告。 您必须按照一些步骤来计算您的混淆矩阵。
1. 测试你的数据集。
2. 预测它的总行数。
3. 预测每个类的正确和错误预测总数。
挖掘数据后,您将获得按行组织的数字。 行将连接到预测类,而列将连接到实际类。 正确的值将在对角线上。 添加所有值,您将获得矩阵的准确度百分比。

如何衡量混淆矩阵中的性能?

您可以使用 2x2 混淆矩阵来计算模型的准确率。 以下公式将为您提供成功率或准确率:
准确度 = (TP+TN)/(TP+TN+FP+FN)
其中,TP = 真阳性,TN = 真阴性,FP = 假阳性,FN = 假阴性
您的模型的错误率也可以使用比率计算公式计算,即:
准确度 = (TP+TN)/(TP+TN+FP+FN) = 1-准确度
错误率的概念很简单。 假设您的模型的准确率为 80%,那么您的模型的错误率为 20%。