当前位置: 首页 > news >正文

机器学习模型评估指标:R分数与均方误差(MSE)详解

今天将介绍一些对于确定回归模型的准确性和质量至关重要的术语:方差、R²分数和均方误差(MSE)。我们将使用scikit-learn库来阐释这些概念。(本文是scikit-learn指南的一部分。请使用右侧菜单导航。)

回归模型的应用

理解这些指标有助于判断回归模型是准确还是具有误导性。使用回归这种统计技术有助于突出数据中的模式、趋势和关系,从而为预测未来提供见解。你可以看到自变量如何影响因变量以及这些关系的强度。这种洞察未来可能性、理解联系和依赖关系的能力,对于规划各种场景以及评估和应对风险而言是无价的。

多个高风险的行业广泛使用回归模型,包括:

  • 金融
  • 商业分析
  • 工程
  • 医疗保健
  • 科学
  • 体育
  • 计算机科学

为什么R²分数在机器学习中很重要

任何回归模型的价值都取决于其准确性,特别是其解释数据方差的能力。这就是为什么提高R²分数至关重要。

机器学习和人工智能协同工作,以识别正确的变量,微调模型以改进预测,并在复杂、非线性的大规模数据集中捕捉难以识别的关系。人工智能和机器学习改善了模型与数据变化的拟合或解释程度,使其在进行预测时更加准确。它减少了欠拟合(遗漏关键关系)和过拟合(引入无意义的噪音)。它有助于选择恰到好处的变量,避免那些给模型带来偏差或浪费性冗余的变量。目标是建立一个高效的模型,能够产生准确的结果并支持更好的预测。

通过示例可以使这些概念更加生动,便于理解。让我们使用上一篇博客文章中的代码,并添加额外的逻辑。在上篇博客中,我们使自变量y和因变量x相关,以说明如何使用scikit-learn进行线性回归的基础知识。这次,我们将在因变量(y)中引入一些随机性,以便在我们的预测中存在一些误差。

什么是方差?

在线性回归中,方差是衡量观测值与预测值平均值(即,它们与预测值均值的差异)相差多少的指标。目标是获得一个较低的值,通过R²分数(下文解释)来量化。在下面的代码中,方差是 np.var(err),其中 err 是观测值与预测值之差的数组,np.var() 是numpy的数组方差函数。

什么是R²分数?

根据维基百科,R²分数是“…因变量中可由自变量预测的方差比例”。一个数学定义是“(模型解释的总方差)/ 总方差”。因此,如果它是100%,则两个变量完全相关(即,没有方差)。R²分数在0%到100%之间变化。它与MSE(见下文)密切相关,但并不相同。在大多数情况下,较低的值表明相关性水平低,意味着回归模型无效。

阅读下面的代码,我们分三步进行此计算以便于理解。首先,g 是预测值与实际观测值之间差值的平方和:(ytest[i] - preds[i])²。其次,总平方和是使用每个观测值与观测值均值之间的平方差计算的:(ytest[i] - np.mean(ytest))²。然后结果打印如下:

print ("total sum of squares", y)
print ("total sum of residuals ", g)
print ("r2 calculated", 1 - (g / y))

这里的目的是解释原理。当然,我们也可以让scikit-learn使用 r2_score() 方法来完成:

print("R2 score : %.2f" % r2_score(ytest,preds))

什么是均方误差(MSE)?

均方误差(MSE)是误差平方的平均值。数值越大,误差越大。此处的“误差”指的是观测值 y1, y2, y3, … 与预测值 pred(y1), pred(y2), pred(y3), … 之间的差值。我们将每个差值 (pred(yn) - yn)) ** 2 平方,以便正负值不会相互抵消。

如何在Python中计算MSE

以下是计算MSE的完整代码:

import matplotlib.pyplot as plt
from sklearn import linear_model
import numpy as np
from sklearn.metrics import mean_squared_error, r2_scorereg = linear_model.LinearRegression()
ar = np.array([[[1],[2],[3]], [[2.01],[4.03],[6.04]]])
y = ar[1,:]
x = ar[0,:]
reg.fit(x,y)
print('Coefficients: n', reg.coef_)xTest = np.array([[4],[5],[6]])
ytest =  np.array([[9],[8.5],[14]])
preds = reg.predict(xTest)print("R2 score : %.2f" % r2_score(ytest,preds))
print("Mean squared error: %.2f" % mean_squared_error(ytest,preds))er = []
g = 0
for i in range(len(ytest)):print( "actual=", ytest[i], " observed=", preds[i])x = (ytest[i] - preds[i]) **2er.append(x)g = g + xx = 0
for i in range(len(er)):x = x + er[i]print ("MSE", x / len(er))
v = np.var(er)
print ("variance", v)
print ("average of errors ", np.mean(er))m = np.mean(ytest)
print ("average of observed values", m)y = 0
for i in range(len(ytest)):y = y + ((ytest[i] - m) ** 2)print ("total sum of squares", y)
print ("total sum of residuals ", g)
print ("r2 calculated", 1 - (g / y))

