工业大数据分析算法实战-day05

文章目录

  • day05
    • 分而治之中的MARS算法
    • 神经网络逼近能力解释

day05

今天是第5天,昨日从统计分析开始利用统计学的知识判断当前样本的分布以及估计总体的参数和假设检验的情况,以及介绍了线性回归算法的相关优化点,但是毕竟线性回归是线性划分的,实际情况很多是非线性的,比如温度对故障可能在低温没什么影响但是高温却急剧的增加影响,这就需要分区进行建模,今天将学习多元自适应回归样条算法(MARS)以及神经网络算法(该小节只讲述了部分,后面会有专门的深度学习小节)

分而治之中的MARS算法

相比较传统的线性回归最大的不同在于将数据分为不同区间,然后在每个区间内进行局部的线性回归,具体来说:

  • 数据划分(分区间)

    • 在传统的线性回归中,我们假设所有的数据点都符合一个统一的线性关系(比如 y = a * x + b)。但实际上,数据中可能存在非线性关系,例如温度对故障的影响,在低温区间可能没有太大影响,但在高温区间可能会急剧增加故障风险。
    • MARS 会将数据分成多个区间(或者叫“段”)。每个区间的线性关系可能不同,它会在不同的区间内用不同的线性方程来拟合数据。
  • 基函数(分段线性回归)

    • MARS 的每个区间都有一个 基函数,这些基函数通常是分段的线性函数。例如,假设我们正在研究温度(T)与故障之间的关系,MARS 可能会根据温度的不同值划分为多个区间,并在每个区间内使用线性回归来拟合数据。

    • 比如:

      • T < 30 时,模型可能是 故障风险 = a1 * T + b1

      • 30 ≤ T < 35 时,模型可能是 故障风险 = a2 * T + b2

      • T ≥ 35 时,模型可能是 故障风险 = a3 * T + b3

    • 每个区间内都有自己的一组参数(a1, b1, a2, b2, 等),这些参数会根据该区间的数据来确定。

  • 如何选择分裂点?

    • MARS 算法会通过一种 贪心算法,在数据中选择最能降低误差的分裂点(比如,温度在哪个值附近划分最能提升模型的拟合效果)。
    • 比如,它会尝试不同的温度值来进行分区(如 30°C,35°C 等),然后计算每个分裂点所带来的误差减少,最终选择最能改善模型的分裂点。
  • 逐步建模和剪枝:在前向建模过程中,MARS 会不断添加新的基函数来提高模型的精度,每加一个新的分段模型,都会计算模型的误差,直到误差不能再显著下降。然后,后剪枝会去除一些对模型贡献较小的基函数,保持模型的简洁性,避免过拟合。

特点线性回归MARS
拟合关系线性关系(y = ax + b)非线性关系(通过分段线性回归拟合)
模型复杂度简单,只有一个公式较复杂,多个分段回归模型
处理非线性能力只能处理线性关系能自动处理复杂的非线性关系
模型解释性易于理解,参数(a, b)有明确物理意义较复杂,但每个分段也有物理意义
计算复杂度计算速度快,适合小数据计算较慢,适合复杂问题
适用场景数据关系简单,线性数据关系复杂,有多段不同的线性关系

举例说明:假设正在做一个机房故障预测模型,其中有两个变量:温度(T)湿度(H),并且你发现它们与故障之间的关系可能不是简单的线性关系。比如:

  • 当温度低于某个值时,湿度对故障影响较小。
  • 但当温度超过某个阈值时,湿度对故障的影响会急剧增加。

传统的线性回归只能拟合一个整体的线性关系(例如 故障风险 = a1 * T + a2 * H + b),但它可能无法准确捕捉到温度和湿度之间的这种非线性交互关系。MARS 会根据数据自动选择适合的温度和湿度的分裂点(例如 T = 30H = 50%),并在每个区间内使用不同的线性回归模型来拟合数据,这样就能更精确地捕捉到不同环境条件下的故障风险。

