机器学习——支持向量机(SVM)(2)

目录

一、SVC理解进阶

1. C(硬间隔与软间隔)

2. class_weight

二、模型评估指标(SVC)

1. 混淆矩阵 (Confusion Matrix)

(1)准确率 —— 模型整体效果

(2)精确度 —— 捕捉少数类

(3)召回率(Recall)—— 捕捉少数类

(4)F1 score—— 捕捉少数类

(5)假负率

(6)特异度 —— 判错多数类的考量

(7)假正率(FPR)—— 判错多数类的考量

三、sklearn中的混淆矩阵

四、ROC曲线和AUC面积

1. 曲线理解

2. sklearn 实现


一、SVC理解进阶

1. C(硬间隔与软间隔)

        有一些数据,可能是 线性可分,但 在 线性可分状况下 训练准确率 不能达到 100%,即 无法让训练误差为 0,这样的数据被称为 “存在软间隔的数据” 。此时 需要 让决策边界能够 忍受一小部分训练误差,就 不能单纯地寻 求最大边际了。

        虚线超平面是 由 混杂在红色点中间的 紫色点来决定的,所以 此时,这个 紫色点就是 支持向量。所以 软间隔 让决定 两条虚线超平面的 支持向量 可能是 来自于同一个类别的 样本点,而 硬间隔的时候 两条虚线超平面 必须是由 来自两个不同类别的 支持向量决定的

        c 值会决定我们 究竟是 依赖红色点 作为支持向量(只追求最大边界),还是要 依赖软间隔中,混杂 在红色点中的 紫色点来 作为支持向量(追求最大边界和判断正确的平衡)。

        如果 C 值 设定比较大,那 SVC 可能会选择 边际较小的,能够 更好地分类 所有训练点的 决策边界,不过 模型的训练时间 也会更长。如果 C 的 设定值 较小,那 SVC 会尽量 最大化边界,尽量 将掉落在决策边界 另一方的样本点 预测正确,决策 功能会更简单,但 代价是训练的 准确度,因为此时会 有更多红色的点被 分类错误。换句话说,C 在 SVM中的影响就像 正则化参数对逻辑回归的 影响。

2. class_weight

        对于分类问题,永远都逃不过的一个 痛点就是 样本不均衡问题。样本不均衡 是 指在一组数据集中,标签的 一类天生占有 很大的比例,但 我们有着 捕捉出 某种特定的分类的 需求的状况

        样本不均衡的情况下,分类模型 天生会倾向于 多数的类,让多数类 更容易被判断正确,少数类 被牺牲掉。因为 对于模型而言,样本量 越大的标签 可以学习的 信息越多,算法 就会 更加依赖于从多数类中 学到的信息来 进行判断。如果 希望捕获少数类,模型 就会失败。

        其次,模型评估指标 会失去意义。这种分类状况下,即便 模型 什么也不做,把 所有标签 都判断为 多数类,准确率 也能非常高,这使得 模型评估指标 accuracy 变得毫无意义,根本 无法达到 特定分类的 建模目的。

        支持向量机中地决策仅仅 受决策边界的影响,而 决策边界 又受到 参数 C 和 支持向量的 影响。在支持向量机中,要 大力依赖 调节样本均衡的参数:SVC 类中的 class_weight 和 接口 fit 中可以设定的 sample_weight

二、模型评估指标(SVC)

        单纯地追求 捕捉出少数类,就会 成本太高,而不顾及少数类,又会无法达成 模型的效果。所以在现实中,往往 在寻找捕获少数类的能力 和 将多数类判错后需要 付出的成本的 平衡。如果一个 模型在 能够尽量捕获 少数类的情况 下,还 能够尽量 对多数类 判断正确,则 这个模型 就非常优秀了。为了 评估这样的 能力,将 引入新的 模型评估指标:混淆矩阵和ROC曲线

1. 混淆矩阵 (Confusion Matrix)

        混淆矩阵是 二分类问题的 多维衡量指标 体系,在 样本不平衡时 极其有用。在 混淆矩阵中,将 少数类认为 是正例,多数类认为 是负例。在 SVM 里,少数类 为 1,多数类为 -1。普通的混淆矩阵,一般使用{0,1}来表示。

        混淆矩阵中,永远是真实值 在前,预测值 在后。11 和 00 的 对角线就是 全部预测正确的, 01 和 10 的对角线 就是全部 预测错误的。基于 混淆短阵,有 六个不同的模型评估指标,这些 评估指标的 范围都在 [0, 1] 之间,所有以 11 和 00 为分子的指标 都是越接近 1 越好,所有以 01 和 10 为 分子的 指标都是 越接近 0 越好

        对于所有的指标,用 橙色表示分母,用 绿色表示 分子,则有:

