R语言中回归和分类模型选择的性能指标

news2024/11/24 12:51:43

有多种性能指标来描述机器学习模型的质量。但是,问题是,对于问题正确的方法是什么?在这里,我讨论了选择回归模型和分类模型时最重要的性能指标。请注意,此处介绍的性能指标不应用于特征选择,因为它们没有考虑模型的复杂性。

最近我们被客户要求撰写关于性能指标的研究报告,包括一些图形和统计输出。 

回归的绩效衡量

对于基于相同函数集的模型,RMSE和R2 通常用于模型选择。

均方误差

均方误差由比较预测y ^与观察到的结果y所得的残差平方和:

由于MSE是基于残差平方的,因此它取决于结果平方 。因此,MSE的根通常用于报告模型拟合:

均方误差的一个缺点是它不是很容易解释,因为MSE取决于预测任务,因此无法在不同任务之间进行比较。例如,假设一个预测任务与估计卡车的重量有关,而另一项与估计苹果的重量有关。然后,在第一个任务中,好的模型可能具有100 kg的RMSE,而在第二个任务中,好的模型可能具有0.5 kg的RMSE。因此,虽然RMSE可用于模型选择,但很少报告,一般使用R2。

皮尔逊相关系数

由于确定系数可以用皮尔逊相关系数来解释,因此我们将首先介绍该方法。令Y ^ 表示模型估计,而Y表示观察到的结果。然后,相关系数定义为:

其中Cov(⋅,⋅)∈R是协方差,而σ是标准偏差。协方差定义为

其中,μ表示平均值。在离散设置中,可以将其计算为

这意味着,如果预测和结果与平均值的偏差相似,则它们的协方差将为正;如果与平均值具有相对的偏差,则它们之间的协方差将为负。

标准偏差定义为

在离散设置下,可以计算为

请注意,R函数  sd 计算总体标准差,该标准差用于获得无偏估计量。如果分布较宽(均值附近的宽分布),则σ高;如果分布较窄(均值周围的较小分布),则σ小。

关联 :协方差和标准差

