深入理解线性回归模型的评估与优化方法

news2025/1/16 3:02:48

文章目录

  • 🍀引言
  • 🍀模型评估方法
  • 🍀均方误差(MSE)
  • 🍀均方根误差(RMSE)
  • 🍀绝对平均误差(MAE)
  • 🍀模型优化策略
    • 🍀特征工程
    • 🍀正则化
    • 🍀数据标准化
  • 🍀代码演示
  • 🍀疑问?

🍀引言

线性回归是机器学习领域中最基础的模型之一,它在许多实际问题中都具有广泛的应用。然而,在使用线性回归模型时,仅仅构建模型是不够的,还需要对模型进行评估和优化,以确保其在实际应用中表现出色。本篇博客将深入探讨线性回归模型的评估与优化方法,同时使用Python进行实际演示。


🍀模型评估方法

模型评估是了解模型性能的关键步骤,它帮助我们了解模型在新数据上的表现。在线性回归中,常用的评估指标包括均方误差(Mean Squared Error,MSE)、均方根误差(Root Mean Squared Error,RMSE)等。

本文主要介绍三种评估方法,除此之外介绍一些其他的概念,最后上代码


🍀均方误差(MSE)

均方误差是预测值与真实值之间差异的平方的平均值。数学公式如下:

M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2

其中, n n n 是样本数量, y i y_i yi 是真实值, y ^ i \hat{y}_i y^i 是模型预测值。


🍀均方根误差(RMSE)

均方根误差是均方误差的平方根,它具有与原始数据相同的单位。计算公式如下:

R M S E = M S E RMSE = \sqrt{MSE} RMSE=MSE

🍀绝对平均误差(MAE)

M A E = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1i=1nyiy^i

其中, n n n 是样本数量, y i y_i yi 是真实值, y ^ i \hat{y}_i y^i 是模型预测值。

相比于MSE,MAE对异常值更加稳健,因为它使用了绝对值。在某些应用场景中,更关注预测值与真实值的绝对差异可能更为合适。

本文主要介绍以上三个评估方法,读者若感兴趣还可以自行查阅

🍀模型优化策略

线性回归模型的性能可能因为多种原因而不佳,因此优化策略变得至关重要。以下是一些常见的优化策略:

🍀特征工程

特征工程是提高模型性能的关键步骤。通过添加、删除、组合特征,以及进行数据转换,我们可以为模型提供更多有用的信息。例如,在房价预测问题中,除了房屋面积,考虑到房间数量、地理位置等特征可能会提升模型表现。

🍀正则化

正则化是防止模型过拟合的一种方法。岭回归(Ridge Regression)和Lasso回归(Lasso Regression)是常用的正则化技术,它们通过对模型参数的大小进行惩罚来控制模型的复杂度。

🍀数据标准化

将特征数据进行标准化可以确保不同特征的尺度一致,有助于模型的训练过程。标准化可以消除特征之间的量纲影响,提高模型的稳定性和收敛速度。

🍀代码演示

from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt

x = np.array([1,2,3,4,5])
y = np.array([1,3,2,3,5])

lin_reg = LinearRegression()
lin_reg.fit(x.reshape(-1,1),y)
lin_reg.score(x.reshape(-1,1),y)

运行结果如下
在这里插入图片描述

# 均方误差
def MSE(y_true,y_predict):
    return np.sum((y_true-y_predict)**2)/len(y_true)

运行结果如下
在这里插入图片描述

# 均根方误差
from math import sqrt
def RMSE(y_true,y_predict):
    return sqrt(np.sum((y_true-y_predict)**2)/len(y_true))

运行结果如下
在这里插入图片描述

# 绝对平均误差
def MAE(y_true,y_predict):
    return np.sum(np.absolute(y_true-y_predict))/len(y_true)

运行结果如下
在这里插入图片描述

🍀疑问?

这时会有小伙伴产生疑问,评估数值越大越好还是越小越好呢?

对于大部分模型评估指标来说,确实是越大越好,因为这意味着模型在预测上更准确、更接近真实值。然而,要根据具体的评估指标和任务类型来判断。

  • 均方误差(MSE) 和 均方根误差(RMSE):对于这两个指标,数值越小越好,因为它们衡量了模型预测值与真实值之间的差异,越小表示模型的预测越接近真实值。

  • 绝对平均误差(MAE):同样地,MAE数值越小越好,因为它衡量了平均绝对差异,即预测值与真实值之间的绝对距离。

  • 决定系数(R-squared):在决定系数中,数值越接近1越好,因为它表示模型对因变量变化的解释能力,越接近1表示模型能够更好地解释数据的变化。

总体而言,当我们评估模型时,我们通常希望评估指标的数值越小越好(如MSE、RMSE、MAE),或者越大越好(如R-squared)。然而,在某些情况下,具体的任务和问题背景可能会影响哪个方向更适合。例如,如果我们更关注异常值,可能会更倾向于使用MAE,因为它不会受到异常值的影响。在选择评估指标时,务必要结合问题的实际情况来进行判断。

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

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

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

相关文章

百度开源2019新型冠状病毒RNA预测算法

为应对2019年新型冠状病毒(2019-nCoV)爆发,中国科技巨头百度开源了其RNA(核糖核酸)预测算法LinearFold。该工具可以显著加快病毒RNA二级结构的预测时间,为一线研究人员提供在危机时期更好地了解病毒和开发靶…

