第四十二周:文献阅读+机器学习方法

目录

摘要

Abstract

文献阅读:时间序列模型在水质预测中的应用

现有问题

提出方法

ARIMA(自回归差分移动平均模型)

K-means聚类分析

研究实验

数据集

评价指标

实验目的

实验设置

实验结果

ARIMA模型python实现

机器学习总结

监督学习算法

无监督学习算法

算法选择


摘要

本周阅读的文献中提出了一种基于趋势分量和随机增量特征的ARIMA模型与K-means聚类模型相结合的水质预测方法,将ARIMA模型与聚类模型相结合,可以弥补单一ARIMA模型的不足。通过聚类分析发现可能存在的影响因素,提高对于具有随机特征的数据预测精度。文献中用到的两种机器学习方法,一是AR模型和MA模型结合的ARIMA模型,能够利用数据本身的历史信息来预测未来,二是K-means聚类分析方法,能够把相似的数据样本分到一组(簇)。最后总结了机器学习的四大类,以及监督学习和无监督学习的经典算法。

Abstract

The literature read this week proposes a water quality prediction method that combines the ARIMA model based on trend components and random increment features with the K-means clustering model. By combining the ARIMA model with the clustering model, it can compensate for the shortcomings of a single ARIMA model. By using cluster analysis to identify potential influencing factors, the prediction accuracy for data with random features can be improved. There are two machine learning methods used in the literature, one is the ARIMA model that combines the AR model and MA model, which can use the historical information of the data itself to predict the future, and the other is the K-means clustering analysis method, which can group similar data samples into one group (cluster). Finally, the four major categories of machine learning were summarized, as well as classic algorithms for supervised and unsupervised learning.

文献阅读:时间序列模型在水质预测中的应用

title:Application of Time Serial Model in Water Quality Predicting

D O I:10.32604/cmc.2023.030703

现有问题

ARIMA模型是一种经典的时间序列预测方法,能较好地反映时间序列数据的线性特征。然而,单一的ARIMA模型难以全面有效地处理河流水质的非线性变化,对具有趋势特征的数据有较好的预测效果,但对具有随机特征的数据预测效果较差。

提出方法

将ARIMA模型与K-means聚类分析相结合,提出了一种基于趋势分量和随机增量特征的ARIMA模型与聚类相结合的水质预测方法。采用k均值聚类方法分析监测水域降水与TP指数的关系,计算降水对水质变化的随机增量特征,结合趋势分量特征和随机增量特征,计算水质预测结果。

ARIMA(自回归差分移动平均模型)

ARIMA模型,是一种将AR和MA模型结合起来的模型,用于处理更复杂的时间序列问题。

1. AR(自回归模型)

自回归模型AR,就是使用一个变量的过去值来预测其未来值的模型。自回归模型假设过去的值与未来的值之间存在线性关系。假设你能通过给过去的值加权求和来预测未来的值,这些权重就是模型的参数。

ad2f65869df4419bbc5181e5662e2f6f.jpeg

如果我们要预测时间t+1的值,我们可以使用到时间t为止的所有真实值;但是如果我们要预测时间t+2的值,我们就没有时间t+1的真实值,所以我们必须使用我们在时间t+1的预测值。这个过程将持续下去,因此,越往未来预测,我们依赖的预测值就越多。这也就是为什么时间序列预测中的误差会随着时间的推移而累积。

AR模型与多元线性回归模型在形式上非常相似,但应用的数据类型和各自对数据的假设有很大差别,AR模型自变量之间有严格的时间顺序,而多元线性回归模型则没有。

2. MA(移动平均模型)

它描述的是当前时间点的数据与过去噪声的关系。白噪声是一种特殊的时间序列模型,每个时间点的数据都是独立且服从相同分布的,且具有常数的均值和方差。

0d441d8bbc0b40b1b4a61be70f08c85a.jpeg

AR(自回归)模型和MA(移动平均)模型虽然在形式上看起来很相似,但是他们的关键区别在于他们对过去信息的处理方式。

对于AR模型来说,当前值是过去值的函数,是在使用过去的"实际"观察值来预测现在的值。对MA模型来说,当前值是过去噪声(或称之为误差或冲击)的函数。这里的“白噪声”实际上是模型无法解释的随机部分,是未能被模型捕获的信息。MA模型是在试图用过去的"错误"或"冲击"来预测现在的值。

