一、什么是分类

分类,是数据建模领域的重要分支,你每天也都会接触。

手机垃圾短信过滤,就是分类算法给短信打的标签,比如0代表正常短信,1代表垃圾短信。

1.png

在医学领域,根据影像检查判断肿瘤是良性还是恶性。在工业领域,根据设备工作特征做故障诊断。在材料领域,根据配方快速预测新材料的特性是否符合要求。

前面这些例子大多是二分类,即只有两个标签,更细的还有多分类。

比如电子邮件分为正常邮件、广告邮件、垃圾邮件或钓鱼邮件。贷款风险评估,分类为高风险中风险低风险。工厂的质量控制,分类为一级品、二级品以及废品。

二、分类算法

分类算法的核心逻辑是找到数据中特征与标签之间的映射关系。简单来说,就是找到一个“函数”,根据输入数据的特征,准确地判断数据所属的类别。

2.png

根据算法原理和实现方式,分类算法可以分为线性算法,非线性算法和集成学习算法。这三类算法分别适合不同的建模场景,训练出的模型复杂度一般也越来越高。

针对每一大类,数据建模软件DTEmpower也内置了多种算法。

3.png

比如线性算法里的逻辑回归算法Logistic,它的优点是简单高效计算成本低,且可解释性强,比如你能通过模型看出某个特征的重要性。

但线性算法更适合特征与目标变量之间存在线性关系的场景。所谓线性关系,就是因变量y可以写成y=ax1+bx2+cx3...这种形式。

4.png

非线性分类算法里的比较著名的KNN,K近邻算法。它的优点是原理简单且能处理非线性数据,对异常值不敏感。但缺点就是计算效率低,处理大数据时比较慢,因此也更适合数据量不大且数据集维度不高的情况。

集成学习算法里,RandomForest随机森林算法很有代表性,它最显著的优点是抗过拟合能力强。

所谓过拟合,指的是模型在训练数据上表现非常好,精度很高。但遇到新数据,精度就崩了。

除了抗过拟合,随机森林算法的鲁棒性也很强。如果数据存在异常值,模型也不会有明显的精度下降。

当然凡事都有两面性。随机森林算法的缺点之一就是模型训练过程的计算量大,而且得到的模型是一个黑箱模型。

相比线性模型,黑箱模型的可解释性差多了,你给它输入,它给你输出。这个结果的精度可能很高,但如果我问你它为什么输出这个结果,你很难解释清的。

下面我列出常见分类算法的优缺点以及适用场景,就不逐个介绍了。

5.png

之所以不逐个介绍,第一是我怕你睡着。

第二,即使你知道了每种算法的优缺点,当接触一个新场景或者拿到一组新数据,你也还依然不知道用什么算法。

比如我给你一个数据集,你怎么会知道变量之间是线性还是非线性关系呢?

6.png

实际的算法选择过程,都有一定的尝试成分。从易到难,从简到繁,最终在模型精度和计算量之间做权衡。

在实际操作时,我们推荐逻辑回归和决策树这两个基线算法。它们操作简单,易上手且性能尚可。当你不知道用什么算法时,就可以尝试用基线算法。

7.png

如果基线算法不满足要求,或者你想做更进一步的探索,可以再尝试其它的进阶算法。

比如集成学习算法里的Bagging算法,就可以作为首选的进阶算法。这种算法操作简单,且鲁棒性高,在处理高维度数据时表现不错。

三、分类模型可视化工具

你多次尝试之后,关键的问题来了,如何判断模型的好坏呢?

接下来介绍决策边界、混淆矩阵和ROC 曲线三个可视化工具,它们构成了判断模型精度的“黄金三角”。

第一个,决策边界

假设你有一堆手办,共分为两种,一种会打篮球,一种不会。现在你画一条线,把它们分成了两类。这条线,就是我们今天要讲的决策边界。

8.png

简单来说,决策边界就是分类模型用来区分不同类别数据的“分界线”。

第二个,混淆矩阵。

混淆矩阵其实是一个表格,展示了分类模型预测标签和实际标签之间的关系。

9.png

对于二分类,它就是一个2X2的表格,左上表示实际为正,预测也为正,预测对了,True Positive,简称TP。

右下表示实际为负,预测也为负数,也预测对了,True Negative, 简称TN。

