当前位置:   article > 正文

【视频】R语言支持向量回归SVR预测水位实例讲解|附代码数据

【视频】R语言支持向量回归SVR预测水位实例讲解|附代码数据

全文链接:https://tecdat.cn/?p=35914

分析师:Miaoqiao Wang

当我们面对样本需要建立相应模型时,使用传统统计方法建立模型需要大量的样本数据,只有在样本量足够大时,该模型才具有一定的可靠性,而实际实验中,不一定每次实验都拥有足够大的样本,甚至是小样本,这时使用传统统计方法来建立出的模型,在可靠性方面就存在一定的局限,难以达到理想的效果点击文末“阅读原文”获取完整代码数据)。

实例视频

本文将通过视频讲解,展示如何在R语言中应用SVR模型进行水位预测,并结合一个R语言支持向量回归SVR模型预测商店销量时间序列可视化实例的代码数据,为读者提供一套完整的实践数据分析流程。

支持向量机是由Vapnik等人在1964年提出的,用来解决线性以及非线性数据集的一种分类方法,支持向量回归则是支持向量机在回归问题中的应用。其模型的建立只基于数据集中少部分的支持向量,因此适用于在基于小样本数据上建立模型,被认为是目前所有统计学习方法中针对小样本分类问题的最佳方法,并且,支持向量回归理论基础十分扎实,推导求解过程精密细致,拥有大量的实践基础,具有较高的可行性。目前由于支持向量机自身的优越性,在世界各国研究者开展了大量有关支持向量机的研究,在人工智能领域已经成功实践。

最大划分超平面与支持向量

两条虚线中间的实线就是最大划分超平面在虚线上的样本点就是支持向量,分为正例和负例。两条虚线之间的间隔就是最大间隔:

3c0e56c56bdb52915306ef595bcee7e9.png

支持向量回归

支持向量回归(SVR)是支持向量机(SVM)处理回归问题的一种模型。正常情况下,传统的回归模型是根据模型的输出值与真实值之间的离差来计算损失的,只有输出值与真实值完全相同,损失才为0。而支持向量回归不同,我们能够允许的输出值与真实值之间有s,于是以E为中心,构造了一个宽度为2s的间隔带,样本点落入间隔带,则认为预测是正确的。

e9f2d8e9d9d1bc4a3d3f49035621da33.png


点击标题查阅往期内容

e0f4abf1101df906ad2d3a7602f9dfb5.png

数据分享|逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据和模型诊断可视化

outside_default.png

左右滑动查看更多

outside_default.png

01

84b796e61592f474931180543a7e17b4.png

02

9c918042ec6b3cb5dbed12e5c0777866.png

03

6f9ecbcdc102b1cc0c1058eabb301aa3.jpeg

04

a655aed578fda3ecc21dd94c4756ddb2.png

核技巧

核技巧就是选择合适的核函数将输入空间的样本数据映射到更高维的特征空间中,从而完成非线性变换。常见的核函数有:

f145a0117f1f967a5643de18aed14ca1.png

模型建立

A建模的思路

建立支持尚量回归模型实质上是核函数的选择和参数优化的过程,本文是根据大汾水流域一个站点的水位数据,利用其历史资料来建立测试集和训练集,通过选择核函数和参数调优来建立模型,用均方差和相关系数作为评价指标,通过评价指标来判断模型是否为最优模型,利用最终筛选得到的最优模型对已准备好的测试集进行测试,以此来评价最终模型的预测效果。

B构造样本

本文以75%的样本数据作为训练集,其余的样本做为测试集。按照R软件包e1071对数据的要求来构建样本数据,文件类型为*.cSv。

样本

f897a1b240ed084935ae3b4f17695042.png

样本数据对比

61755af52ae9026ecfa4f85bb5d27057.png

35c52edccd815f03fc392a3eb56e5962.png

选择核函数

根据表我们可知,sigmoid的均方差相较于其他两种核函数建立的模型较大,而相关系数却较小,这就表明相关性不明显,所l以sigmoid核函数不合适。

597b2feb9cd446564b059c301c22207b.png

138b89b3849078a4718a84f05b408b1c.png

同时,多项式核函数建立的模型虽然均方差较小,但其相关系数和sigmoid核函数相差不大,表现出的相关性不强烈。所以多项式核函数也不能选用。径向基核函数的均方差和相关系数都表现出很好的性能,综合上述考虑,我们选用高斯核函数来构建大汾水流域的水位预报回归模型。