AR模型是使用过去的实际值进行预测,而MA模型是使用过去的预测误差进行预测。举个例子:影响明日会不会下雨的真正因素并不是“今天”或“昨天”这些时间概念本身,而是风、云、日照等更加客观和科学的因素(这些其实就是MA模型认为的“偶然因素”)。

3. ARIMA模型

ARIMA模型的基本思想是利用数据本身的历史信息来预测未来。一个时间点上的标签值既受过去一段时间内的标签值影响,也受过去一段时间内的偶然事件的影响。这就是说,标签值是围绕着时间的大趋势而波动的,其中趋势是受历史标签影响构成的,波动是受一段时间内的偶然事件影响构成的,且大趋势本身不一定是稳定的。其中:

  • AR部分用于处理时间序列的自回归部分,它考虑了过去若干时期的观测值对当前值的影响。
  • I(差分)部分用于使非平稳时间序列达到平稳,消除了时间序列中的趋势和季节性因素。

    e34150dab0204e5783183cbe8aeaabb8.jpeg

  • MA部分用于处理时间序列的移动平均部分,它考虑了过去的预测误差对当前值的影响。

K-means聚类分析

k-means算法又名k均值算法,是基于划分的聚类,K-means算法中的k表示的是聚类为k个簇,means代表取每一个聚类中数据值的均值作为该簇的中心,或者称为质心,即用每一个的类的质心对该簇进行描述。K 均值聚类是一种分区方法,它将数据中的观测值视为具有位置和相互间距离的对象。它将对象划分为 K 个互斥簇,使每个簇中的对象尽可能彼此靠近,并尽可能远离其他簇中的对象。每个簇的特性由其质心或中心点决定。聚类中使用的距离通常不代表空间距离。

K-Means聚类算法思路

①随机选择k个聚类中心

②计算所有点到k个聚类中心的距离

③选择样本中每个点到每个聚类中心距离的最小值,并将其归类

④重新计算聚类中心,将聚类中心移动至每对于簇的均值点

⑤重复“归类-移动”(以上②③④步骤),直至聚类中心不再移动        

K- means聚类算法计算实例

178c6e31bee84ec98dab22664c2b0622.png

研究实验

数据集

数据通过水质监测平台获取某流域2019年1月1日至2020年12月31日的水质数据。共有16876行数据,主要有水温、pH、溶解氧、电导率、浊度、高锰酸盐指数、氨氮、总氮、总氮9项指标。其中,高锰酸盐指标、氨氮、总磷、总氮每4 h采集一次,其他5项指标每小时采集一次。

以某流域水质监测数据为样本,选取水质总磷(TP)指数作为预测对象。

评价指标

检验模型预测精度的常用指标有MAE、MSE和MAPE。其中MAE为绝对误差的平均值,能较好地反映预测误差值的实际情况。MSE即均方误差,是指参数预测值与实际值之差的平方的期望值。MSE评估数据的波动。MSE越小,模型的预测精度越高。MAPE是平均绝对百分比误差。MAPE值越小,模型的预测精度越高。

实验目的

对比ARIM单一模型与ARIMA结合聚类的预测精度,证实ARIMA结合聚类其预测精度高于单一ARIMA模型,说明ARIMA结合聚类可以更好预测具有随机特征的数据。

实验设置

  1. 首先对样本数据进行清洗、平稳性分析和白噪声分析;
  2. 其次,根据贝叶斯信息准则(BIC)原理选择合适的参数,利用ARIMA方法获得趋势分量特征,进行水质预测;               
  3. 再次,采用k均值聚类方法分析监测水域降水与TP指数的关系,计算降水对水质变化的随机增量特征。
  4. 最后,结合趋势分量特征和随机增量特征,计算水质预测结果,比较ARIMA模型与ARIMA结合聚类模型两种方法的预测结果。

实验结果

通过对2020年TP数据进行聚类分析,可以看出TP数据大部分时间分布在0.02 ~ 0.065之间,但也有少量数据分布在这个范围之外。因此可以确定还有其他因素影响着TP指标数据的走势,分析监测水域附近降雨对TP指数的影响,通过相关分析可以确定降雨量增量与TP增量之间存在很强的相关性。

左边为单一ARIMA模型的预测结果,右边为ARIMA结合聚类的预测结果。可以看出来TP指数预测值与这一时期实际数据的变化趋势较为接近,说明ARIMA模型结合聚类模型的预测效果更准确。

