百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

通过性能对比来选择机器学习模型(通过性能的几何参数主要有)

toyiye 2024-07-03 02:03 11 浏览 0 评论

对于刚开始进入机器学习之旅的人来说,了解所有机器学习模型及其之间的差异似乎是一项艰巨的任务。在我们了解模型如何工作以及如何利用它之后,我们将需要进入现实世界并将我们学到的知识应用到现实世界中。对于现实世界的问题,我们没有给出一个特定的模型来调整。我们必须评估一组模型,然后决定我们想要使用哪种机器学习模型。

问题:

当我们开始考虑解决机器学习中的问题时,我们必须考虑以下几点:

  • 问题定义
  • 数据集的可用性
  • 预期的解决方案
  • 业务限制

鉴于上述所有信息,我们作为AI开发人员的工作是在给定数据集上设计和训练机器学习模型以获得预期结果。一旦我们知道要构建哪个模型,构建模型就会变得微不足道。有大量资源可以帮助我们。python构建简单机器学习模型的最佳库之一是scikit-learn。使用scikit-learn(scikit-learn.org),我们必须编写的代码量显著减少。我们可以在scikit-learn中找到几乎所有流行模型的实现,因此我们的工作现在已经简化并减少到只为我们的任务选择最佳模型并调整一些参数。这可以通过几行代码完成。

我们的目标是衡量不同分类模型的性能,并尝试为我们的任务挑选最佳分类模型。为此,我们将看到我们的模型在同一数据集上的表现。

数据集:

我们选择的数据集是Kaggle的汽车评估数据集(https://www.kaggle.com/elikplim/car-evaluation-data-set)。数据包括许多特征

  • 相对购买成本
  • 维修费用
  • 门的数量
  • boot space等

我们的任务是预测某辆车是否处于可接受的状态。

汽车可能属于4类:unacceptable, acceptable, good 和 very good。所以我们的问题变成了一个有4个类的分类问题。现在我们将尝试选择能够告诉我们汽车是否状况良好的最佳模型。

我们如何选择正确的模型?

我们可以通过多种方式衡量模型的表现。性能测量的核心思想是我们的模型能够准确地预测给定的数据点。还有其他考虑因素,如延迟,内存使用等,但本文中我们只讨论模型的预测准确性。

在本文中我们选择评估的指标是:

  1. 准确性
  2. 精度
  3. 召回
  4. F1得分
  5. ROC(AUC)
  6. 对数损失

所有这些度量将给我们一种不同的性能感觉。尽管一个好的模型在这些度量标准中表现良好,但是我们应该根据我们的问题陈述来选择度量标准。

混淆矩阵 :要理解大多数这些指标,我们首先需要了解混淆矩阵是什么。假设我们有一个2级分类问题。我们将一个类称为“YES”,将另一个类称为“NO”。现在我们有一组给出的实际分类作为我们的测试数据。我们还有一组相同测试数据点的预测值。

该图像描述了具有165个点的数据集的混淆矩阵。

  • TN - 真阴性(实际数据集中的YES点数)
  • TP - 真阳性(实际数据集中NO点数)
  • FN - 假阴性(错误预测为NO的点数)
  • FP - 误报(错误预测为YES的点数)

我们来看看这些指标的含义:

如果n =我们的测试数据集中的总点数

1.准确度:准确度衡量预测总数的正确预测数,即模型正确预测的次数。这是一个数据点。当我们有多个要测试的数据点时,准确度由整个测试数据集上模型的平均准确度给出。

准确度也可以用混淆矩阵定义为

Acc =(TP + TN)/ n

2.Precision:我们得到正确的Yes预测的次数

Precision = TP / predicted Yes

3.Recall:正确预测Yes的次数

Recall = TP/ actual Yes

4.F1分数:F1分数同时考虑精度和召回率

5.ROC(AUC):FPR(X轴)到TPR(Y轴)的图。其中:

FPR = FP rate = FP / actual No

TPR = TP rate = TP / actual Yes

6.对数损失:它也是预测值与实际值之差的度量。

测试我们的模型:

现在我们已经定义了我们的指标,让我们试着看看我们在不同模型上得到了什么结果。

我们将在分析中使用以下模型:

  • Logistic回归
  • 决策树
  • 随机森林
  • K最近邻
  • 朴素贝叶斯(多个类的多项式)

我们一个接一个地尝试一下。

Logistic回归:

决策树:

随机森林:

K最近邻:

朴素贝叶斯:

比较我们的所有指标,我们得到如下图表:

观察:

根据我们在数据集上运行不同模型所收集的数据,我们可以看到Accuracy,Precision,Recall和F1 Scores都是相互成比例的。这意味着对于我们的情况,我们可以使用其中任何一个来评估我们的模型。

这些指标中表现最好的模型是简单的决策树,其次是随机森林和逻辑回归。

Confusion Matrices让我们更清楚地了解性能。我们必须看一下对角线上的高数字。对角线以外的数字越高,说明分类错误。我们可以看到决策树的错误分类最少。

如果我们查看对数损失比较,情况就会大不相同。这里决策树比我们所有的模型都要糟糕得多,而Logistic回归给我们带来了最好的结果。

这些差异违背了我们的直觉,因为我们期望更准确的模型具有最小的损失。这需要进一步调查我们为什么会在决策树中获得如此高的损失。

但对于我们的案例,决策树分类器似乎表现最好。如果我们想要稳扎稳打(这在现实生活中总是一个很好的策略),我们会选择随机森林或逻辑回归。

在查看这些结果时,我们需要记住以下几点:

  • 我们的数据集仅包含大约1700个点,这远远不足以令人满意地训练我们的模型。在现实生活中,我们将拥有更大的数据集,因此在几个模型中具有不同程度的性能。
  • 我们需要通过更严格的调整来评估我们的模型,以确定哪一个最拟合我们的数据。我们可以使用scikit-learn的模型选择库(https://scikit-learn.org/stable/modules/classes.html#module-sklearn.model_selection)来查找调整模型的最佳参数。

结论:

我们可以使用不同的度量标准来比较不同的模型,并选择最适合我们需求的模型。这些度量标准很重要,但是还有其他考虑因素。通常都有延迟性需求,最低准确度要求,更注重减少假阴性结果,等等。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码