为了更好地理解协方差,我们创建了一个绘制测量值与均值偏差的函数:

    means <- c(mean(y), mean(y.hat))
 
    df <- data.frame("N" = c(seq_along(y), seq_along(y)), 
                     "Deviation" = c(y.deviation, y.hat.deviation),

 
    ggplot() + 
        geom_segment(size = 2, data = segment.df, 
                    aes(x = N, xend = N, y = Y, yend = Yend, color = Contribution))  +
        geom_point(data = df, alpha = 0.8, size = 2,

然后,我们生成代表三种协方差的数据:正协方差,负协方差和无协方差:

# 协方差 
df.low <- data.frame(Y = y, Y_Hat = y.hat)
plot(y, y.hat)
 
y.hat <- y - 2 * (y - y.mean) + noise
plot.mean.deviation(y, y.hat)
# 没有协方差
y.hat <- runif(N, -0.1, 0.1)

 

注意离群值(与均值的高偏差)对协方差的影响大于与均值接近的值。此外,请注意,协方差接近0表示变量之间在任何方向上似乎都没有关联(即各个贡献项被抵消了)。

由于协方差取决于数据的散布,因此具有高标准偏差的两个变量之间的绝对协方差通常高于具有低方差的变量之间的绝对协方差。让我们可视化此属性:

 
plot(y, y.hat)

df.high <- data.frame(Y = y, Y_Hat = y.hat)

因此,协方差本身不能得出关于两个变量的相关性的结论。这就是为什么Pearson的相关系数通过两个变量的标准偏差将协方差归一化的原因。由于这将相关性标准化到范围[-1,1] ,因此即使变量具有不同的方差,也可以使相关性具有可比性。值-1表示完全负相关,值1表示完全正相关,而值0表示没有相关。

R2确定系数

确定系数R2 定义为

其中  SSres是平方的残差和,SStot是平方 的总和。对于模型选择,R2等效于RMSE,因为对于基于相同数据的模型,具有最小MSE的模型也将具有最大值   。

可以根据相关系数或根据解释的方差来解释确定系数。

用相关系数解释

R平方通常为正,因为具有截距的模型会产生SSres <SStot的预测Y ^ ,因为模型的预测比平均结果更接近结果。因此,只要存在截距,确定系数就是相关系数的平方:

用解释方差解释

在平方总和分解为残差平方和回归平方和的情况下  ,

然后

这意味着R2 表示模型所解释的方差比。因此,R2 = 0.7的模型将解释70% 的方差,而剩下30% 的方差无法解释。

 确定系数

为了获得有关R2 ,我们定义了以下函数,利用它们可以绘制线性模型的拟合。理想模型将位于曲线的对角线上,并且将残差表示为与该对角线的偏差。


    # 确保该模型被解释为GLM
    pred <- model$fitted.values
  
        plot.df <- data.frame("Prediction" = pred, "Outcome" = obs, 
                                "DataSet" = "training")
 

    if (!is.null(test.preds) && !is.null(test.labels)) {
        #存储预测点
        test.df <- data.frame("Prediction" = test.preds, 
                            "Outcome" = test.labels, "DataSet" = "test")
 
 ggplot() + 
        # 绘制训练样本
        geom_point(data = plot.df, 
            aes(x = Outcome, y = Prediction, color = DataSet)) 

例如,比较以下模型

尽管基于的模型  df.low 具有足够的拟合度(R平方为0.584),  但df.low 不能很好地拟合数据(R平方为0.009)。

R平方的局限性

仅基于R平方盲目选择模型通常不是好方法。首先,R平方不一定能告诉我们一些关于拟合优度的信息。例如,考虑具有指数分布的数据:


plot(x,y)   

让我们为基于这些数据的线性模型计算R 2:

## [1] 0.9

如我们所见,R平方非常高。尽管如此,该模型仍无法很好地拟合,因为它不遵守数据的指数分布。

R2的另一个属性是它取决于值范围。R2通常在X的宽值范围内较大,这是因为协方差的增加是由标准偏差调整的,该标准偏差的缩放速度比1N 项引起的协方差的缩放速度慢。

## [1] "R squared: 0.924115453794893, MSE:0.806898017781999"
## [1] "R squared: 0.0657969487417489, MSE:0.776376454723889"

我们可以看到,即使两个模型的残差平方和相似,第一个模型的R2 也更高。

分类模型的绩效指标

二进制分类的许多性能度量均依赖于混淆矩阵。假设有两个类别,0和1,其中1表示特征的存在(正类),0表示特征的不存在(负类)。相应的混淆矩阵是具有以下结构的2×2表:

预测/参考01个
0TNFN
1个FPTP

其中TN表示真实否定的数量(模型正确预测否定类别),FN表示假否定的数量(模型错误地预测否定类别),FP表示错误肯定的数量(模型错误地预测肯定类别),TP表示真实阳性的数量(模型正确预测阳性类别)。

准确性与敏感性和特异性

基于混淆矩阵,可以计算准确性,敏感性(真阳性率,TPR)和特异性(1-假阳性率,FPR):

准确性表示正确预测的总体比率。准确性指标被认为很差,因为如果类别标签不平衡,它就不合适。例如,假设您要预测稀有肿瘤的存在(1类)与不存在的罕见肿瘤(0类)。让我们假设只有10%的数据点属于肯定类别,而90%的数据属于正面类别。总是预测阴性分类(即未发现肿瘤)的分类器的准确性如何?这将是90%。但是,这可能不是一个非常有用的分类器。因此,灵敏度和特异性通常优于准确性。

敏感性表示正确预测的观察到的阳性结果的比率,而特异性表示与阳性分类相混淆的观察到的阴性结果的比率。这两个数量回答以下问题:

  • 敏感性:如果事件发生,则模型检测到事件的可能性有多大?
  • 特异性:如果没有事件发生,那么该模型识别出没有事件发生的可能性有多大?

我们始终需要同时考虑敏感性和特异性,因为这些指标本身对模型选择没有用。例如,始终预测阳性类别的模型将使灵敏度最大化,而始终预测阴性类别的模型将使特异性最大化。但是,第一个模型的特异性较低,而第二个模型的灵敏度较低。因此,敏感性和特异性可以解释为跷跷板,因为敏感性的增加通常导致特异性的降低,反之亦然。

通过计算平衡精度,可以将灵敏度和特异性合并为一个数量 。

平衡精度是更适合于类别不平衡的问题的度量。

ROC曲线下方的区域

评分分类器是为每个预测分配一个数值的分类器,可用作区分这两个类的临界值。例如,二进制支持向量机将为正类分配大于1的值,为负类分配小于-1的值。对于评分分类器,我们通常希望确定的模型性能不是针对单个临界值而是针对多个临界值。

这就是AUC(ROC曲线下方的区域)出现的位置。此数值表示在几个截止点的灵敏度和特异性之间进行权衡。这是因为接收器工作特性(ROC)曲线只是TPR与FPR的关系图,而AUC是由该曲线定义的面积,在[0,1]范围内。

使用R,我们可以使用ROCR 包来计算AUC  。让我们首先创建一个用于绘制分类器及其AUC得分的函数:


    hist(y.hat[y == 0], col=rgb(1,0,0,0.5), 
    hist(y.hat[y == 1], col = rgb(0,0,1,0.5), add=T, 

第一个示例显示允许完美分离的分类器的AUC为1。不能完全分离的分类器需要牺牲特异性来提高其灵敏度。因此,它们的AUC将小于1。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何保证分布式事务?

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【一心同学】&#xff0c;一位上进心十足的【Java领域博主】&#xff01;&#x1f61c;&#x1f61c;&#x1f61c; ✨【一心同学】的写作风格&#x…

Docker: 容器与镜像

文章目录1、docker 环境搭建1.1、docker 安装1.1.1、centos 安装1.1.2、ubuntu 安装1.2、添加到 docker 组1.3、docker 镜像源2、docker 概念2.1、docker 背景2.2、docker 架构2.3、docker 与 vm3、docker 容器隔离4、docker 命令4.1、环境信息4.2、日志信息4.3、容器命令4.4、…

Mac最先进的API工具-RapidAPI for Mac

一、前言 当使用 Mac 进行接口测试的时候&#xff0c;一般都会想到接口测试工具 Postman、Jmeter。 Postman 以其页面友好&#xff0c;功能简单&#xff0c;可以快速上手进行接口测试。而 Jmeter 除了测接口外&#xff0c;还可以进行接口自动化测试、性能测试等。 本篇将介绍…

完整企业官网源码,前端基于Vue+ElementUI,后台基于基于core3 webapi,含数据库文件,含详情安装部署文档

完整企业官网源码&#xff0c;前端基于VueElementUI&#xff0c;后台基于基于core3 webapi&#xff0c;含数据库文件&#xff0c;含详情安装部署文档 完整代码下载地址&#xff1a;完整企业官网源码 某工程管理有限公司企业官网 前端 新版本改进 整体重构&#xff0c;结构…

利用 Flow Simulation 快速和经济高效地解决传热难题

探寻传热问题的有效解决方案已成为新产品研发过程中一个愈来愈重要的部分。几乎一切事物都会经历某种程度的发热或冷却&#xff0c;而且对于许多产品来说&#xff0c;如现代电子设备、医疗设备和空气调节 (HVAC) 系统&#xff0c;热管理已成为避免过度发热和实现功能正常运行的…

Redis实战——附近商家(GEO的使用)

1. 什么是Geo&#xff1f; GEO就是Geolocation的简写形式&#xff0c;代表地理坐标。Redis在3.2版本中加入了对GEO的支持&#xff0c;允许存储地理坐标信息&#xff0c;帮助我们根据经纬度来检索数据。常见的命令有&#xff1a; GEOADD&#xff1a;添加一个地理空间信息&#…

基于WEB多媒体电子贺卡平台

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 网站前台&#xff1a;关于我们、联系我们、资讯信息、贺卡类型、贺卡信息、贺卡评论 管理员&#xff1a; 1、管理关于我…

[附源码]Python计算机毕业设计Django校园服装租赁系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

毕业设计 单片机墨水屏阅读器(单词卡) - 物联网 嵌入式

文章目录0 前言1 简介2 主要器件3 实现效果4 设计原理部分核心代码5 最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自…

列表类型(sort,reverse,list(),append(),切片)、求中位数,平均数,标准差练习

映射类型和操作 映射类型是“键-值”数据项的组合&#xff0c;每个元素是一个键 值对&#xff0c;即元素是(key, value)&#xff0c;元素之间是无序的。键值对 (key, value)是一种二元关系。在Python中&#xff0c;映射类型主要以字典&#xff08;dict&#xff09;体现。 列表类…

模拟大规模电动车充电行为(Matlab实现)

目录 1 模拟大规模充电汽车充电行为 2 Matlab部分代码实现 3 Matlab代码实现 1 模拟大规模充电汽车充电行为 电动汽车EV(Electric Vehicle)具有清洁环保、高效节能的优点,不仅能缓解化石能源危机,而且能够有效地减少温室气体的排放。2015年10月&#xff0c;国务院发布加快E…

设计模式之策略模式

Strategy design pattern 策略模式的概念、策略模式的结构、策略模式的优缺点、策略模式的使用场景、策略模式的实现示例、策略模式的源码分析 1、策略模式的概念 策略模式&#xff0c;即定义一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#…

Android平台GB28181接入模块技术接入说明

技术背景 今天&#xff0c;我们主要讲讲Android平台GB28181接入模块的技术对接&#xff0c;Android平台GB28181接入模块设计的目的&#xff0c;可实现不具备国标音视频能力的 Android终端&#xff0c;通过平台注册接入到现有的GB/T28181—2016服务&#xff0c;可用于如智能监控…

【Mitigating Voltage Attacks in Multi-Tenant FPGAs 论文笔记】

减轻多租户FPGA中的电压攻击摘要引言内容背景和相关工作INTEL STRATIX 10 FPGA上的PDN攻击Stratix 10 PDN特性定位电压下降片上监控和攻击抑制结论和未来工作结论&#xff1a;未来工作作者&#xff1a;GEORGE PROVELENGIOS, University of Massachusetts Amherst, MA, USADANIE…

Python学习-9.2 程序界面-sys库介绍

可以在Python标准库大全&#xff1a;https://docs.python.org/zh-cn/3/library/index.html中查找sys标准库的解释说明 sys标准库 本章对sys标准库中的重点函数进行讲解&#xff0c;sys库的作用主要是查看python解释器信息及传递信息给python解释器。 sys库的三个重要函数&…

JVM-------栈

栈&#xff1a; 早在数据结构的学习中&#xff0c;我们就知道了栈具有先进先出的特点&#xff0c;而数据结构是程序的一部分&#xff0c;那么栈的特点在java中是如何体现的呢? 比如&#xff1a;main函数先执行而后结束&#xff0c;就是利用了栈的特点。 在java中&#xff0c…

[附源码]计算机毕业设计Node.jsBuff饰品交易平台论文(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

2022需求最大的8种编程语言排名

DevJobsScanner分析了过去14个月&#xff08;从2021 10月到2022年11月&#xff09;超过1200万开发人员的工作需求&#xff0c;并选择了明确需要编程语言的工作机会&#xff0c;获得了2022年最流行的八种编程语言。 市场上需求最高的前八种语言是&#xff1a; 1、 JavaScript/…

Appium基础 — Appium Inspector定位工具(二)

5、Appium Inspector工具的使用 &#xff08;1&#xff09;Inspector 定位控件界面的详细介绍 布局1&#xff1a;截图的手机界面 可以点击选择元素。 布局2&#xff1a;顶部操作栏 从左往右的按钮依次是 Select Element&#xff1a;选择元素。 Swipe By Coordinates&#xff…

json-server

安装node.js https://nodejs.org/zh-cn/download/剩下内容就是next&#xff0c;就默认安装在C盘好了。 WindowR:node -v 下面这种结果代表安装成功 还有 npm -v NPM 是什么 NPM描述 npm&#xff08;“Node 包管理器”&#xff09;是 JavaScript 运行时 Node.js 的默认程序包…