高美卿,劉艷萍,連琨
(河北工業(yè)大學(xué)信息工程學(xué)院,天津300401)
在風(fēng)力發(fā)電系統(tǒng)中,隨著風(fēng)速的變化,要使輸出功率最佳,需對(duì)槳距角進(jìn)行預(yù)測(cè),從而得到某特定風(fēng)速下的最佳槳距角。支持向量機(jī)(Support Vector Machines,SVM)是根據(jù)統(tǒng)計(jì)學(xué)理論中最小化原則提出來(lái)的,由有限數(shù)據(jù)得到的判別函數(shù),對(duì)獨(dú)立的測(cè)試樣本能夠得到較小的誤差,包括支持向量分類機(jī)(Support Vector Classification,SVC)和支持向量回歸機(jī)(Support Vector Regression,SVR)。此文用的就是SVR算法,其目的是構(gòu)造一個(gè)回歸估計(jì)函數(shù),將非線性函數(shù)的回歸估計(jì)問(wèn)題轉(zhuǎn)化為一個(gè)具有線性等式約束和線性不等式約束的二次規(guī)劃問(wèn)題,可以得到唯一的全局最優(yōu)解。此最優(yōu)解,在預(yù)測(cè)槳距角中就是最佳槳距角[1]。
現(xiàn)有的預(yù)測(cè)槳距角算法有基于BP算法和基于LV算法的神經(jīng)網(wǎng)絡(luò),BP算法收斂速度慢、精度低,LV算法泛化能力差,因此,能改變現(xiàn)有算法不足的支持向量機(jī)算法應(yīng)運(yùn)而生。SVM方法最早是針對(duì)模式識(shí)別問(wèn)題提出的,隨著對(duì)ε不敏感損失函數(shù)的引入,現(xiàn)已推廣應(yīng)用到非線性回歸估計(jì)和曲線擬合中,得到了用于曲線擬合的回歸型支持向量機(jī)SVR,表現(xiàn)出很好的學(xué)習(xí)效果。
標(biāo)準(zhǔn)的SVR算法,分為線性和非線性兩種。SVR的基本思想是:將輸入樣本空間非線性變換到另一個(gè)特征空間,在這個(gè)特征空間構(gòu)造回歸估計(jì)數(shù),這種非線性變換是通過(guò)定義適當(dāng)?shù)暮撕瘮?shù)K(xi,xj)來(lái)實(shí)現(xiàn)的。其中K(xi,xj)=φ(xi)·φ(xj),φ(x)為某一非線性函數(shù)[2]。
假設(shè)給定了訓(xùn)練數(shù)據(jù),{(xi,yi),i=1,2,...,n},xi為學(xué)習(xí)樣本,yi為對(duì)應(yīng)的目標(biāo)值。定義線性ε不敏感損失函數(shù)為:
即如果目標(biāo)y值和經(jīng)過(guò)學(xué)習(xí)構(gòu)造的回歸估計(jì)函數(shù)f(x)的值之間的差別小于ε,則損失等于0。
假設(shè)非線性情形的回歸估計(jì)函數(shù)為:
利用拉格朗日乘子法來(lái)求解這個(gè)約束最優(yōu)化問(wèn)題,因此構(gòu)造拉格朗日函數(shù)
由最優(yōu)化理論,將Lp分別對(duì)w、b、ξi、ξ*i求偏微分并令其為0,得:
將式(5)代入式(4),得到對(duì)偶最優(yōu)化問(wèn)題
支持向量(SV)就是使得αi-α*i≠0的部分參數(shù)。通過(guò)學(xué)習(xí)訓(xùn)練得到的回歸估計(jì)函數(shù)為
可得
其中NNSV為標(biāo)準(zhǔn)支持向量數(shù)量。由式(7)和式(8)知,盡管通過(guò)非線性函數(shù)將樣本數(shù)據(jù)映射到具有高維甚至無(wú)窮維的特征空間,但在計(jì)算回歸估計(jì)函數(shù)時(shí)并不需要顯式計(jì)算該非線性函數(shù),而只需計(jì)算核函數(shù),從而避免高維特征空間引起維數(shù)災(zāi)難問(wèn)題[3]。
要使風(fēng)速改變時(shí),槳距角隨之改變的值為最佳槳距角,就要選擇合適的學(xué)習(xí)樣本,用來(lái)訓(xùn)練和檢驗(yàn)。由于自然界風(fēng)速處于不斷變化中,較短時(shí)間3~4 s內(nèi)的風(fēng)速上升或下降總是不斷發(fā)生,因此變槳距機(jī)構(gòu)也在不斷動(dòng)作,在轉(zhuǎn)子電流控制器的作用下,將槳距角的實(shí)際變化情況選做樣本。共選取128組樣本數(shù)據(jù),其中學(xué)習(xí)樣本80個(gè),用來(lái)檢驗(yàn)的預(yù)測(cè)樣本48個(gè)。選擇的訓(xùn)練樣本和測(cè)試樣本形式如下表1所示。
并將此樣本存為.txt格式,以便于在Matlab仿真時(shí)的數(shù)據(jù)輸入。
表1 樣本形式Tab.1 Format of sample
2.2.1 S VR函數(shù)
該函數(shù)根據(jù)訓(xùn)練樣本設(shè)計(jì)出最優(yōu)回歸函數(shù),并找出支持向量。該函數(shù)有6個(gè)參數(shù),分別是訓(xùn)練樣本的輸入、訓(xùn)練樣本的輸出、核函數(shù)、懲罰因子、損失函數(shù)和不敏感系數(shù)。輸出參數(shù)為支持向量個(gè)數(shù)、拉格朗日乘子及偏置量[4]。即
[nsv,beta,bias]=svr(X,Y,ker,C,loss,ε);
X——訓(xùn)練樣本的輸入,在本文中就是樣本中用于學(xué)習(xí)和檢驗(yàn)的風(fēng)速值。
Y——訓(xùn)練樣本的輸出,就是樣本中對(duì)應(yīng)的槳距角。
ker——核函數(shù),要使誤差小需選擇適當(dāng)?shù)暮撕瘮?shù),這里選擇的是rbf核函數(shù)。
C——懲罰因子,C取的過(guò)小,訓(xùn)練誤差變大,系統(tǒng)的泛化能力變差,C取的過(guò)大,也會(huì)導(dǎo)致系統(tǒng)的泛化能力變差。
loss——損失函數(shù)。
ε——不敏感系數(shù),ε取的小,回歸估計(jì)精度高,但支持向量數(shù)增多,ε取的大,回歸估計(jì)精度降低,但支持向量數(shù)少。
nsv——支持向量的個(gè)數(shù)。
beta——拉格朗日乘子。
Bias——偏置量。
2.2.2 輸 出函數(shù)svroutput
該函數(shù)利用svr函數(shù)得到的最優(yōu)回歸函數(shù)來(lái)計(jì)算測(cè)試樣本的輸出,并返回。
2.2.3 s vrplot
該函數(shù)用來(lái)繪制出最優(yōu)回歸函數(shù)曲線,并標(biāo)識(shí)出支持向量。
2.2.4 s vrerror
該函數(shù)用來(lái)顯示根據(jù)最優(yōu)回歸函數(shù)計(jì)算的測(cè)試樣本的擬合誤差。
2.2.5 核 函數(shù)的選擇
常用的核函數(shù)有4種:線性核函數(shù)(linear)、多項(xiàng)式核函數(shù)(polynomial)、徑向基核函數(shù)(RBF)和Sigmoid核函數(shù)。在一般情況下,首先考慮的是RBF,主要基于以下原因:1)RBF可以將樣本映射到一個(gè)更高維的空間,可以處理類別標(biāo)簽和特征之間的關(guān)系是非線性時(shí)的樣本。2)與多項(xiàng)式核函數(shù)相比,RBF需要確定的參數(shù)要少,核函數(shù)參數(shù)的多少直接影響模型的復(fù)雜度。3)對(duì)某些參數(shù),RBF與sigmoid核函數(shù)具有相似的性能。
衡量SVR的最小誤差和泛化能力準(zhǔn)則,并優(yōu)化該準(zhǔn)則,本文選擇了RBF核函數(shù)[5]。
2.3.1 回 歸擬合
在Matlab編程實(shí)現(xiàn)函數(shù)的回歸擬合,并檢驗(yàn)數(shù)據(jù)。主函數(shù)程序段如下:
m=importdata('e:\train.txt');
ker='rbf';
C=10;
e=0.05;
global p1;
p1=5;
loss='einsensitive';
trnX=m(:,2);
trnY=m(:,3);
[nsv,beta,bias]=svr(trnX,trnY,ker,C,loss,e);plot(trnX,trnY);
xlabel('風(fēng)速V/mps');
ylabel('槳距角A/°');
n=importdata('e:\test.txt');
tstX=n(:,2);
tstY=n(:,3);
TstY=svroutput(trnX,tstX,ker,beta,bias);
err=svrerror(trnX,tstX,tstY,ker,beta,bias,loss,e);
figure
plot(1:length(tstY),tstY,'r+:',1:length(TstY),TstY,'bo:')
title('+為真實(shí)值,o為預(yù)測(cè)值');
xlabel('樣本N');
ylabel('槳距角A/°');
2.3.2 函 數(shù)回歸擬合并檢驗(yàn)的仿真結(jié)果
應(yīng)用Matlab支持向量機(jī)工具箱編程實(shí)現(xiàn)系統(tǒng)的學(xué)習(xí)訓(xùn)練過(guò)程,由80個(gè)學(xué)習(xí)樣本訓(xùn)練而得到的函數(shù)擬合結(jié)果如下圖1所示。
利用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型可以對(duì)槳距角進(jìn)行預(yù)測(cè),只要輸入即時(shí)風(fēng)速,就可確定出相應(yīng)槳距角大小。之前利用BP算法的均方誤差為0.290 3,LM算法的均方誤差為0.278 1。圖2為由SVR算法對(duì)48個(gè)樣本值檢驗(yàn)的結(jié)果。可知,預(yù)測(cè)值與實(shí)際槳距角值基本一致[6]。擬合誤差err=0.175 6。
圖2 樣本檢驗(yàn)結(jié)果Fig.2 Test result from samples
文中介紹了支持向量機(jī)的回歸算法理論,用SVR算法代替之前的BP算法和LV算法,研究了風(fēng)力發(fā)電系統(tǒng)中隨風(fēng)速變化槳距角的值,由函數(shù)擬合理論對(duì)槳距角進(jìn)行了預(yù)測(cè)并檢驗(yàn),由于支持向量機(jī)采用結(jié)構(gòu)最小化原則代替經(jīng)驗(yàn)經(jīng)驗(yàn)最小化原則,采用適當(dāng)?shù)暮撕瘮?shù),同比其他算法使擬合誤差達(dá)到了最小,大大提高了變槳距系統(tǒng)的精度和效率。將該算法應(yīng)用于DSP芯片上稍作改進(jìn),加上外圍電路的設(shè)計(jì),即可應(yīng)用在風(fēng)電系統(tǒng)的控制領(lǐng)域。
[1]張學(xué)工.關(guān)于統(tǒng)計(jì)學(xué)習(xí)理論與支持向量機(jī)[J].自動(dòng)化學(xué)報(bào),2000,26(1):32-42.
ZHANG Xue-gong.About statistical learning theory and support vector machine(SVM)[J].Journal of Automation,2000,26(1):32-42.
[2]王定成.支持向量機(jī)回歸與控制的研究[D].合肥:中國(guó)科學(xué)技術(shù)大學(xué),2003.
[3]杜樹(shù)新,吳鐵軍.用于回歸估計(jì)的支持向量機(jī)方法[J].系統(tǒng)仿真學(xué)報(bào),2003,15(11):1580-1585.
DU Shu-xin,WU Tie-jun.For regression estimation of support vector machine(SVM)method[J].Journal of System Simulation,2003,15(11):1580-1585.
[4]Collobert R,Bengio S.A support vector machine approach to decision trees[R].Rensselaer Polytechinic Institute,Troy,NY:R.P.I Math Report,1997:97-100.
[5]Smits G F,Jordaan E M.Improved SVM regression using mixtures of kernels[C]//Proceedings of the 2002 International Joint Conference on Neural Network,Hawaii:IEEE,2002:2785-2790.
[6]李大海,李天石,李宗斌.一種多率采樣的在線支持向量回歸及應(yīng)用[J].西安交通大學(xué)學(xué)報(bào),2010(3):15-18.
LI Da-hai,LI Tian-shi,LI Zong-bin.Support vector regression and application of more than one sampling rate online[J].Journal of Xi'an Traffic University,2010(3):15-18.