下面是对比类似的算法,都是采用:分而治之的思想

算法基本原理优点缺点举例
MARS数据分成多个区间,每个区间用简单的线性回归来拟合。适应非线性关系,能够处理高维数据。模型划分和边界处理较复杂,计算量大。比如在机房温湿度监控中,不同时间段和不同区域的温湿度影响因素不同,可以根据不同时间段(如白天、夜晚)和区域(如机架区、空调区)建立不同的线性模型。
CART通过递归分割数据,按不同条件划分每个区域,进行回归或分类。简单直观,结果易于解释。容易过拟合,需要剪枝,无法处理复杂非线性。在机房电力负荷预测中,根据温湿度、设备运行状况等条件,递归划分数据,判断不同条件下的负荷预测。比如当温度高于某一阈值时,负荷增加,模型会根据这些条件做决策。
PPR将数据投影到低维空间,再用多个非线性函数组合进行拟合。能处理复杂的非线性关系。计算复杂,模型解释性差。在机房空调系统的能效预测中,温度、湿度、设备负载等多个因素共同作用,PPR可以将这些复杂的因素投影到低维空间,通过多个非线性函数综合分析,预测空调系统的能效表现。

神经网络逼近能力解释

本节重点针对的是ANN,不做其他讨论,我们都知道ANN是一个三层结构的网络,包括输入层、隐含层和输出层,可以做分类、回归任务,所以在增加隐含层节点的前提下,ANN算法具有无限的函数逼近的能力,但是如何理解其逼近能力?神经元通常采用sigmoid作为激活函数.

  • 当权重参数很大时,sigmoid函数的输出会趋近于0或1,这样它的行为就像一个阶跃函数了。简单来说,当权重很大时,sigmoid函数的曲线变得几乎是一个“断崖”,这使得它能做类似阶跃函数的决策。

    • Sigmoid函数:形状像"S"字母的曲线,它的输出范围是(0, 1),对于较大的输入值,它的变化就会变得非常陡峭。
    • 阶跃函数:是一个非常简单的函数,当输入超过某个阈值时输出为1,否则输出为0。它像一个“开关”,只输出两个值。
  • 多个阶跃函数通过不同的偏移参数和加权,可以构成复杂的分段函数

    • 在神经网络中,每个神经元可以看作是一个小的决策单元,如果我们用多个神经元的阶跃函数(或sigmoid等函数)组合起来,就能够在不同的输入范围内形成不同的输出,这些不同的输出在一起就构成了一个复杂的分段函数
    • 分段函数:在不同的区间内,函数的表现不同。神经网络通过多个层次的神经元,每层可以通过不同的加权和偏移,形成对输入的不同处理,从而逼近复杂的目标函数。
  • 实际的ANN模型不是简单的分段逼近,而是通过损失函数的梯度下降与反向传播

    • 梯度下降:是一种优化方法,用来最小化神经网络输出与目标值之间的差距(即损失)。通过计算梯度并更新参数,逐步调整权重和偏置,使网络的预测越来越准确。
    • 反向传播:在训练过程中,通过反向传播算法计算误差的梯度,并利用梯度下降方法来更新每一层神经元的参数。反向传播确保网络能够根据数据中的模式调整其内部结构。

ELM的模型结构和ANN一致,但是训练参数(输入层、隐含层)阶段和输出层权重计算方式不一样,可查验下表,核心就是输入层、隐含层参数随机固定,计算输出层就把问题转换为了简单的线性问题。所以ELM算法比传统神经网络的准确度偏差,但是计算量低很多,可以用在一些需要即时计算的场景。

特性极限学习机(ELM)人工神经网络(ANN)
参数训练只训练输出层的权重,隐藏层权重随机初始化且固定训练所有层的权重和偏置,通过反向传播调整
求解参数通过线性方法(如最小二乘法)直接求解输出层权重通过梯度下降和反向传播迭代求解所有参数

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

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

