2024-11-18 学习人工智能的Day28 线性回归

线性回归

线性回归是统计学和机器学习中的一种基本预测模型,用于分析和建模目标变量(连续型数据)与一个或多个自变量(解释变量)之间的关系。

线性回归概述

线性回归模型假设目标变量 y 与自变量 X 之间存在线性关系。这种关系可以用以下公式表示:

y = β 0 + β 1 X 1 + β 2 X 2 + … + β n X n + ϵ y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_n X_n + \epsilon y=β0+β1X1+β2X2++βnXn+ϵ
其中:

  • y 是目标变量。
  • X_1, X_2, \ldots, X_n 是自变量。
  • β_0, β_1,β_n 是回归系数,需要通过数据估计。
  • ε 是误差项,表示模型无法解释的随机变异。

线性回归类型

  1. 简单线性回归:只有一个自变量和一个因变量。
  2. 多元线性回归:包含两个或更多自变量。

损失函数

线性回归通常使用最小二乘法来估计模型参数,即最小化实际观测值和模型预测值之间的平方差之和。损失函数定义为:

MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2
其中:

  • n 是样本数量。
  • y_i 是第 i 个观测值。
  • y_i是模型预测值。

参数估计

最小二乘法通过求解以下方程来估计参数:

∂ MSE ∂ β j = 0 \frac{\partial \text{MSE}}{\partial \beta_j} = 0 βjMSE=0
这通常通过矩阵运算实现:

β ^ = ( X T X ) − 1 X T y \hat{\beta} = (X^T X)^{-1} X^T y β^=(XTX)1XTy
其中:

  • X 是设计矩阵,包含自变量的值。
  • y 是目标变量的向量。
  • β 是估计的参数向量。

梯度下降法

梯度下降是一种优化算法,用于最小化损失函数。在每次迭代中,参数按照梯度的反方向更新:

β ( t + 1 ) = β ( t ) − α ∇ β MSE ( β ( t ) ) \beta^{(t+1)} = \beta^{(t)} - \alpha \nabla_\beta \text{MSE}(\beta^{(t)}) β(t+1)=β(t)αβMSE(β(t))
其中:

  • α是学习率。
  • β 是损失函数相对于参数的梯度。

正则化

为了防止过拟合,线性回归模型可以加入正则化项,如岭回归(L2正则化)和Lasso回归(L1正则化):

  • 岭回归
    Loss = MSE + λ ∑ j = 1 n β j 2 \text{Loss} = \text{MSE} + \lambda \sum_{j=1}^{n} \beta_j^2 Loss=MSE+λj=1nβj2

  • Lasso回归
    Loss = MSE + λ ∑ j = 1 n ∣ β j ∣ \text{Loss} = \text{MSE} + \lambda \sum_{j=1}^{n} |\beta_j| Loss=MSE+λj=1nβj

其中 λ 是正则化强度参数。

应用

线性回归广泛应用于各种预测任务,如房价预测、股票价格分析、销售预测等。尽管线性回归模型简单,但它提供了对数据关系的基本理解,并且可以作为更复杂模型的基准。

线性回归模型的实现和应用通常依赖于统计软件或机器学习库,如Python的scikit-learn库,它提供了简单而强大的接口来训练和评估线性回归模型。

最后介绍一下sklearn库中的接口

import numpy as np
import matplotlib.pyplot as pltw = np.linspace(-10,20,100)
# print(w)
def loss(w):return (w-3.5)**2-4.5*w+10
def dloss(w):return 2*(w-3.5)-4.5plt.plot(w,loss(w)) # 当该直线与x轴相交,表示损失为0,拟合曲线与所有已知点重合,
# 且该曲线无法出现小于0的值,因为该曲线是由均方误差算的# 梯度下降
# 学习率
learning_rate = 0.01
# 初始化一个w值
np.random.seed(1)
w = np.random.randint(-10,20) # 随机给一个w值:-5
e = loss(w) # 初始化的w为-5时的loss值
x = [w]
y = [e]# 用循环来多级下降
for i in range(100):w = w-learning_rate*dloss(w)e = loss(w)x.append(w)y.append(e)# 单次下降
# # 第一次梯度下降
# w = w-learning_rate*dloss(w)
# e = loss(w)
# x.append(w)
# y.append(e)
# # 第二次梯度下降
# w = w-learning_rate*dloss(w)
# e = loss(w)
# x.append(w)
# y.append(e)
# # 第三次
# w = w-learning_rate*dloss(w)
# e = loss(w)
# x.append(w)
# y.append(e)plt.scatter(x,y)
plt.show()

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

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

相关文章

EtherNet/IP转Profinet网关连接发那科机器人配置实例解析

本案例主要展示了如何通过Ethernet/IP转Profinet网关实现西门子1200PLC与发那科搬运机器人的连接。所需的设备有西门子1200PLC、开疆智能Ethernet/IP转Profinet网关以及Fanuc机器人。 具体配置步骤:打开西门子博图配置软件,添加PLC。这是配置的第一步&am…

Uniapp运行环境判断和解决跨端兼容性详解

Uniapp运行环境判断和解决跨端兼容性 开发环境和生产环境 uniapp可通过process.env.NODE_ENV判断当前环境是开发环境还是生产环境,一般用于链接测试服务器或者生产服务器的动态切换。在HX中,点击运行编译出来的代码是开发环境,点击发行编译…