(1)准确率——模型整体效果

        准确率 Accuracy 就是 所有 预测 正确的 所有样本 除以总样本,通常来说 越接近 1 越好。

(2)精确度——捕捉少数类

        精确度 Precision,又叫 查准率,表示 所有 被预测为是 少数类的 样本中,真正的 少数类所占的 比例。精确度是 “ 将多数类判错后所需付出成本 〞的衡量。

        在支持向量机中,精确度 可以 被形象地表示为 决策边界 上方的所有点 中,红色点 所占的 比例。精确度越高,代表捕捉正确的红色点越多,对 少数类的预测 越精确。精确度 越低,则 代表我们 误伤了过多的多数类。

        当每一次将 多数类判断错误的 成本非常 高昂的时候,我们会 追求高精确度。精确度 越低,对多数类的 判断就会 越错误。当然,如果 目标是 不计一切代价 捕获少数类,那并不在意 精确度。

(3)召回率(Recall)——捕捉少数类

        召回率 Recall,又被称为 敏感度(sensitivity),真正率,查全率。表示 所有真实为 1 的样本中,被 预测正确的样本 所占的比例。

        在支持向量机中,召回率 可以被表示为 决策边界上方的 所有红色点 占全部样本中 的 红色点的比例。召回率 越高,代表 尽量捕捉出 了越多的 少数类,召回率 越低,代表我们 没有捕捉出足够的少数类。

        召回率 和 精确度是 此消彼长的,两者之间的 平衡代表了 捕捉少数类的 需求 和 尽量 不要误伤多数类的 需求的 平衡。如果 希望 不计一切 代价 找出少数类,那就会 追求 高召回率,相反如果 目标 不是尽量 捕获少数类,那就 不需要在意 召回率。

(4)F1 score——捕捉少数类

        同时 兼顾 精确度 和 召回率两者的 调和平均数 作为 考量两者 平衡的综合性指标,称之为 F1 measure。两个数之间的 调和平均倾向于 靠近两个数中 比较小的那一个数,因此 追求尽量高的F1 measure,能够 保证 精确度 和 召回率 都比较高。F1 measure在 [0 ,1] 之间分布,越接近 1 越好。

(5)假负率

        假负率(False Negative Rate),它等于 1 - Recall,用于 衡量 所有真实为 1 的样本中,被错误 判断为 0 的。通常用得不多。

(6)特异度——判错多数类的考量

​​​​​​​

        特异度(Specificity)表示 所有真实为 0 的样本 中,被 正确预测为 0 的样本 所占的比例。在支持向量机中,可以 形象地表示为 决策边界下方的 点占所 有紫色点的 比例。特异度 衡量了一个模型将多数 类判断正确的 能力。

(7)假正率(FPR)——判错多数类的考量

​​​​​​​

        1-specificity 是一个 模型将多数类 判断错误的能力,这种 能力被叫做 假正率 (False Positive Rate)。

        在支持向量机中,假正率 就是决策边界上方的 紫色点(所有被判断错误的多数类)占所有紫色点的比例。当样本均 衡过后,假正率 会 更高,因为 有更多紫色点被判断错误,而 样本均衡 之前,假正率 比较低,被 判错的紫色点 比较少。所以 假正率其实类似于 Precision的 反向指标,Precision 衡量 有多少少数点 被判断正确,而假正率 FPR 衡量有多少多数 点 被判断错误,性质 是十分类似的。

三、sklearn中的混淆矩阵

四、ROC曲线和AUC面积

1. 曲线理解

        建立 ROC 曲线的 根本目的是 找寻 Recall 和 FPR 之间的 平衡,让我们 能够衡量模型 在尽量捕捉少数类的 时候,误伤 多数类的情况 会如何变化。横坐标是 FPR,代表着 模型将多数类判断错误的 能力,纵坐标 Recall,代表着模型捕捉少数类的 能力,所以 ROC 曲线 代表着,随着Recall 的 不断增加,FPR 如何增加。

        我们希望随着 Recall 的不断提升,FPR 增加得 越慢越好,这说明我们 可以尽量 高效地捕捉出少数类,而不会 将很多地 多数类 判断错误。所以,我们 希望看到的 图像是,纵坐标急速上升,横坐标 缓慢增长,也就是 在整个图像 左上方的 一条弧线。这代表 模型的 效果很不错,拥有较好的 捕获少数类的能力。

        中间的 虚线代表着,当 recall 增加 1%,我们的 FPR 也增加 1%,也就是说,每 捕捉出 一个少数 类,就会 有一个 多数类 被判错,这种情况下,模型的效果就不好,这种 模型捕获 少数类的结果,会让许多多数类 被误伤,从而增加成本。

        ROC曲线通常都是 凸型的。对于一条凸型 ROC 曲线来说,曲线 越靠近 左上角越好,越往下越糟糕,曲线如果 在虚线的下方,则证明模型完全无法使用。对于一条 凹型 ROC 曲线来说,应该越 靠近 右下角越好,凹形曲线 代表模型的 预测结果 与 真实情况 完全相反,那也 不算 非常糟糕,只要 手动将模型的 结果逆转,就 可以得到 一条左上方的 弧线了。最 糟糕的就是,无论 曲线是 凹形 还是 凸型,曲线 位于图像 中间,和虚线 非常靠近,那我们 拿它无能为力。