那么另外两个区域,就表示预测错了,一个叫False Negative, FN。另一个叫False Positive, FP。

显然,TP+TN通常越大越好。因此判定模型的好坏,也有一个定量指标叫准确率。另外还有精确率、召回率和F1分数这几个指标,也都比较常用。

10.png

第三个,ROC曲线,全称叫受试者工作特征曲线(Receiver Operating Characteristic Curve)。

ROC曲线所在坐标的横轴叫假阳性率,也就是实际为负,但被预测为正的比例。纵轴是召回率,也就是实际为正,且被预测为正的比例。

11.png

下面说说这个曲线是如何生成的。

分类模型在做预测分类时,你觉得它对预测结果有百分百的信心吗?显然不会。

它实际是通过概率判断的,比如计算发现某个样本属于A类的概率是70%,你如果设置阈值是50%,那么你就可以输出结果判定这个样本属于A类。

当然,如果计算之后发现这个样本属于A类的概率只有40%,那你就能输出结果,判定它不属于A类。

所以,你设定的阈值不同,模型的表现也不同。

OK,下面做三件事。

第一,选择一系列不同的阈值。

第二,对于每一个阈值,计算出当前的假阳性率和召回率。

第三,把这些点连起来,就得到了ROC曲线。

12.png

如果你不做数据建模,而是随机猜测的,也就是分类正确的概率是50%,那么生成的ROC曲线就是从(0,0)到(1,1)的一条直线。

从ROC曲线的定义可知,这个曲线越靠近左上角,表示模型精度越高。所以ROC曲线也有个定量值,叫曲线下面积,简称AUC。显然,曲线下的面积AUC越大,也表示曲线越靠近左上角。

13.png

介绍完三种工具,那么最终如何判断呢?

通常情况下,你看混淆矩阵时,左上角和右下角的数越大越好。看ROC曲线时,曲线上方的面积越小越好。

为什么说通常情况下?因为分类模型好坏的判断,必须要结合业务背景。

举个例子,在地震预测时,我们希望尽可能预测到所有的地震,哪怕这些预测到的地震中只有少数真正发生了,这个时候我们就可以牺牲精确率。宁愿发出100 次警报但只对 10 次,也不希望预测了 10 次,但只有 8 次正确而漏掉2次,因为只要有 1 次地震没预测到都会造成巨大的损失。这是一个 “宁可抓错,不可放过” 的场景。

但另一个场景,垃圾邮件分类,我们虽然希望模型能够找到所有的垃圾邮件,但一旦有一封正常邮件被分到了垃圾信箱里,你肯定很生气。所以这时候宁可漏掉垃圾邮件,也不能把正常邮件分错。这就是一个“宁可放过,不可抓错” 的场景。

14.png

能体会出来吧?在不同的场合,我们在建模时需要根据实际情况,通过查看不同的参数指标来判断分类模型质量。

四、分类建模案例

理论部分讲解差不多了,下面做一个实际的数据建模分类案例。

工程背景是某种新材料的研制,这种材料由很多种配方组成,不同的组成对应不同的材料性能。

工厂经过多年的积累,已经有了大量数据。其中前83列是原材料,后面几列是配方对应的材料性能。而我们关心的是最后一列,耐弯折性。1表示耐弯折性达标,0表示不达标。

15.png

我们数据建模想做的事,是得到一个分类模型。基于这个模型,你输入一种新的配方,让模型判断配方组成的新材料的耐弯折性是否达标,省去做实验测试的过程。

开始操作。启动DTEmpower,新建工程选择专业模式,之后在画布上依次拖入数据读取、变量剔除、空值处理、变量设定、数据分割节点,然后依次连线,表示数据传递。

16.png

数据读取、变量剔除就不解释了,字面意思很简单。

空值处理的作用是删除存在空值的数据行,而数据分割是将数据分为训练集和测试集,默认按照3:1的比例分割。训练集用来训练模型,测试集用来测试模型精度。

再然后,拖入分类算法节点。这里我拖入极端随机树算法,节点配置保持默认。

注意,软件默认是打开交叉验证的,交叉验证是数据建模领域的一个重要概念,也是DTEmpower软件的底层能力。