c3b286d65119a8590f96d50652b509f7.png

Miaoqiao Wang

拓端分析师

67386cc090247b37a458d00802766b4b.png

参数选优

c42cae9e86e962d454a53c059923fed9.png

eda55e5dfe03311afa891905b784787e.png

根据表可以看出,根据支持向量个数,惩罚函数C和损失函数e,我们将不同参数模型进行对比,不难发现当C=1,=0.1时,模型的效果最好,此时模型是根据1006个支持向量进行建立,具有较高的代表性,并且对训练集以及测试集都表现出良好的泛化能力,相关系数都大于0.995,均方差都小于0.0001。并且回报效果和预测效果比较接近,这说明了该模型具有较好的稳定性。

模型效果

在上述小节中我们通过选择核函数与参数优选建立了相应的水位模型,之后我们需要检验模型的预测效果,衡量模型的可靠性,判断其是否能够应用于实践。

本文使用的是2020年1月至2月的大汾水流域水位数据,于是我们利用后面十天以及一个月的数据来于模型预测值进行比较,来检验模型效果。

75cab68fc0f846f5a196d9c8edcd7e60.png

bb2a3b596ec2ac8f9bd53767e2b573b9.png

R语言独立成分分析fastICA、谱聚类、支持向量回归SVR模型预测商店销量时间序列可视化

本文利用R语言的独立成分分析(ICA)、谱聚类(CS)和支持向量回归 SVR 模型帮助客户对商店销量进行预测。

首先,分别对商店销量的历史数据进行了独立成分分析,得到了多个独立成分;其次,利用谱聚类方法将商店销量划分成了若干类,并将每个类的特征进行了提取;最后,利用 SVR模型对所有的商店销量进行预测。实验结果表明,利用 FastICA、 CS和 SVR模型能够准确预测商店销量。

读取数据

4d34223ad5be4479bc09425dffd1c533.png

  1. read.csv("train_final.csv")
  2. head(data)

3e3b91b93dfda4859ea4e0984279ce3c.png

67ebee6df7c56f0d8e31db277083c931.png

独立成分分析方法(fastICA)

首先对于d维的随机变量 x∈Rd×1 ,我们假设他的产生过程是由相互独立的源 s∈Rd×1 ,通过 A∈Rd×d 线性组合产生的x=As

如果s的服从高斯分布的,那么故事结束,我们不能恢复出唯一的s,因为不管哪个方向都是等价的。而如果s是非高斯的,那么我们希望找到w从而 s=wTx ,使得 s 之间的相互独立就可以恢复出s了,我将在后面指出,这等价于最大化每个 s 的非高斯性。

采用独立成分分析方法(fastICA),得到矩阵W,A和ICs等独立成分结果(是否需要pca降维?)。