结果如下:

Coefficients:
[[2.015]]
R2 score : 0.62
Mean squared error: 2.34
actual= [9.] observed= [8.05666667]
actual= [8.5] observed= [10.07166667]
actual= [14.] observed= [12.08666667]
MSE [2.34028611]
variance 1.2881398892129619
average of errors 2.3402861111111117
average of observed values 10.5
total sum of squares [18.5]
total sum of residuals [7.02085833]
r2 calculated [0.62049414]

通过查看数据 np.array([[[1],[2],[3]], [[2.01],[4.03],[6.04]]]),可以看到每个因变量大致是自变量的两倍。计算出的系数 reg.coef_ 为2.015,证实了这一点。

什么是好的均方误差(MSE)?

MSE没有正确的数值。简单来说,数值越低越好,0表示模型是完美的。由于没有正确答案,MSE的基本价值在于选择一个预测模型而不是另一个。同样,R²应该取多少也没有正确答案。100%意味着完美的相关性。然而,有些模型的R²较低,但仍然是好模型。

综合解读R²和MSE

这里要传达的关键信息是,在评估模型时不能孤立地看待这些指标。还必须查看其他指标,并理解背后的数学原理。我们将在后续的博客文章中深入探讨所有这些内容。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

http://www.gsyq.cn/news/130291.html

相关文章:

  • Excalidraw SOC2认证推进计划
  • 详细介绍:物联网设计技巧
  • 如何涉及一个高质量API接口
  • Open-AutoGLM成本黑洞如何避免?资深架构师亲授4层防护模型
  • 从测试到上线:Open-AutoGLM API兼容性验证全流程(含自动化脚本模板)
  • 揭秘Open-AutoGLM模型报错根源:3步实现错误类型自动归类与预警
  • 【高阶玩法】Open-AutoGLM深度集成信用卡提醒系统的7个秘诀
  • 【Open-AutoGLM流量监控预警实战指南】:掌握企业级网络流量异常检测核心技术
  • 2025年金刚砂地坪生产厂推荐:彩色金刚砂地坪加工厂哪家专业? - 工业推荐榜
  • 手把手教你构建高效调试流程:Open-AutoGLM问题定位黄金法则
  • Open-AutoGLM话费充值自动化(企业级高可用架构设计揭秘)
  • 2025全自动无纺布裁切机制造厂TOP5权威推荐:哪家合作案例多? - myqiye
  • Python实战----拒绝“裸奔”!手把手教你写一个高可用的网站监控告警脚本
  • Excalidraw满意度评分影响因素分析
  • 如何用Open-AutoGLM在5分钟内定位异常流量根源?:一线专家实战经验分享
  • Excalidraw手绘风格背后的用户体验设计哲学
  • 揭秘Open-AutoGLM兼容性测试底层逻辑:掌握这4步,轻松实现无缝集成
  • Excalidraw如何支持Dark Mode暗黑模式显示?
  • 为什么你的系统总在调用Open-AutoGLM时崩溃?(深度剖析接口契约断裂根源)
  • 【降本增效核心策略】:用Open-AutoGLM实现毫秒级费用熔断机制
  • 微观交通流仿真软件:SUMO (Simulation of Urban MObility)_(9).仿真运行与结果分析
  • 基于协同过滤算法的校园食堂订餐系统_38r71ot7--论文-爬虫 可视化
  • 为什么顶尖公司都在用Open-AutoGLM做技术文档治理?真相曝光
  • 还在手动记还款日?Open-AutoGLM自动提醒配置指南来了
  • 还在为多源账单混乱发愁?Open-AutoGLM一键完成跨平台分类与汇总
  • Excalidraw开源项目亮点分析:轻量、美观、易协作
  • Excalidraw客服响应时效改进措施
  • 【AI项目成本管理】:基于Open-AutoGLM的自动化预算告警方案设计
  • 2025年绍兴有名的消防排烟风机品牌选哪家,工业暖风机/卡式风机盘管/新风换气机/消防排烟风机/直膨式空调机组消防排烟风机定制推荐排行 - 品牌推荐师
  • 无需设计基础!Excalidraw让你轻松画出专业图表