本文主要是介绍阅读《基于离群点检测和PSO-BP的超短期风速预测》的感想,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
阅读《基于离群点检测和PSO-BP的超短期风速预测》的感想
哇哇哇!感觉看了一个世纪那么久的水电站、电网了,终于有个新领域了。期待PSO怎么还能跟神经网络一起用的。
摘要的阅读
1、基于距离和统计学的离群点检测?
2、分组剔除数据中的异常值,怎么分组?根据每次实验分组?
3、小波阈值去噪算法?
4、使用粒子群算法优化后的BP,怎么改进的?
5、改进的离群点检测和小波阈值去噪算法降低了风速数据的波动性和随机性,为何?
6、这次的对比模型是什么?是BP和PSO?
英文摘要
离群点检测是:outlier detection
电话邮箱:(籍贯重庆?17784457830,chenggpower@126.com)
引言部分
首先是知道了风速的预测是一个研究领域,对于风速的预测难点在于风速具有随机性和波动性。所以研究着眼的角度在于两个方面。一个是如何去消除它的波动性和随机性,保证数据是可靠的;另一个是用什么预测模型。
以前的研究已经给出了两种方向的解决的基本的预测方法
对于噪声数据的处理,也就是对于风速数据的预处理:小波变换、经验模态分解。
对于风速的预测:时间序列模型、支持向量机SVM、人工神经网络ANN
而BP在这里作为预测模型使用的突出作用是:BP的误差反向传播过程
风速数据的分组处理
此分组方法很值得学习,对比之前我的队伍不知在干嘛的数据预处理,这个方法很值得学习。
记录这段数据预处理的逻辑如下
数据总量 | 数据来源 |
---|---|
采样时间间隔 | 分组分为几组 |
分组的编号为什么 | 每组数据几个用来训练、几个用来预测 |
最后是最最最精华的部分把这些数据点按照刚刚上面阐述的,用图像反映。如下
随后进行的是对于风速数据的基于3σ原则的剔除。分为两个步骤。此过程非常值得好好探究,我认为对于数模的数据处理具有相当大的指导意义。
第一步
首先介绍数据的离群点的定义,也就是引入3σ原则,告诉读者:风速的分布一定是正态分布(实际上这篇论文并没有说明白是正态分布而不是泊松分布等其他的分布),那么既然是正态分布,符合正态分布的值出现在分布末端的概率就很小,所以认为不在aσ(这里介绍的时候很聪明,没有说用的就是3σ原则),而是说,离群点检测结果取决于a的大小。(但是依然还有有一个小小的问题,在于后面也并没有说清楚,到底这篇文章用的a是多少)
第二步
介绍把距离和离群点检测如何结合起来。也就是,风速是一个个的离散的数据,我们要判断的不是它自己这个速度是不是符合自然规律的正态分布,而是需要判断在我们测量得到的这一组数据中,这个数据是不是偏离了我的数据范围。所以我们需要的是对于风速之间的差值也就是序列X的领域半径k内的距离的一个新序列,检测这个新的距离序列有没有某一些值不在我们认可的区间范围以内。(这篇文章没有说清楚到底它取的这个k是多大)
数学表述如下:(关于这个公式的代码实现,我想了想,直接用abs函数和一个sum函数就行了,然后用一下统计学正态分布的功能就能实现)
第三步
说明一下如果是直接对于上面预处理第一步分组的三个序列进行检验,那么只能把全局不符合的点查出来,但是这个风速数据不仅是有全局不符合的离群点,它更多的是“由于认为记录错误以及风速的多变”的离群点也需要检测出来,所以就需要对于这个分组进行进一步分组,对于每一个小的分组进行距离的正态分布检验,最后还是巧妙的使用图像来反映这个结果
整个预处理过程的文字放在下面
最后这一句话接的是图像见下……
对于这个k的取值还是有一些疑惑,领域半径k究竟取得是多少,难道是按照分组来算,每48个数据一组,那么k取值48?
以及对于究竟是几σ原则没说清楚。
小波阈值去噪
这个板块着实写的是太粗略了,愣是没搞懂你究竟是怎么去噪的。稍后看参看文献13、14究竟算法原理是个啥。但是从文章连贯性上讲,在对于结果的呈现还是一如既往的三个图像,这比较直观。
查过文献之后发现其实很简单
就是一个函数,这个函数有去噪功能,引文是把这个去噪的功能用在了BP的隐含层上又计算了一下。摘录引文如下:
重点关注:
全部:
PSO-BP
先把这个算法图放上来。注意看标识的算法的执行顺序的逻辑。
“初始化粒子群的参数”
对应于PSO的这个部分
上面这一段未完的部分:最大迭代次数100次,c1=2.0,c2=1.0
也就是对于参数进行设置,这次的参数设置有些令我意外。按理来说,c2的取值从来没有见过这么小的。都是在2.0附近徘徊,第一次见到这样的c2
但是不理解为什么对于权重没有给明白究竟是多少?按理说往常都会给的
确定网络结构
对于这个风速的问题,很显然不需要过于复杂的其他的研究方法,直接采用一步预测法(利用过去 i 个时刻的风速数据作为输入来预测下一时刻风速)就行了。网络结构:输入层节点数为过去 i 个时刻的风速个数,隐含层节点数为2i + 1,输出节点数为 1;
获取局部、全局最优
这就是我们使用PSO对于BP做的最最最核心的事情了。也就是,往往我们直接在matlab调BP的参数的时候都是自己根据经验规律去调,但是如果现在用PSO直接搜索出来,那么就可以保证得到的结果最好了。
原文:
之后的事情就是我们习以为常的训练网络等等了。
结果分析
a的初始确定
之前对于a取值的疑问,这个板块写了,是3
k的确定
对于领域半径k的取值,这里写了是[1,2,…,6] (结合后文来看,他的意思其实是,它也不清楚取几比较好,所以先给一个暂定的范围1-6,然后稍后对于这六个值都进行试验检验。通过后面的统计指标进行判断究竟取值为几比较好)
结果是这样的:
对于结果的好坏的呈现,使用的统计学手段,也就是常见的MAE、MAPE、RMSE三个量进行呈现。
一个重要关注点,这里做统计之前进行了50次独立重复试验,然后对于这50次试验的结果进行三个误差指标的统计
a最终的差异化确定
在确定了k的差异化取值之后,(3,3,6)之后,接着确定a的取值,(因为对于前面确定k的时候,是用的初始设定的a的取值3,但是很明显在这个k的取值出来之后,k是差异化的,那么就会有怀疑,究竟a取3对不对,所以在k取值为3,3,6固定的情况下,对于a的取值进行一下确定)
也就有了对于a在2-3.2的三个统计误差以及对照组不设置离群点的误差的统计,然后确定各段最合适的a。
注意依然是50次统计下的结果分析,以及格外注意对于这个过程的实际意义的表述
结果是这样的:
将确定好的模型和其他模型进行对比
对比对象:(这次的对比是我第一次见到如此复杂的对比,但是看着很像高中的实验,不同的对照组证明的是每一个环节的必需性)ps:第一排就是本文的方案
这次的整个对比的结果分析过程都非常值得学习,尤其是对于三个统计学指标的结果解读,非常具有借鉴意义。需要好好研究
不同模型对于100个预测集的预测图像的对比分析
原文:
对比对象 | 区别 | 对应的模型图位置 | 图像/数据特征 |
---|---|---|---|
OD-PSO-BP与我们的模型 | 小波阈值去噪减少了风速序列的噪声信号 | 对应于对比模型第二排,确实没有小波过程(可认为设定它就是为了验证小波是必需的) | 图像上可以看到毛刺更大 |
其他三个有小波的模型-OD-PSO-BP | 其他三个对比模型的三个统计数据都比OD-…要小 | 对应于对比模型有无小波过程,但是去噪都做过了 | 图像看不到误差,主要是利用下面这张表的横排之间的比较数据说话 |
WTD-PSO-BP与我们的模型 | 我们的模型跟真实值的那条线更加贴近 | 对应于对比模型的第三排,做了小波,但是有无离群点检测 | 图像上是与真实值那条线更加贴合 |
OD-WTD-BP、OD-WTD-Elman与我们的模型 | 我们的模型跟真实值的那条线更加贴近 | 对应于对比模型的第四排和第五排(只有在PSO-BP环节的不同,一个是BP,另一个对照是Elman) | 图像上是与真实值那条线更加贴合 |
ARIMA与我们的模型 | 这个对照项明显只是为了说明ARIMA是管线性的,这个属于非线性 | 这个对应于最后一排 | 直接给结论:“和 ARIMA 相比,BP 神经网络在处理非线性问题上呈现出更好的效果。”图上关于这个看不出来什么。 |
不同模型对于100个预测集的三相误差指标对比分析(横向、纵向)
原文:(马赛克的地方是结语,不用看)
对比方式 | 直观表现 | 分析结果 | 对比区域示意图 | 统计指标原理 |
---|---|---|---|---|
横向对比 | X1序列预测结果的MAPE最大 | X1序列的预测结果较差 | 图1 | MAPE反映总体平均性能 |
横向对比 | X1序列预测结果的MAE最小 | X1预测误差值较小 | 图2 | MAE反映预测误差 |
横向对比 | X1序列预测结果的RMSE最小 | X1预测分散程度最小 | 图3 | RMSE反映预测值分散程度 |
结语
最后这一段明显是为了迎合这个专栏的主题“实验室研究与探索”
这篇关于阅读《基于离群点检测和PSO-BP的超短期风速预测》的感想的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!