相关文章

在Ubuntu服务器上备份文件到自己的百度网盘

文章目录 概述安装bypy同步文件定时任务脚本 概述 之前自购了一台阿里云服务器&#xff0c;系统镜像为Ubuntu 22.04&#xff0c; 并且搭建了LNMP开发环境&#xff08;可以参考&#xff1a;《Ubuntu搭建PHP开发环境操作步骤(保姆级教程)》&#xff09;。由于项目运行中会产生附…

safe area helper插件

概述 显示不同机型的必能显示的区域 实现步骤 引入safearea&#xff0c;引入其中的safearea的csharp 为cancas加入gameobject gameobject中加入safearea脚本 将UI作为这个gameobject的子物体&#xff0c;就可以完成显示

Unity 获取鼠标点击位置物体贴图颜色

实现 Ray ray Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit)) {textureCoord hit.textureCoord;textureCoord.x * textureMat.width;textureCoord.y * textureMat.height;textureColor textureMat.GetPixel(Mathf.Flo…

基于深度学习的猫狗识别系统【深度学习课设】

&#x1f3c6; 作者简介&#xff1a;席万里 ⚡ 个人网站&#xff1a;https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜&#xff0c;同时略懂Vue与React前端技术&#xff0c;也了解一点微信小程序开发。 &#x1f37b; 对计算机充满兴趣&#xff0c;愿意并且希望学习更多的技…

05、GC基础知识

JVM程序在跑起来之后&#xff0c;在数据的交互过程中&#xff0c;就会有一些数据是过期不用的&#xff0c;这些数据可以看做是垃圾&#xff0c;JVM中&#xff0c;这些垃圾是不用开发者管的&#xff0c;它自己会有一套垃圾回收系统自动回收这些内存垃圾&#xff0c;以备后面继续…

什么是战略思想?

古今中外&#xff0c;关于战略是什么&#xff1f;有非常多的理论&#xff0c;也有不同的视角。 中国最早的涉及战略的书籍据传是黄帝所著的《握奇文》&#xff0c;后有较为系统的兵法战略书籍为周朝姜太公&#xff08;亦称姜尚、姜子牙等&#xff09;所著的《六韬》&#xff0c…

2024.12.15 TCP/IP 网络模型有哪几层?(二)

2024.12.15 TCP/IP 网络模型有哪几层?&#xff08;二&#xff09; 上节课我们学习了网络模型有四部分构成&#xff0c;有应用层、传输层、网络层、网络接口层。 生成了 IP 头部之后&#xff0c;接下来要交给网络接口层(Link Layer)在 IP 头部的前面加上 MAC 头部&#xff0c…

51c深度学习~合集9

我自己的原文哦~ https://blog.51cto.com/whaosoft/12750420 #傅里叶特征 (Fourier Feature&#xff09;与核回归 位置编码背后的理论解释 本文探讨了位置编码背后的理论基础&#xff0c;特别是傅里叶特征&#xff08;Fourier Feature&#xff09;与核回归&#xff08;Kern…

Flutter Navigator2.0的原理和Web端实践

01 背景与动机 在Navigator 2.0推出之前&#xff0c;Flutter主要通过Navigator 1.0和其提供的 API&#xff08;如push(), pop(), pushNamed()等&#xff09;来管理页面路由。然而&#xff0c;Navigator 1.0存在一些局限性&#xff0c;如难以实现复杂的页面操作&#xff08;如移…

代码随想录算法训练营第三天 | 链表理论基础 | 707.设计链表

要求太多&#xff0c;代码量太大&#xff0c;实在难以完成 在以前听说&#xff0c;好的程序员&#xff0c;可以在短时生成大量的代码&#xff0c;本题只方法才只有6个&#xff0c;根本不算多 每天手敲代码量太少&#xff0c;才是问题 #include <iostream>class MyLink…

数据冒险、控制冒险、结构冒险

计算机组成原理 数据冒险、控制冒险、结构冒险 对所有用户&#xff08;所有程序员&#xff09;可见&#xff1a;PSW、PC、通用寄存器 PSW&#xff08;条件转移需要用到&#xff0c;程序员使用CMP指令的时候也需要用到所以是对用户可见&#xff09;PC&#xff08;跳转指令需要…

基于32单片机的RS485综合土壤传感器检测土壤PH、氮磷钾的使用(超详细)

1-3为RS485综合土壤传感器的基本内容 4-5为基于STM32F103C8T6单片机使用RS485传感器检测土壤PH、氮磷钾并显示在OLED显示屏的相关配置内容 注意&#xff1a;本篇文件讲解使用的是PH、氮磷钾四合一RS485综合土壤传感器&#xff0c;但里面的讲解内容适配市面上的所有多合一的RS…

SpringBoot【十一】mybatis-plus实现多数据源配置,开箱即用!

一、前言&#x1f525; 环境说明&#xff1a;Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 正常情况下我们在开发系统的时候都是使用一个数据源&#xff0c;但是由于有些项目同步数据的时候不想造成数据库io消耗压力过大&#xff0c;便会一个项目对应多个数据源…

Node.js教程入门第一课:环境安装

对于一个程序员来说&#xff0c;每学习一个新东西的时候&#xff0c;第一步基本上都是先进行环境的搭建&#xff01; 从本章节开始让我们开始探索Node.js的世界吧! 什么是Node.js? 那么什么是Node.js呢&#xff1f;简单的说Node.js 就是运行在服务端的 JavaScript JavaScript…

vim优化

1.编辑如下内容&#xff1a; cat > /root/.vimrc <<EOF set tabstop2 " 设置 Tab 为 2 个空格 set shiftwidth2 " 设置自动缩进为 2 个空格 set expandtab " 将 Tab 转换为空格 " 基本设置 set number syntax on" 快捷键设置…

字符串性能对比

效率(1) : String.indexOf与String.contains效率测试_string contains效率-CSDN博客 结论是前者效率高&#xff0c;源码里面conatins是使用indexof 在jdk8中contains直接调用的indexOf(其他版本没有验证),所以要说效率来说肯定是indexOf高,但contains也就多了一层方法栈,so 什…

移动网络的原理

无线网络是如何解决移动通信问题的 场景&#xff1a;用户在一辆轿车内以150km/h的时速沿高速公路急速行驶时穿过多个无线接入网&#xff0c;用户希望在整个旅程中保持一个与远程应用的不间断的TCP连接。 解决方案&#xff1a;移动节点的间接路由选择方法可解决TCP链接不间断的…

python学opencv|读取图像(十三)BGR图像和HSV图像互相转换深入

【1】引言 前序学习过程中&#xff0c;我们偶然发现&#xff1a;如果原始图像是png格式&#xff0c;将其从BGR转向HSV&#xff0c;再从HSV转回BGR后&#xff0c;图像的效果要好于JPG格式。 文章链接为&#xff1a; python学opencv|读取图像&#xff08;十二&#xff09;BGR图…

解决node.js的req.body为空的问题

从昨晚一直在试&#xff0c;明明之前用的封装的axios发送请求给其他的后端&#xff08;springboot&#xff09;是可以的&#xff0c;但昨天用了新项目的后端&#xff08;node.js&#xff09;就不行。 之前用了代理&#xff0c;所以浏览器发送的post请求不会被拦截&#xff0c;…

【嵌入式】嵌入式面试题 36 问

1. volatile 是否可以修饰 const 是的&#xff0c;volatile 可以修饰 const。const 表示变量的值不能被修改&#xff0c;而 volatile 表示变量的值可能在程序之外被修改&#xff08;例如&#xff0c;由硬件修改&#xff09;。 将 volatile 用于 const 变量意味着该变量的值虽然…