多线程学习之多线程的三种实现方式及应用

一、继承Thread类 1.1方法 方法名说明void run()在线程开启后,此方法将被调用执行void start()使此线程开始执行,Java虚拟机会调用run方法() run()方法和start()方法的区别: run():封装线程执行的代码,直接调用&am…

PDF如何转ppt?PDF转ppt的方法

PDF是一种广泛应用于文档传输和存储的格式,然而,在某些情况下,我们可能需要将PDF文件转换为PPT,以便更加灵活地编辑和展示内容。那么,PDF如何转ppt呢?在本文中,我们将介绍几种常用的方法和工具&#xff0c…

智慧编织非遗篇章,AI激活文化精髓的未来!

引言:非遗,指一系列与人类活动、传统技艺、知识体系和社会实践有关的非物质文化元素。它是一个民族难以估量的瑰宝,在中国悠久的历史中,古代先民在劳动生活中创造了大量非物质文化遗产,例如陶瓷的烧制、刺绣、织布技艺…

大隐隐于市,分享5个不为人知的小众软件

​ 电脑上的各类软件有很多,除了那些常见的大众化软件,还有很多不为人知的小众软件,专注于实用功能,简洁干净、功能强悍。今天分享5个实用的软件,简单实用,效果拉满,堪称工作生活必备&#xff0…

Modbus通信协议详解

Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集…

Google代码风格

下面的网站收录了Google的代码风格,有时间看看。 Google Style Guides 写代码要不断思考,多看多写呀!

获取一个月有多少天

实现方式: 已知月份,得到这个月的第一天和最后一天作为查询条件查范围内的数据 new Date(year, month, date, hrs, min, sec),new Date 可以接受这些参数创建一个时间对象 其中当我们把 date 设置为 0 的时候,可以直接通过 getD…

力扣:74. 搜索二维矩阵(Python3)

题目: 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返…

瞬态电压抑制器(TVS)汽车级 SZESD9B5.0ST5G 工作原理、特性参数、封装形式

什么是汽车级TVS二极管? TVS二极管是一种用于保护电子电路的电子元件。它主要用于电路中的过电压保护,防止电压过高而损坏其他部件。TVS二极管通常被称为“汽车级”是因为它们能够满足汽车电子系统的特殊要求。 在汽车电子系统中,由于车辆启…

windows查看本机host地址

windows查看本机host地址 %windir%\system32\drivers\etc

SemrushBot蜘蛛爬虫屏蔽方式

查看访问日志时候发现有SemrushBot爬虫 屏蔽方法: 使用robots.txt文件是一种标准的协议,用于告诉搜索引擎哪些页面可以和不能被爬取,如想禁止Googlebot爬取整个网站的话,可以在该文件中添加以下内容: User-agent: Googlebot Disallow: / 对于遵循robots协议的蜘蛛…

人工智能项目集合推荐(数据集 模型训练 C++和Android部署)

人工智能项目集合推荐(数据集 模型训练 C和Android部署) 目录 人工智能项目集合推荐(数据集 模型训练 C和Android部署) 1.三维重建项目集合 ★双目三维重建 ★结构光三维重建 2.AI CV项目集合 ★人脸检测和人体检测 ★人体姿态估计(人体关键点检测) ★头部朝向估计 …

搭建CFimagehost私人图床,实现公网远程访问的详细指南

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测…

优维产品最佳实践第5期:什么是持续集成?

谈到到DevOps,持续交付流水线是绕不开的一个话题,相对于其他实践,通过流水线来实现快速高质量的交付价值是相对能快速见效的,特别对于开发测试人员,能够获得实实在在的收益。 本期EasyOps产品使用最佳实践&#xff0c…

Qt --- 自定义提示框 类似QMessagebox

QMessageBox::information(NULL, QString("title"), QString("I am information")); 以下是自定义提示框的代码,有图有真相!提示框大部分都采用模态的形式,关于模态也不再多提!所以父类为QDialog,…

【力扣】59. 螺旋矩阵 II <模拟>

【力扣】59. 螺旋矩阵 II 给你一个正整数 n n n ,生成一个包含 1 到 n 2 n^2 n2 所有元素,且元素按顺时针顺序螺旋排列的 n n n n nn 正方形矩阵 m a t r i x matrix matrix 。 示例 1: 输入:n 3 输出:[[1,…

解锁未来网络新奇体验:探索算力网络的边缘创新

在当今数字时代,我们正处于网络变革的前沿,而算力网络正是这场变革的引领者之一。随着5G时代的到来,算力网络以其创新性和前瞻性,正在重新定义我们对网络构架的认知。让我们一起深入探索,了解算力网络如何为未来网络构…

搭建 Gitlab

当设置和配置 GitLab 实例并执行诸如创建群组、项目、用户和上传代码等操作时,涉及到多个步骤,每个步骤都有特定的目的。让我们逐步解释每个步骤并说明其背后的原因: 安装必需的软件: yum install -y curl policycoreutils-python…

9.Redis数据结构之整数数组

Redis中的Set与Java中的HashSet一样,无序且存储元素不重复。 Redis的集合对象Set使用了intset和hashtable两种数据结构存储。intset我们可以理解为数组,hashtable就是普通的哈希表(key为Set集合中元素的值,value为null)。当value是整数值时,且…