C语言 for 循环:解谜数学,玩转生活!

放在最前面的 🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼 🎉🎉我的C语言初阶合集:C语言初阶合集,希望能…

【专题】2024AIGC创新应用洞察报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p38310 在科技日新月异的今天,人工智能领域正以前所未有的速度发展,AIGC(人工智能生成内容)成为其中最耀眼的明珠。从其应用场景的不断拓展,到对各行业的深刻变革&#xff0…

.NET桌面应用架构Demo与实战|WPF+MVVM+EFCore+IOC+DI+Code First+AutoMapper

目录 .NET桌面应用架构Demo与实战|WPFMVVMEFCoreIOCDICode FirstAutoPapper技术栈简述项目地址:功能展示项目结构项目引用1. 新建模型2. Data层,依赖EF Core,实现数据库增删改查3. Bussiness层,实现具体的业务逻辑4. Service层&am…

两种柑橘物种中WRKY转录因子的鉴定和比较-文献精读82

Genome-wide identification and comparative expression profiling of the WRKY transcription factor family in two Citrus species with different Candidatus Liberibacter asiaticus susceptibility 全基因组范围内鉴定和比较两种对柑橘黄龙病菌(Candidatus …

Kafka中ACKS LSO LEO LW HW AR ISR OSR解析

名称解释 ACKS(Acknowledgments)确认、回执 LW(Low watermark)低水位、LSO(Log start offset)起始偏移量 HW(High watermark)高水位 LEO(Log end offset)…

vue实现展示并下载后端返回的图片流

// 点击下载 downLoadCode() {const image new Image();image.setAttribute("crossOrigin", "anonymous");image.onload () > {const canvas document.createElement("canvas");canvas.width image.width;canvas.height image.height;c…

c++:模板

1.泛型编程 在认识模板之前,我们首先要认识泛型编程 泛型编程是一种编程范式,它使得算法和数据结构能够独立于特定数据类型进行设计和实现。通过使用泛型,开发者可以编写一次代码,然后在不同的数据类型上进行重用,从…

Linux下安装配置redis详细教程,并配置哨兵模式,redis配置文件中文详解

redis版本为redis-3.2.12,使用工具将安装包上传到data目录。 redis.jpeg 在data目录下创建文件夹redis,将redis安装在此目录。 第一步:解压。 cd data tar -zxvf redis-3.2.12.tar.gz第二步:安装,PREFIX/data/redis用…

R语言数据分析案例45-全国汽车销售数据分析(可视化与回归分析)

一、研究背景 随着经济的发展和人们生活水平的提高,汽车已经成为人们日常生活中不可或缺的交通工具之一。汽车市场的规模不断扩大,同时竞争也日益激烈。对于汽车制造商和经销商来说,深入了解汽车销售数据背后的规律和影响因素,对…

Java 网络编程:Socket 与网络通信

1 引言 在古代,由于通信不便利,人们利用鸽子的飞行能力和方向辨识能力,驯化鸽子进行消息传递,即所谓的“飞鸽传书”。在现代计算机网络中,套接字(Socket)扮演了类似的角色。套接字是应用程序通…

编程之路,从0开始:结构体详解

目录 前言 正文 1、结构体引入 2、结构体的声明 3、typedef 4、结构体的匿名声明 5、结构的自引用 (1)链表 (2)自引用 6、结构体内存对齐 (1)对齐规则 (2)题目 &#x…

Flink监控checkpoint

Flink的web界面提供了一个选项卡来监控作业的检查点。这些统计信息在任务终止后也可用。有四个选项卡可以显示关于检查点的信息:概述(Overview)、历史(History)、摘要(Summary)和配置(Configuration)。下面依次来看这几个选项。 Overview Tab Overview选项卡列出了以…

04-转录组下游分析-标准化、聚类、差异分析

准备工作 1.数据标准化 标准化前需要进行数据预处理 过滤低表达的基因,并检查是否有异常样本 以下是常见的几种过滤方式(过滤的标准都可以自己调整) 1:在至少在75%的样本中都表达的基因(表达是指在某个样本中count值…

常见网络厂商设备默认用户名/密码大全

常见网络厂商的默认用户名/密码 01 思科 (Cisco) 设备类型:路由器、交换机、防火墙、无线控制器 默认用户名:cisco 默认密码:cisco 设备类型:网管型交换机 默认用户名:admin 默认密码:admin 02 华…

Spring 与 Spring MVC 与 Spring Boot三者之间的区别与联系

一.什么是Spring?它解决了什么问题? 1.1什么是Spring? Spring,一般指代的是Spring Framework 它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代码…

【热门主题】000055 网络安全:构筑数字时代的坚固防线

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【热…

鸿蒙中位置权限和相机权限

1.module.json5中添加相关权限和string.json中配置信息 2. import { hilog } from kit.PerformanceAnalysisKit; import { TAG } from ohos/hypium/src/main/Constant; import { bundleManager, common } from kit.AbilityKit; import { abilityAccessCtrl } from kit.Ability…

2024.6使用 UMLS 集成的基于 CNN 的文本索引增强医学图像检索

Enhancing Medical Image Retrieval with UMLS-Integrated CNN-Based Text Indexing 问题 医疗图像检索中,图像与相关文本的一致性问题,如患者有病症但影像可能无明显异常,影响图像检索系统准确性。传统的基于文本的医学图像检索&#xff0…