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

目录

摘要

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、概率图、隐马尔科夫模型、强化学习等
  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值