交叉验证核心思想是:将数据集分成若干份,轮流使用其中一份作为验证集,其余的作为训练集,最后对模型进行多次的训练和评估,以检验模型的泛化能力。当然,打开交叉验证之后,也会增加训练时间。

最后再拖入模型对比节点,模型对比节点能给出分类算法的定量精度值。而计算计算精度值时,基于的数据就是数据分割节点分出来的测试集。

17.png

模型训练结束后,单击得到的分类模型,能看到模型信息,包括决策边界、ROC曲线以及混淆矩阵。

决策边界,能看出来有一条曲线,把界面分成了两部分,能大概展示模型对训练集的拟合程度。

18.png

混淆矩阵,可以看出来实际为0且预测为0的数据有26个。实际为1预测也为1的值有36个。

19.png

ROC曲线,它绘制了两条曲线,分别是0和1的。同时也给出了AUC的值,巧了,都是0.86。这个表现还不错,说明模型具有良好的区分能力。

20.png

这就是我们用随机树算法训练得到的分类模型,你如果感兴趣的话,可以尝试用其它算法试试,看能不能得到精度更高的模型。

欢迎前往天洑官网下载软件,免费试用30天,即下即用。

21.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/88503.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88503.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/88503.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数组题解——二分查找【LeetCode】

704. 二分查找 算法逻辑分析 初始化边界 left 设为0&#xff0c;right 设为len(nums)&#xff0c;表示左闭右开区间 [left, right)。这意味着搜索区间包含下标left&#xff0c;但不包含下标right。 循环条件 while left < right:&#xff0c;只要left小于right&#xff0c…

Function AI 工作流发布:以 AI 重塑企业流程自动化

作者&#xff1a;寒斜 在 AI 技术飞速发展的今天&#xff0c;企业的流程自动化方式也正在发生深刻变革。过去&#xff0c;流程自动化往往依赖于人工配置和固定规则&#xff0c;难以适应复杂、多变的业务场景。而如今&#xff0c;随着 LLM&#xff0c;Agent&#xff0c;MCP 等节…

【单元测试】单元测试的定义和作用

介绍 ‌单元测试不仅是对函数进行测试&#xff0c;还包括对类、组件等最小可测试单元的测试‌。单元测试是对软件中的最小可测试单元进行验证的过程&#xff0c;这些单元可以是函数、方法、类或组件等。单元测试的主要目的是确保这些最小单元在隔离的环境中能够正确地实现其功…

AI 辅助生成 Mermaid 流程图

文章目录 背景Mermaid使用 AI 编写 Mermaid应用 背景 在 markdown 文档中虽然可以插入图片&#xff0c;但是也需要管理图片&#xff0c;一旦图片位置变了&#xff0c;文档中的图片就无法显示。图片占用空间较大&#xff0c;对于在线文档&#xff0c;为了加载速度&#xff0c;能…

定位坐标系深度研究报告

一、引言 定位坐标系是用于描述地理位置的数学工具&#xff0c;其发展与人类对地球形状的认知和技术需求密切相关。早期的定位依赖于天文观测&#xff08;如经纬度&#xff09;&#xff0c;现代则结合卫星技术&#xff08;如GPS&#xff09;和数学投影方法&#xff08;如墨卡托…

数字孪生技术引领UI前端设计潮流:沉浸式体验的新篇章

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 当虚拟世界与物理现实的边界逐渐模糊&#xff0c;数字孪生技术正以燎原之势重构 UI 前端设计的…

VR油库虚拟仿真系统:开启智慧油库新时代

在科技快速发展的当下&#xff0c;VR 技术在多行业广泛应用&#xff0c;以沉浸式等特点重塑行业模式。油库作为石油储存与转运关键枢纽&#xff0c;传统运营管理依赖人工经验和常规设备&#xff0c;存在安全风险高、培训成本大等问题。在此背景下&#xff0c;油库引入 VR 虚拟仿…

Oracle获取前100条记录

在Oracle数据库中&#xff0c;获取前100条记录可以通过多种方式实现&#xff0c;最常见的方法是使用ROWNUM或者在较新版本的Oracle中使用FETCH FIRST子句。以下是几种常见的方法&#xff1a; 方法1&#xff1a;使用ROWNUM ROWNUM是Oracle特有的一个伪列&#xff0c;用于为结果…