2. sklearn 实现

# 计算ROC曲线的横坐标假正率FPR、纵坐标Recall和对应的阈值的类:
sklearn.metrics.roc_curve(y_true, y_score, pos_label=None, sample_weight=None, drop_ intermediate= True)"""y_true:数组,形状=[n_samples],真实标签。y_score:数组,形状=[n_samples],置信度分数,可以是正类样本的概率值,或置信度分数,或者decision_function返回的距离。pos_label:整数或者字符串,默认None,表示被认为是正类样本的类别。sample_weight:形如 [n_samples]的类数组结构,可不填,表示样本的权重。drop_intermediate:布尔值,默认True,如果设置为True,表示会舍弃一些。ROC曲线上不显示的阈值点,这对于计算一个比较轻量的ROC曲线来说非常有用。return:FPR,Recall、阈值。
"""
# 计算AUC面积:
sklearn.metrics.roc_auc_score(y_true, y_score, average=‘macro’, sample_weight=None, max_fpr=None)

补充:利用 ROC 曲线找出最佳阈值

        ROC 曲线 反应的是 recall 增加的时候 FPR 如何变化,也就是 当模型捕获 少数类的 能力变强的 时候,会误 伤多数类的情况 是否严重。我们的 希望模型 在捕获 少数类的 能力变强的 时候,尽量 不误伤多数类,也就是说,随着 recall 的变大,FPR 的大小 越小 越好。所以 我们希望 找到的 阈值点,其实是 Recall 和 FPR 差距 最大的点。这个点,又叫做 约登指数。其实这个点就是图像上离左上角最近的点,离 中间虚线 最远的点,也是ROC曲线的转折点。

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

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

相关文章

Spring AI 更新:支持OpenAI的结构化输出,增强对JSON响应的支持

就在昨晚,Spring AI发了个比较重要的更新。 由于最近OpenAI推出了结构化输出的功能,可确保 AI 生成的响应严格遵守预定义的 JSON 模式。此功能显着提高了人工智能生成内容在现实应用中的可靠性和可用性。Spring AI 紧随其后,现在也可以对Open…

STM32CubleMX创建FreeRtos工程教程,图文教程

前言:STM32CubeMX 是一个开发工具,它已经将 FreeRTOS 这个实时操作系统(RTOS)集成到其工具中。换句话说,通过 STM32CubeMX,可以非常方便地为 STM32 微控制器生成配置代码,其中包括对 FreeRTOS 的…

jdbc操作数据库MySQL

mysql创建class表 往数据库中使用代码插入一条数据 step1.创建DataSource DataSource dataSource new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java109?characterEncodingutf8&usessLfalse");((MysqlDataSour…

2024十大网站设计公司推荐TOP10

一个精心设计的网站对于企业来说不仅是品牌形象的延伸,也是吸引客户、提升业务的关键工具。 而选择一家专业的网站设计公司,不仅可以帮助企业在激烈的市场竞争中脱颖而出,还能收获更多的客流量,以下是我们精选的十大网站设计公司…

LVS负载均衡+集群+三种工作模式+调度算法及实战案例

一、LVS 1.1简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩主导开发的开源负载均衡项目,目前,LVS已经被集成到Linux内核模块中。该项目实现了在基于IP的数据基础上,请求负载均衡调度方案&a…

git推送错误-->远程分支比本地的分支更新,无法直接推送

每次上传本地修改好的代码的时候,十次有八次都会出现这样的问题!!(暴躁!!!) 现在写个帖子记录一下,这个问题目前我还没有解决,欢迎懂的佬指点一下. 情景: 我在本地仓库做了一些代码的修改,准备上传到远程仓库上,下边是上传步骤: git add . # 将所有的修改都提交到缓冲区git …

工作随记:oracle中偶发遇到存储过程编辑,删除等卡死问题

文章目录 一、查询session是否占用二、通过对象名称定位对应SID三、通过对应的SID查询session信息四、kill掉session 最近有几个客户也询问过:我的存储过程怎么编译、调试有时候就卡死不动了,而且还没办法删除,本次又碰到实际情况&#xff0c…

sql及rce漏洞整理

