- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章免费Python机器学习课程八:精确度,召回率由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
如何处理机器学习中偏斜的数据集 。
用偏斜的数据集开发有效的机器学习算法可能很棘手。例如,数据集涉及银行中的欺诈活动或癌症检测。发生的情况是,您将在数据集中看到99%的时间没有欺诈活动或没有癌症。您可以很容易地作弊,并且始终可以仅预测0(如果癌症则预测1,如果没有癌症则预测0),从而获得99%的准确性。如果这样做,我们将拥有99%的准确机器学习算法,但我们将永远不会检测到癌症。如果某人患有癌症,他/他将永远得不到治疗。在银行中,不会采取任何针对欺诈活动的措施。因此,仅靠准确性就无法确定偏斜的数据集,就像算法是否有效运行一样.
背景 。
有不同的评估矩阵可以帮助处理这些类型的数据集。这些评估指标称为精确召回评估指标.
要了精确度和召回率,您需要了解下表及其所有术语。考虑二进制分类。它将返回0或1。对于给定的训练数据,如果实际类别为1,而预测类别也为1,则称为真实肯定。如果实际类别为0,而预测类别为1,则为假阳性。如果实际类别为1,但预测类别为0,则称为假阴性。如果实际类别和预测类别均为0,则为真阴性.
使用所有这些,我们将计算精度和召回率.
精确 。
Precision会计算出我们预测为欺诈的交易(预测为1类)中有多少实际上是欺诈的。可以使用以下公式计算精度:
进一步分解,该公式可以写成:
从公式中可以看出,更高的精度是好的。因为更高的精度意味着更多的真实肯定。这意味着当我们说此交易是欺诈性的时,这是事实.
召回 。
回忆告诉我们,最初欺诈的所有交易中有多少被检测为欺诈。这意味着,如果我们告知银行适当的权力采取行动,那么在某笔交易实际上是欺诈的情况下。当我第一次阅读这些关于精确度和召回率的定义时,我花了一些时间才能真正理解它们之间的区别。我希望你能更快地得到它。如果没有,那就不用担心。你不是一个人.
召回率可以通过以下公式计算:
用上面2 x 2表中定义的术语表示:
从精确度和召回率做出决策 。
精确度和召回率可以更好地了解算法的实际运行方式,尤其是在数据集高度偏斜的情况下。如果我们一直预测为0并获得99.5%的准确度,则召回率和精确度都将为0。因为没有真正的肯定。因此,您知道分类器不是一个好的分类器。当精度和查全率都很高时,表明该算法运行良好.
假设仅在高度自信的情况下,我们要预测y = 1。因为有时候这很重要。特别是当我们处理医疗数据时。假设我们正在检测某人是否患有心脏病或癌症。预测假阳性会给一个人的生活带来很多痛苦。提醒一下,通常,逻辑假设如果假设大于或等于0.5,则预测1;如果假设小于0.5,则预测0.
但是,当我们如上所述处理某些敏感情况时,我们想更确定自己的结果,如果假设≥0.7,我们将预测为1,如果假设<0.7,我们将预测为0。如果您想对结果更有信心,可以看到0.9之类的值。因此,您将90%地确定某人是否患有癌症.
现在,看看精度和召回率公式。真实肯定和错误肯定都会更低。因此,精度会更高。但另一方面,由于我们现在将预测更多的负面因素,因此,假阴性的可能性会更高。在这种情况下,召回率会更高。但是太多的假阴性也不好。如果某人确实患有癌症,或者某个账户有欺诈行为,但是我们告诉他们他们没有癌症,或者该账户没有欺诈行为,则可能导致灾难.
为了避免误报并提高召回率,我们需要将阈值更改为以下内容:
与以前的情况相反,我们将具有更高的召回率和更低的精度.
那么如何确定阈值呢?这将取决于您的要求。根据数据集,您必须决定是否需要更高的精度或更高的查全率。这是精度调用曲线:
精确调用曲线可以是任何形状。因此,我在这里显示三种不同的形状。如果您不能自己决定是否需要更高的精度或更高的查全率,则可以使用F1分数.
F1分数 。
F1分数是准确性和召回率的平均值。但是平均公式却不同。常规平均公式在这里不起作用。看一下平均公式:
(精确+召回)/ 2 。
即使精度为0或召回率为零,平均值仍为0.5。请记住,从我们之前的讨论中可以看出,精度为零是什么意思。我们总是可以预测y =1。因此,这应该是不可接受的。因为整个精确调用的想法是避免这种情况。公式F1得分是:
在这里,P是精度,R是召回率。如果精度为零或召回率为零,则F1分数将为零。因此,您将知道分类器没有按照我们的期望工作。当精度和召回率都完美时,这意味着精度为1,召回率也为1,F1分数也将为1。因此,理想的F1分数是1。最好尝试使用不同的阈值并计算精度,召回率和F1分数,以找到适合您的机器学习算法的最佳阈值.
结论 。
在本文中,您学习了如何处理偏斜的数据集。如何使用F1分数在精确度和召回率之间进行选择。希望对您有所帮助.
原文地址:https://www.toutiao.com/i6907426451298173451/ 。
最后此篇关于免费Python机器学习课程八:精确度,召回率的文章就讲到这里了,如果你想了解更多关于免费Python机器学习课程八:精确度,召回率的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我使用 QBFC v13 和 Delphi XE6。 目标是从我的应用程序创建 Estimate 并将其参数设置到 QuickBooks 中。 我从 QBFC13 导入类型库并将其添加到我的项目中。
我有一个数据库,其中有很多格式不正确的地址。在这个地址中,我只有一个街道地址或带有城市名称的街道。在我的应用程序中,用户选择一些类别,然后我想在 map 上显示例如 50,100,300 等地址。(不
在大多数软件项目中,缺陷源自需求、设计、编码和缺陷更正。根据我的经验,大多数缺陷都源于编码阶段。 我有兴趣了解软件开发人员使用哪些实用方法来降低缺陷注入(inject)率。 我已经看到以下方法的使用取
我正在使用实时 API 中的标签订阅构建一个应用程序,并且有一个与容量规划相关的问题。我们可能有大量用户同时发布到订阅的主题标签,因此问题是 API 实际发布到我们的订阅处理端点的频率是多少?例如,如
尝试使用 NULLIF 或 IFNULL 函数,但仍收到被零除的消息。 SELECT client_id ,COUNT(distinct CASE WHEN status = 'failed' THE
我目前正在开发一个使用 Django-rest-framework 制作的 API。我必须根据每个用户组设置限制率。 我们目前使用默认配置的 memcached 作为缓存后端,即按站点缓存。 在使用
我认为有时在神经网络(特别是一般对抗网络)训练期间改变丢失率可能是一个好主意,从高丢失率开始,然后线性地将丢失率降低到零。您认为这有意义吗?如果是的话,是否有可能在 tensorflow 中实现这一点
我有一个 Windows Server 2008,Plesk 运行着两个网站。有时服务器运行缓慢,并且有一个 named.exe 进程使 CPU 峰值达到 100%。它持续很短的时间,过一会儿它又来了
我正在使用 scikit-learn 随机森林分类器,我想通过将成功投票所需的树数量从大于 50% 增加到 75% 来降低 FP 率,在阅读文档后我不这样做确定如何做到这一点。有没有人有什么建议。 (
当我连续按下按键事件(字母 k)时,为什么以下按键事件不会减慢 3000 密耳?如果我按住手指,计数会迅速增加,因为 mcount 上没有 setTimeout。这是为什么?每次计数之间应该有延迟,但
我是一名优秀的程序员,十分优秀!