【开源库 | libpng】使用 libpng 读写 png 文件详细教程(附带源码)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

Nuttx之nxsched_add_readytorun(non-SMP)

声明&#xff1a;此处代码分析&#xff0c;来源与 nuttx 12.8.0版本。 在分析之前&#xff0c;需要一图镇楼。 /***************************************************************************** Name: nxsched_add_readytorun** Description:* This function adds a TCB …

Nuttx之nxsched_add_blocked

声明&#xff1a;此处代码分析&#xff0c;来源与 nuttx 12.8.0版本。 在分析之前&#xff0c;需要一图镇楼。 /***************************************************************************** Name: nxsched_add_blocked** Description:* This function adds a TCB to o…

python 包含虚拟环境venv项目的移动

python 包含虚拟环境venv项目的移动 在ubuntu环境下&#xff0c;移动一个包含venv虚拟环境的项目后&#xff0c;在执行时会报错: 错误1&#xff1a; Traceback (most recent call last):File "app.py", line 2, in <module>from flask import Flask, request…

WPF中实现TreeView的SelectedItem双向绑定到ViewModel

WPF中实现TreeView的SelectedItem双向绑定到ViewModel WPF中实现TreeView的SelectedItem双向绑定到ViewModel问题背景解决方案一&#xff1a;附加行为&#xff08;推荐&#xff09;实现步骤优点 解决方案二&#xff1a;通过IsSelected属性绑定实现步骤注意事项 两种方案对比补充…

类型转换运算符重载

C 类型转换函数详解 类型转换函数是C中用于实现类类型与其他类型之间相互转换的特殊成员函数&#xff0c;分为两种主要形式&#xff1a;转换构造函数和类型转换运算符。 1. 转换构造函数 (Conversion Constructor) 基本概念 转换构造函数是一种特殊的构造函数&#xff0c;它…

ES10(ES2019)新特性整理

一、Array.prototype.flat() 和 flatMap()&#xff08;数组扁平化&#xff09; &#xff08;1&#xff09;flat(depth) 将嵌套数组“拉平”到指定深度&#xff08;默认 depth1&#xff09;。 const arr [1, [2, [3]]]; arr.flat(); // [1, 2, [3]]&#xff08;默认深度 …

基于 LCD1602 的超声波测距仪设计与实现:从原理到应用

具体材料可在主页资源里下载 超声波测距技术作为非接触式测量的重要手段&#xff0c;在工业检测、智能家居、机器人避障等领域有着广泛应用。本文将详细介绍一款基于 STC89C51 单片机与 LCD1602 显示屏的超声波测距系统&#xff0c;从硬件架构到软件实现&#xff0c;完整呈现一…

2.5G/5G/10G自协商An

IEEE 802.3 协议中&#xff0c;**2.5GBASE-T、5GBASE-T 和 10GBASE-T** 的链路自协商&#xff08;auto-negotiation&#xff0c;简称 AN&#xff09;是在物理层&#xff08;PHY&#xff09;完成的。它的作用是&#xff1a; * **让连接双方&#xff08;主机和对端&#xff09;自…

闲庭信步使用SV搭建图像测试平台:第五课——使用task

&#xff08;本系列只需要modelsim即可完成数字图像的处理&#xff0c;每个工程都搭建了全自动化的仿真环境&#xff0c;只需要双击top_tb.bat文件就可以完成整个的仿真&#xff0c;大大降低了初学者的门槛&#xff01;&#xff01;&#xff01;&#xff01;如需要该系列的工程…

Android数据库GreenDao的使用

简介 GreenDao 是一个轻量级的对象关系映射&#xff08;ORM&#xff09;库&#xff0c;用于简化 Android 应用中的数据库操作。它提供了以下主要功能&#xff1a; 简化数据库操作&#xff1a;通过注解定义实体类&#xff0c;GreenDao 自动生成 DAO&#xff08;数据访问对象&a…

24小时留言板

title: 24小时留言板 date: 2025-06-25 23:32:53 tags: 代码工具 24小时留言板 核心效果如图所示 代码解析 # TodoController 代码解析## 整体架构 这是一个基于Spring WebFlux的响应式控制器&#xff0c;结合Redis发布\订阅机制实现实时更新的待办事项系统。关键组件包括&a…