reeplot(prcomp(

4eb27628cc988bce33ff5e123c3b7e08.png

be9abbc8ec8edeec4702299a5c64dcca.png

谱聚类

谱聚类(spectral cluster),这里的谱指的是某个矩阵的特征值,该矩阵是什么,什么得来的,以及在聚类中的作用将会在下文解一一道来。谱聚类的思想来源于图论,它把待聚类的数据集中的每一个样本看做是图中一个顶点,这些顶点连接在一起,连接的这些边上有权重,权重的大小表示这些样本之间的相似程度。同一类的顶点它们的相似程度很高,在图论中体现为同一类的顶点中连接它们的边的权重很大,不在同一类的顶点连接它们的边的权重很小。于是谱聚类的最终目标就是找到一种切割图的方法,使得切割之后的各个子图内的权重很大,子图之间的权重很小。

采用谱聚类方式对所有矩阵的列进行聚类,得到两到三种不同的聚类结果(如何)。

谱聚类聚成2个类别

sc <- spec

bf12aec314ff13b766f95a90e22ec8fd.png

1522366436d7b6c2194a7846d7463221.png

聚成3个类别

b7263efddaa0b2d7ad1b36189dc82643.png

SVR模型

SVR是支持向量机(SVM)的重要应用分支。通过SVR算法,可以找到一个回归平面并使得一个集合中的所有数据距离该平面的距离最短。

使用场景

SVR是一个回归模型,主要是用于拟合数值,一般应用于特征较为稀疏且特征数较少的场景。

例如,可以使用SVR回归模型来预测某个城市的温度。输入特征有很多,例如这个城市某个时期的平均温度、绿化程度、湖泊数量以及日期等。训练数据可以是一段时间内的城市温度。

对所有数据采用log标准化处理,然后对不同的类的训练集分别采用SVR模型训练,再用测试集得到测试结果

所需结果:

k个不同模式时间序列图(分属不同类的某个部门时间序列),表征不同类之间的差异与同类之内的相似.

pre=SVRModel

不同类测试集所采用SVR模型的不同参数(C,ε,σ)。

125c3f5451a85028a777fe1353f36fad.png

不同类测试集所采用SVR模型之后的预测结果(RMSE,MAD,MAPE,MPE),

  1. RMSE(test,yHat)
  2. ## [1] 0.1354805
  3. MAE(test,yHat)
  4. ## [1] 0.1109939
  5. MAPE(test,yHat)
  6. ## [1] 1.099158
  7. #MPE
  8.  
  9. ftsa::error(forecast =yHat, true = test, method = "mpe")
  10. ## [1] 1.099158

预测模型

预测模型加入时间序列向前1周,2周,3周,4周时的数据作为输入变量,采用不同聚类方式所得预测结果。

向前2周

37dc0acedcf82452556ff401b6e3e588.png

不同类测试集所采用SVR模型之后的预测结果(RMSE,MAD,MAPE,MPE)

  1. RMSE(test,yHat)
  2. ## [1] 0.09735726
  3. MAE(test,yHat)
  4. ## [1] 0.0655883
  5. MAPE(test,yHat)
  6. ## [1] 0.6538239
  7. #MPE
  8. ftsa::error(forecast =yHat, true = test, method = "mpe")
  9. ## [1] 0.467259

关于分析师

509b2029a40d348ede9cc234f6c39cb4.png

在此对Miaoqiao Wang对本文所作的贡献表示诚挚感谢,他完成了统计学专业的硕士学位,专注机器学习、回归分析、数据采集等。擅长R语言、Python、SPSS。


decfe44143d78c992ebf3a16b230d304.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《【视频】R语言支持向量回归SVR预测水位实例讲解》。

3cdf91e3a7a2699e29cff60bfa1cb1be.jpeg

17e78d62b2d6c07da8ef3ac57b708b3f.png

点击标题查阅往期内容

高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数

分类回归决策树交互式修剪和更美观地可视化分析细胞图像分割数据集

实现广义相加模型GAM和普通最小二乘(OLS)回归

贝叶斯线性回归和多元线性回归构建工资预测模型

Python支持向量回归SVR拟合、预测回归数据和可视化准确性检查实例

逻辑回归(对数几率回归,Logistic)分析研究生录取数据实例

广义线性模型glm泊松回归的lasso、弹性网络分类预测学生考试成绩数据和交叉验证

非线性回归nls探索分析河流阶段性流量数据和评级曲线、流量预测可视化

特征选择方法——最佳子集回归、逐步回归

线性回归和时间序列分析北京房价影响因素可视化案例

贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据

用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像

PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化

R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据

Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析

R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化

R语言基于树的方法:决策树,随机森林,Bagging,增强树

R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

spss modeler用决策树神经网络预测ST的股票

R语言中使用线性模型、回归决策树自动组合特征因子水平

R语言中自编基尼系数的CART回归决策树的实现

R语言用rle,svm和rpart决策树进行时间序列预测

python在Scikit-learn中用决策树和随机森林预测NBA获胜者

python中使用scikit-learn和pandas决策树进行iris鸢尾花数据分类建模和交叉验证

R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析

R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类

R语言ISLR工资数据进行多项式回归和样条回归分析

R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量

R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测

R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化

如何用R语言在机器学习中建立集成模型?

R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测

在python 深度学习Keras中计算神经网络集成模型

R语言ARIMA集成模型预测时间序列分析

R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者

R语言基于树的方法:决策树,随机森林,Bagging,增强树

R语言基于Bootstrap的线性回归预测置信区间估计方法

R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间

R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化

Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析

R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析

R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化

Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线

matlab使用分位数随机森林(QRF)回归树检测异常值

d35c1866498c65cf7991975c4299e358.png

ed65304a1fa1b89aaa5df40ce6fd1dd8.jpeg

1a16214ccfb1ab736761a0f6c6e2a399.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/505555
推荐阅读
相关标签
  

闽ICP备14008679号