sql及rce漏洞复现 一&#xff0c;mysql小特性解决大问题 <?php $mysqli new mysqli("localhost", "root", "root", "cat"); ​ /* check connection */ if ($mysqli->connect_errno) {printf("Connect failed: %s\n&qu…

前端面试题整合

一、HTML篇 1、简述一下你对HTML语义化的理解&#xff1f; 用正确的标签做正确的事情&#xff1b; HTML语义化让页面内容结构清晰&#xff0c;便于浏览器、搜索引擎解析&#xff1b; 搜索引擎的爬虫依赖HTML标记来确定上下文和关键字的权重&#xff0c;利于SEO&#xff1b; 便于…

JavaScript - 数组对象中实用好玩的reduce方法

JavaScript中reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行)&#xff0c;将其结果汇总为单个返回值。 语法&#xff1a; arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue]) 参数配置&#xff1a; 参数名描述cal…

渗透学习之漏洞复现

漏洞 贷齐乐的漏洞复现RCE 贷齐乐的漏洞复现 <?php header("Content-type: text/html; charsetutf-8"); require db.inc.php;function dhtmlspecialchars($string) {if (is_array($string)) {foreach ($string as $key > $val) {$string[$key] dhtmlspecial…

【Oracle点滴积累】解决ORA-20001: Latest xml inventory is not loaded into table故障的方法

广告位招租&#xff01; 知识无价&#xff0c;人有情&#xff0c;无偿分享知识&#xff0c;希望本条信息对你有用&#xff01; 今天和大家分享在安装Oracle Critical Patch Update (Patch Number:33806138) 遇到ORA-20001: Latest xml inventory is not loaded into table故障…

广东盈致MES系统——注塑和冲压行业的智能化管理

广东注塑冲压行业MES制造执行系统是一种专门为注塑和冲压行业设计的生产管理系统&#xff0c;可以帮助企业实现生产过程的智能化管理和优化。盈致MES系统是一种常见的MES系统&#xff0c;具有以下特点和功能&#xff1a; 生产计划和调度&#xff1a;MES系统可以帮助企业进行生产…

SpringCloud网关

1.网关的作用 2.网关入门 2.1引入依赖 <dependencies><dependency><groupId>com.heima</groupId><artifactId>hm-common</artifactId><version>1.0.0</version></dependency><!--网关--><dependency><g…

SAP通过函数TR_RELEASE_REQUEST释放指定请求

一&#xff1a;不通过SE09/10释放请求号 *&---------------------------------------------------------------------* *& Report Z_TRANSPORT_REQUEST *&---------------------------------------------------------------------* *& *&----------------…

AI与人类智慧的共舞:程序员在人工智能时代的新角色

文章目录 每日一句正能量前言AI辅助编程对程序员工作的影响提高编码效率改善代码质量促进学习与成长改变工作流程潜在风险与挑战技术伦理与责任应对策略结论 程序员应重点发展的核心能力复杂系统设计能力跨学科知识整合能力与AI协作的能力创新和解决问题的能力技术领导力和团队…

ctfshow-web入门-sql注入(web206-web210)系统练习sqlmap之tamper的使用与编写

目录 1、web206 2、web207 3、web208 4、web209 5、web210 1、web206 sql需要闭合 测了一下还是会先请求 /api/getToken.php 查询语句里新增了括号&#xff0c;我们注入也需要将其闭合掉&#xff0c;就像我们闭合单引号那样&#xff0c;对于 sqlmap 它会自动对闭合点进行…

HttpSession常用方法

1.HttpSession常用方法 是在Java Servlet中用来管理会话状态的重要接口&#xff0c;它提供了一种在多个请求或页面之间存储用户特定信息的方式。以下是一些 HttpSession 常用的方法和用法&#xff1a; 获取会话对象&#xff1a; HttpSession session request.getSession();…

三十八、大数据技术之Kafka3.x(1)

&#x1f33b;&#x1f33b; 目录 一、Kafka 概述1.1 定义1.2 消息队列1.2.1 消息队列内部实现原理1.2.2 传统消息队列的应用场景1.2.3 消息队列的两种模式 1.3 Kafka 基础架构 二、 Kafka 快速入门2.1 安装前的准备2.2 安装部署2.2.1 集群规划2.2.2 单节点或集群部署2.2.3 集群…

浙大数据结构慕课课后题(04-树5 Root of AVL Tree)

题目要求&#xff1a; AVL 树是一种自平衡的二叉搜索树。在 AVL 树中&#xff0c;任何节点的两个子子树的高度最多相差一;如果在任何时候它们相差不止一&#xff0c;则进行重新平衡以恢复此属性。图 1-4 说明了旋转规则。 图1 图2 图3 图4 现在给定一系列插入&#xff0c;您应该…