从评价指标也可以看出,利用ARIMA模型预测TP指数,其预测精度不高。这是因为ARIMA模型只提取了水质变化的趋势分量特征,而不能提取随机变化特征。与ARIMA水质预测方法相比,ARIMA结合聚类的方法具有更高的精度,其平均绝对误差(MAE)、均方误差(MSE)和平均绝对百分比误差(MAPE)分别降低了44.6%、56.8%和45.8%。

756d43e5dfe846c7b7af6f3fa2d32f98.png

ARIMA模型python实现

使用ARIMA 模型对非平稳时间序列进行建模操作,差分运算具有强大的确定性的信息提取能力, 许多非平稳的序列差分后显示出平稳序列的性质, 这是称这个非平稳序列为差分平稳序列。 对差分平稳序列可以还是要ARMA 模型进行拟合, ARIMA 模型的实质就是差分预算与 ARMA 模型的结合。 

#导入数据
import pandas as pd
filename = r'D:\datasets\arima_data.xls'
data = pd.read_excel(filename, index_col = u'日期')#画出时序图
import matplotlib.pyplot as plt     
plt.rcParams['font.sans-serif'] = ['SimHei']    #定义使其正常显示中文字体黑体
plt.rcParams['axes.unicode_minus'] = False      #用来正常显示表示负号
data.plot()
plt.show()

#画出自相关性图
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
plot_acf(data)
plt.show()#平稳性检测
from statsmodels.tsa.stattools import adfuller
print('原始序列的检验结果为:',adfuller(data[u'销量']))
#原始序列的检验结果为: (1.8137710150945268, 0.9983759421514264, 10, 26, {'1%': -3.7112123008648155,'10%': -2.6300945562130176, '5%': -2.981246804733728}, 299.46989866024177)
#返回值依次为:adf, pvalue p值, usedlag, nobs, critical values临界值 , icbest, regresults, resstore 
#adf 分别大于3中不同检验水*的3个临界值,单位检测统计量对应的p 值显著大于 0.05 , 说明序列可以判定为 非平稳序列

 

#通过AIC确定ARIMA参数,打印原始数据和差分后数据的自相关系数图和偏自相关系数图
D_data = data.diff().dropna()
D_data.columns = [u'销量差分']D_data.plot()   #画出差分后的时序图
plt.show()plot_acf(D_data)    #画出自相关图
plt.show()
plot_pacf(D_data)   #画出偏相关图
plt.show()
print(u'差分序列的ADF 检验结果为: ', adfuller(D_data[u'销量差分']))   #平稳性检验
#差分序列的ADF 检验结果为:  (-3.1560562366723537, 0.022673435440048798, 0, 35, {'1%': -3.6327426647230316, '10%': -2.6130173469387756, '5%': -2.9485102040816327}, 287.5909090780334)
#一阶差分后的序列的时序图在均值附近比较平稳的波动, 自相关性有很强的短期相关性, 单位根检验 p值小于 0.05 ,所以说一阶差分后的序列是平稳序列

 

#对一阶差分后的序列做白噪声检验
from statsmodels.stats.diagnostic import acorr_ljungbox
print(u'差分序列的白噪声检验结果:',acorr_ljungbox(D_data, lags= 1)) #返回统计量和 p 值
# 差分序列的白噪声检验结果: (array([11.30402222]), array([0.00077339])) p值为第二项, 远小于 0.05#对模型进行定阶
from statsmodels.tsa.arima_model import ARIMA pmax = int(len(D_data) / 10)    #一般阶数不超过 length /10
qmax = int(len(D_data) / 10)
bic_matrix = []
for p in range(pmax +1):temp= []for q in range(qmax+1):try:temp.append(ARIMA(data, (p, 1, q)).fit().bic)except:temp.append(None)bic_matrix.append(temp)bic_matrix = pd.DataFrame(bic_matrix)   #将其转换成Dataframe 数据结构
p,q = bic_matrix.stack().idxmin()   #先使用stack 展开, 然后使用 idxmin 找出最小值的位置
print(u'BIC 最小的p值 和 q 值:%s,%s' %(p,q))  #  BIC 最小的p值和q 值:0,1
#在确保三个基本假设都满足后,即可开始建模,其中ARIMA的三个参数(p,d,q)选用步骤3和5的最优结果
#所以根据得到的q、p可以建立ARIMA 模型,ARIMA(0,1,1)
model = ARIMA(data, (p,1,q)).fit()
model.summary2()        #生成一份模型报告
#forecast()中填入预测期数,开始预测
model.forecast(5)   #为未来5天进行预测,返回预测结果、标准误差和置信区间

机器学习总结

