我们被客户要求撰写关于气象集成预报技术的研究报告,包括一些图形和统计输出。在实际应用中,对每个具体的问题,各种预报方法得出的结果通常是不一致的,因而不知道如何将它们统一起来。因此需要采用一种较好的处理方法,把不同预报方法对同一要素的多种预报结果综合在一起,从而得出一个优于单一预报方法的预报结论,这就是预报方法的集成问题。
本文分析了传统的基于加权的集成预报方法及其在气象预测应用中存在的问题,在此基础上提出了一种新的基于数据挖掘的集成预报方法,该方法选用BP人工神经网络建立集成预报分类器,对文中BP人工神经网络、多元回归、SVM、决策树模型四种子预报方法的预报结果进行集成和综合。
基于数据挖掘的集成预报方法利用从子预报方法中筛选的训练集进行训练,得到集成预报分类器;该集成预报分类器可以根据环流因子的输入,直接得到一种最优子预报方法,然后利用得到的最优子预报方法去预测,将最优子预报方法的预报结果作为集成预 报的预报结果。
实验数据集描述
实验使用的输入数据是环流因子,是由国家气候中心气候系统诊断预测室再处理资料,资料数据全都为整型。
环流因子数据
30年降水数据
本文介绍了四种常见的气象子预报方法:BP人工神经网络、多元回归、SVM、决策树模型,并通过实际的数据集进行预报检验。从实验结果可以得出,对于不同的预报环境和预报样本,并没有哪一种子预报方法的预报结果能够保证始终是最优的。
环流因子=read.csv("环流因子.csv") 降水数据=read.csv("30年降水数据.csv")
转换降水数据
y=0 for(i in 2:ncol(降水数据)){ y=c(y,降水数据[,i]) 环流因子=环流因子[1:length(yy),] datanew=data.frame(降水数据=yy,环流因子[,-1])
多元回归
model=lm(降水数据~.,data=datanew)
plot(datanew[,2:1]) abline(model)
点击标题查阅往期内容
ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
01
02
03
04
svm支持向量机
现在我们在训练集上使用来训练线性SVM
## ## ## Parameters: ## SVM-Type: eps-regression ## SVM-Kernel: radial ## cost: 1 ## gamma: 0.01351351 ## epsilon: 0.1 ## ## ## Number of Support Vectors: 107
绘制拟合图
points(datanew[,2], predictedY, col = "red", pch=4)
mse <- function(error) { sqrt(mean(error^2)) } ## [1] 599.4382
决策树
绘制决策树
## Variables actually used in tree construction: ## [1] X.19 X.30 X.57 X.72 X.73 ## ## Root node error: 328275991/372 = 882462 draw.tree(CARTmodel)
根据cp值对决策树进行剪枝
cable[which.min(CARTmodel$cptable[,"xerror"]),"CP"]
对数据进行预测
plot(tree.pred, datanew.test$降水数据 ) abline(0,1)
神经网络
y=datanew$降水数据 # y<-data.frame((y-min(y))/(max(y)-min(y))) names(y)<-'y' mod1<-nnet(datanew summary(mod1) ## a 75-10-1 network with 771 weights ## options were - linear output units ## b->h1 i1->h1 i2->h1 i3->h1 i4->h1 i5->h1 i6->h1 i7->h1 i8->h1 ## -0.26 0.53 -0.19 0.00 -0.39 -0.57 0.40 -0.05 0.54 ## i9->h1 i10->h1 i11->h1 i12->h1 i13->h1 i14->h1 i15->h1 i16->h1 i17->h1 ## 0.57 -0.51 0.53 0.66 -0.18 -0.15 0.36 -0.67 -0.54 ## i18->h1 i19->h1 i20->h1 i21->h1 i22->h1 i23->h1 i24->h1 i25->h1 i26->h1 ## h9->o h10->o ## 47.66 55.81
模型集成
在实际应用中,对每个具体的问题,各种预报方法得出的结果通常是不一致的,因而不知道如何将它们统一起来。一般地,每个具体预报方法的预报思想不同,其适应的具体环境也就不同,得到的预报结果的准确程度也不相同,对某类数据有较好预报结果的方法,对其它数据不一定有较好结果。因此需要采用一种较好的处理方法,把不同数值模式对同一要素的多种预报结果综合集成在一起,从而得出一个优于单一预报方法的预报结论,这就是预报方法的集成问题。
尽管常用的集成预报方法有回归集成、平均集成、多数表决和加权集成预报方法等,然而这些集成预报方法本质上属于一种基于加权的集成方法。
本文方法的大致思想如下:以各子预报方程的历史拟合样本作为神经网络集成预报模型学习矩阵输入,相应的预报量序列作为学习矩阵的期望输出。只是确定权值的方式是不断地进行学习训练,权值存在于复杂的人工神经网络结构中,并不是线性和容易理解的。最后,把该子预报方法的预报结果作为集成预报方法的预报结果。
使用神经网络对训练结果进行集成
mod1<-nnt(trainerror,y,sizout=T) ## # weights: 61 ## initial value 526570419.869292 ## iter 10 value 119410102.980870 ## iter 20 value 25370475.287456 ## final value 25370458.492646 ## converged summary(mod1) ## a 4-10-1 network with 61 weights ## options were - linear output units ## b->h1 i1->h1 i2->h1 i3->h1 i4->h1 ## 0.37 148.56 162.50 -2.06 2.30 ## b->h2 i1->h2 i2->h2 i3->h2 i4->h2 ## 0.48 -56.65 46.85 2.23 -1.23 ## b->h3 i1->h3 i2->h3 i3->h3 i4->h3 ## -0.11 7.56 15.11 -1.18 1.41 ## b->h4 i1->h4 i2->h4 i3->h4 i4->h4 ## 0.42 -14.15 -11.55 1.49 -1.12 ## b->h5 i1->h5 i2->h5 i3->h5 i4->h5 ## -0.34 57.24 79.60 -176.40 6.91 ## b->h6 i1->h6 i2->h6 i3->h6 i4->h6 ## -0.44 -0.22 6.17 0.82 -0.01 ## b->h7 i1->h7 i2->h7 i3->h7 i4->h7 ## 0.03 -0.14 -0.61 0.04 -0.14 ## b->h8 i1->h8 i2->h8 i3->h8 i4->h8 ## -0.34 65.01 -72.91 -10.22 9.67 ## b->h9 i1->h9 i2->h9 i3->h9 i4->h9 ## 0.20 -1.31 14.80 0.90 -0.73 ## b->h10 i1->h10 i2->h10 i3->h10 i4->h10 ## -0.46 -2.63 -23.62 -0.60 1.51 ## b->o h1->o h2->o h3->o h4->o h5->o h6->o h7->o h8->o ## 368.20 -340.26 -4.79 4963.64 -158.47 517.21 24.37 -5.77 23.41 ## h9->o h10->o ## 30.60 336.40
绘制拟合数据