支持向量机建模工具很多,但当前应用最广泛的是由台湾大学林智仁教授等开发设计的LIBSVM 软件包。LIBSVM 不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其他操作系统上应用;该软件对SVM 所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验 (Cross Validation)的功能。该软件可以解决支持向量机回归、分类等问题,包括基于一对一算法的多类模式识别问题。目前,LIBSVM 拥有C、Java、Matlab、C#、Ruby、Python、R、Perl、Common LISP、Labview 等数十种语言版本。最常使用的是Matlab版本。
LIBSVM 软件包功能十分强大,但软件包核心函数只有svmtrain ()和svmpredict(),参数设置也比较简单,因此可以很方便地实现支持向量机建模操作。下文将简介以上两个核心函数的调用格式及参数设置。
模型训练函数svmtrain (),其调用格式为
model=svmtrain(label,attribute,′-c 2-g 1′);
模型的输出函数为model,是支持向量机的建模成果,反映了输入、输出数据之间的对应关系。函数的输入参数可分为三组,分别为label、attribute和单引号内的模型参数。其中attribute为样本属性,label则为样本标签,以基于NWP 的风电功率预测为例,风速、风向等模型输入数据即为样本属性,而输入数据相对应的风电功率数据即为样本标签。单引号内为参数设置,重要的参数简介如下:
(1)-s支持向量机功能类型(默认值为0)。
0:C-SVC (用于样本分类);
1:nu-SVC (用于样本分类);
2:one-class SVM;
3:epsilon-SVR (用于样本回归);
4:nu-SVR (用于样本回归)。
(2)-t核函数类型(默认值为2)。
0:线性核函数;
1:多项式核函数;
2:径向基核函数;
3:sigmoid核函数。(www.xing528.com)
(3)-d degree:核函数中的degree设置 (针对多项式核函数)(默认3)。
(4)-g r (gama):核函数中的gamma函数设置 (针对多项式/径向基/sigmoid核函数)(默认1/k)。
(5)-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)(默认0)。
(6)-c cost:设置C-SVC,epsilon-SVR和nu-SVR 的参数 (损失函数)(默认1)。
(7)-m cachesize:设置cache内存大小,以MB为单位 (默认40)。
(8)-e eps:设置允许的终止判据 (默认0.001)。
(9)-h shrinking:是否使用启发式,0或1 (默认1)。
(10)-wi weight:设置第几类的参数C为weight*C (C-SVC中的C)(默认1)。
(11)-v n:n-fold交互检验模式,n为fold的个数,必须大于等于2。
模型分类或预测函数svmpredict (),其调用格式如下:
[Plabel,acc]=svmpredict(Tlabel,Tattribute,model);
此函数的输入参数也有3组,其中model是使用svmtrain ()函数对输入、输出数据学习后得到的模型,而Tlabel、Tattribute则是测试集的标签和属性。以风电功率预测为例,预测日的功率和NWP参数即为Tlabel和Tattribute,Tlabel可缺省。输出参数有2组,其中Plabel是模型的分类或预报结果,acc则为分类或预报准确率,如果Tlabel缺省,则acc也随之缺省。
支持向量机类型主要包括分类问题、回归问题和概率密度问题,而风电功率预测可以归类为机器学习的回归问题。使用基于Matlab平台的LIBSVM 软件包实现支持向量机建模。同样以2009年11月1—30日,时间分辨率为30min的风速、风向的正弦值、余弦值作为支持向量机输入,同时段的风电场发电负荷作为向量机输出,选用径向基核函数,使用向量机对数据进行学习。完成训练过程后,使用2009年12月1日的NWP数据作为输入,预测同时段发电功率,如图3-13所示。
图3-13 支持向量机预报效果图
从图3-13可知,与BP神经网络相比,支持向量机预报结果稍好,与实际数据吻合度更高。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。