机器学习方法是计算机利用已有的数据,得出了某种模型,并利用此模型预测未来的一种方法。机器学习根据训练⽅法⼤致可以分为监督学习、无监督学习、半监督学强化学习。

概念算法类型应用场景
监督学习根据已有的数据集,知道输入和输出结果之间的关系。根据这种已知的关系,训练得到一个最优的模型。
  1. 分类
  2. 回归
  1. 图像识别
  2. 自然语言处理
  3. 语言识别
  4. 医学诊断
无监督学习我们不知道数据集中数据、特征之间的关系,而是要根据聚类或一定的模型得到数据之间的关系。
  1. 聚类
  2. 降维
  3. 关联规则挖掘
  4. 异常检测
  1. 聚类与分组
  2. 特征学习与降维
  3. 异常检测
  4. 关联规则挖掘
半监督学习半监督学习的目标是利用同时包含有标签和无标签的数据来构建一个模型,使得模型能够在测试阶段更好地泛化到新的、未见过的数据。
  1. 半监督分类
  2. 半监督回归
  3. 半监督聚类
  4. 半监督异常检测
  1. 自然语言处理
  2. 图像识别和计算机视觉
  3. 数据聚类
  4. 医学图像和诊断
  5. 机器人控制
  6. 图像生成和数据增强
强化学习强化学习是让一个智能体(agent)在环境中通过尝试和错误来学习行为策略。智能体通过与环境进行交互,根据奖励信号来调整其行为策略,以达到最大化累积奖励的目标。
  1. 有模型学习
  2. 免模型学习
  1. 自动驾驶
  2. 机器人控制
  3. 游戏
  4. 语音识别和自然语言处理

监督学习算法

算法类型简介
朴素贝叶斯分类贝叶斯分类方法是基于贝叶斯定理的统计学分类方法。它通过预测一个给定的元组属于一个特定类的概率,来进行分类。朴素贝叶斯分类法假定一个属性值在给定类的影响独立于其他属性——类条件独立性
决策树分类决策树是一种简单但广泛使用的分类器,它通过训练数据构建决策树,对未知的数据进行分类
SVM分类支持向量机把分类问题转化为寻找分类平面问题,并通过最大化分类边界点距离分类平面的距离来实现分类
逻辑回归分类逻辑回归是用于处理因变量为分类变量的回归问题,常见的是二分类或二项分布问题,也可以处理多分类问题,它实际上是属于一种分类方法
线性回归回归线性回归是处理回归任务的最常用的算法之一。该算法的形式十分简单,它期望使用一个超平面拟合数据集(只有两个变量的时候就是一条直线)
回归树回归回归树(决策树的一种)通过将数据集重复分割为不同的分支而实现分层学习,分割的标准是最大化每一次分离的信息增益。这种分支结构让回归树很自然的学习到非线性关系。
K邻近分类+回归通过搜索K个最相似的实例(邻居)的整个训练集并总结那些K个实例的输出变量,对新数据点进行预测
Adaboosting分类+回归Adaboost目的就是从训练集数据中学习一系列的弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器
神经网络分类+回归它从信息处理角度对人脑神经元进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络

无监督学习算法

算法类型简介
K均值聚类聚类K 均值聚类就是制定分组的数量为 K , ⾃动进⾏分组。
层次聚类聚类如果你不知道应该分为⼏类, 那么层次聚类就⽐较适合了。层次聚类会构建⼀个多层嵌套 的分类, 类似⼀个树状结构。
主成分分析 – PCA降维主成分分析是把多指标转化为少数⼏个综合指标。主成分分析经常⽤减少数据集的维数, 同时保持数据集的对⽅差贡献最⼤的特征。这是通 过保留低阶主成分, 忽略⾼阶主成分做到的。 这样低阶成分往往能够保留住数据的最᯿要 ⽅⾯。
奇异值分解 – SVD降维奇异值分解 ( Singular Value Decomposition ) 是线性代数中⼀种᯿要的矩阵分解, 奇 异值分解则是特征分解在任意矩阵上的推⼴。在信号处理、统计学等领域有᯿要应⽤。
⽣成模型和 GAN⽣成模型的指导原则是, 能够构建⼀个令⼈信服的数据示例是理解它的最有⼒证据。对于图像来说, 迄今为⽌最成功的⽣成模型是⽣成对抗⽹络 ( GAN ) 。 它由两个⽹络组 成: ⼀个⽣成器和⼀个鉴别器, 分别负责伪造图⽚和识别真假。

算法选择

无监督学习方法主要是聚类,随机选定几个样本,通过一定的算法不停迭代直至收敛或者达到停止条件,然后便将所有样本分成了几类。

对有监督学习而言,根据最终所需要的输出结果选择算法

  • 如果涉及到分类,可以参考的模型有线性回归及其非线性扩展、决策树、神经网络、支持向量机SVM、规则学习等
  • 如果是回归问题,可以认为是分类的连续形式,方法便是以上模型的变种或扩展
  • 如果涉及到概率,可以参考的有神经网络、贝叶斯、最大似然、EM、概率图、隐马尔科夫模型、强化学习等

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

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

相关文章

【ELK】logstash快速入门

1.概述 1.1.什么是logstash? 之前我们聊了es,并且用docker搭建了一个eskibana的环境。es目前最普遍的用法是用来存储日志的,然后结合kibana对日志做一些可视化的工作。既然要收集日志,就面临着一个问题: 各个系统的…

LNMP.

一.mysl配置 1.安装mysql yum install mysql-server -y 2.进入mysql配置文件目录 cd /etc/my.cnf.d3.编辑mysql配置文件 vim mysql-server.cnf 在[mysqld]中添加: character-set-serverutf84.启动mysql服务 systemctl start mysqld5.登入mysql mysql 6.创建数据库 cre…

嵌入式学习第十八天

51单片机 51单片机是基于Intel的微处理器体系结构发展而来的。 主要由CPU、存储器、定时器/计数器、串行口等模块组成 优点:低功耗、低成本、高性能 开发工具: Keil uVision4(支持汇编语言和C语言编程) stc-isp-v6.92L&…

Vue基础知识七

一 路由 1.1 生活里的路由与路由器 是为了实现多台设备上网 1.2 程序里的路由与路由器 是为了实现导航区与展示区来回切换; SPA单页面应用:就像前几章节里的项目,整个项目只有一个html文件; 案例 注意,最开始的时候…

《生成式AI与大模型核心技术开发与应用研修班》的通知

Chart GPT 的发布,让大语言模型成了人工智能的焦点。尤其近期发布的大模型各业务场景应用应接不暇,为行业带来新的发展机遇,甚至将重构AI行业。AI行业的发展将以云平台、算力、大模型构成行业发展的三驾马车。大模型和小模型的融合使用&#…

day10笔记

API 显示->索引->搜索框输入->回车查看信息 字符串 直接赋值进串池(会先找,有复用) new出来的在堆里面 字符串比较 ""引用数据类型比较的是地址值 一模一样的比较 忽略大小写的比较 Scanner输入的数据是new出来的 遍历字符串 public class StringDe…

Ubuntu 添加字体

Ubuntu 添加字体 Ubuntu如何添加新的字体?似乎远远没有Windows方便呀,查询了一些资料,与大家分享。 方法1 根据字体名称直接安装 oyroy-FMVU08001:~$ sudo apt-get install fonts-wqy-zenhei [sudo] roy 的密码: 正在读取软件…

Android学习之路(28) 进程保活组件的封装

前言 远古时代,出现过很多黑科技,比如MarsDaemon,使用双进程守护的方式进行保活,在当时可谓风光无限,可惜在8.0时代到来就被废弃了。 又比如后面出现的1像素Activity的保活方式,说他流氓一点不过分&#…

canvas设置图形各种混合模式,类似photoshop效果

查看专栏目录 canvas实例应用100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

创建自己的Hexo博客

目录 一、Github新建仓库二、支持环境安装Git安装Node.js安装Hexo安装 三、博客本地运行本地hexo文件初始化本地启动Hexo服务 四、博客与Github绑定建立SSH密钥,并将公钥配置到github配置Hexo与Github的联系检查github链接访问hexo生成的博客 一、Github新建仓库 登…

nodejs 事件循环

浏览器的事件循环比较熟悉了,也来了解下 node 的。 参考来源: https://nodejs.org/en/guides/event-loop-timers-and-nexttick/ https://juejin.cn/post/6844903999506923528 事件循环分为 6 个阶段,图中每个框都是一个阶段,每个阶…

typecho 在文章中添加 bilibili 视频

一、获取视频来源: 可以有2种方式来定位一个 bilibili 视频: 第一种是使用 bvid 参数定位第二种是使用 aid 参数定位 如何获取这两个参数? 首先我们可以看看 bilibili 网站中的视频页面链接其实可以分为两种: 第一种是类似&a…