專利名稱:一種天氣預(yù)測方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及天氣預(yù)測、數(shù)據(jù)挖掘等技術(shù)領(lǐng)域。
背景技術(shù):
一、數(shù)據(jù)挖掘技術(shù)
隨著存儲設(shè)備和數(shù)據(jù)庫技術(shù)的發(fā)展,數(shù)據(jù)的存儲已經(jīng)不是問題,相反,人們已經(jīng)開始感到被大量的數(shù)據(jù)淹沒,因此,急需一種科學(xué)的方法將海量的數(shù)據(jù)轉(zhuǎn)化成對人們有實(shí)際意義的知識和規(guī)律,數(shù)據(jù)挖掘就是在這個(gè)背景下產(chǎn)生的技術(shù)。20世紀(jì)80年代末,數(shù)據(jù)挖掘作為新興的研究領(lǐng)域悄然出現(xiàn)。數(shù)據(jù)挖掘的研究目的是在大型數(shù)據(jù)集中發(fā)現(xiàn)那些隱藏的、人們感興趣的具有特定規(guī)律的信息。隨著數(shù)據(jù)挖掘的發(fā)展,這種技術(shù)被應(yīng)用在商業(yè)管理、政府辦公、科學(xué)研究和工程開發(fā)等眾多的領(lǐng)域中。一般來說,基本的數(shù)據(jù)挖掘流程如下所示
⑴定義問題清晰地定義出業(yè)務(wù)問題,確定數(shù)據(jù)挖掘的目的。⑵數(shù)據(jù)準(zhǔn)備數(shù)據(jù)準(zhǔn)備包括選擇數(shù)據(jù)一在大型數(shù)據(jù)庫和數(shù)據(jù)倉庫目標(biāo)中提取數(shù)據(jù)挖掘的目標(biāo)數(shù)據(jù)集;數(shù)據(jù)預(yù)處理一進(jìn)行數(shù)據(jù)再加工,包括檢查數(shù)據(jù)的完整性及數(shù)據(jù)的一致性、去噪聲,填補(bǔ)丟失的域,刪除無效數(shù)據(jù)等。⑶數(shù)據(jù)挖掘根據(jù)數(shù)據(jù)功能的類型和數(shù)據(jù)的特點(diǎn)選擇相應(yīng)的算法,在凈化和轉(zhuǎn)換過的數(shù)據(jù)集上進(jìn)行數(shù)據(jù)挖掘。⑷結(jié)果分析對數(shù)據(jù)挖掘的結(jié)果進(jìn)行解釋和評價(jià),轉(zhuǎn)換成為能夠最終被用戶理解的知識。(5)知識的運(yùn)用將分析所得到的知識集成到業(yè)務(wù)信息系統(tǒng)的組織結(jié)構(gòu)中去。二、神經(jīng)網(wǎng)絡(luò)算法
近年來,神經(jīng)網(wǎng)絡(luò)被廣泛運(yùn)用于時(shí)間序列分析和金融預(yù)報(bào),這是因?yàn)樯窠?jīng)網(wǎng)絡(luò)具有非常強(qiáng)的非線性函數(shù)逼近能力,克服了傳統(tǒng)處理方法對于數(shù)據(jù)方面的缺陷,使之在預(yù)測領(lǐng)域得到成功的應(yīng)用。神經(jīng)網(wǎng)絡(luò)是一種類似于大腦神經(jīng)突觸結(jié)構(gòu)并可以進(jìn)行信息處理的數(shù)學(xué)模型,它是對人腦的抽象、簡化和模擬,反映了人腦的基本特性。神經(jīng)網(wǎng)絡(luò)(圖I)同時(shí)也是一種運(yùn)算模型,由大量的節(jié)點(diǎn)(也稱為神經(jīng)元)和相互之間的加權(quán)連接構(gòu)成。每個(gè)節(jié)點(diǎn)代表一種特定的輸出函數(shù),稱為激勵(lì)函數(shù)(activation function)。每兩個(gè)節(jié)點(diǎn)間的連接都代表一個(gè)對于通過該連接信號的加權(quán)值,稱為權(quán)重 (weight),這相當(dāng)于神經(jīng)網(wǎng)絡(luò)的記憶。網(wǎng)絡(luò)的輸出則根據(jù)網(wǎng)絡(luò)的連接方式、權(quán)重值和激勵(lì)函數(shù)的不同而不同。而網(wǎng)絡(luò)自身通常都是對自然界某種算法或者函數(shù)的逼近,也可能是對一種邏輯策略的表達(dá)。神經(jīng)網(wǎng)絡(luò)主要解決數(shù)據(jù)挖掘的分類和回歸任務(wù),它可以找出輸入屬性和可預(yù)測屬性之間平滑連續(xù)的非線性關(guān)系。三、BP神經(jīng)網(wǎng)絡(luò)BP (Back Propagation)網(wǎng)絡(luò)是1986年由Rumelhart和McCelland為首的科學(xué)家小組提出,是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò),是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型之一。BP網(wǎng)絡(luò)能學(xué)習(xí)和存貯大量的輸入-輸出模式映射關(guān)系,而無需事前揭示描述這種映射關(guān)系的數(shù)學(xué)方程。它的學(xué)習(xí)規(guī)則是使用最速下降法,通過反向傳播來不斷調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,使網(wǎng)絡(luò)的誤差平方和最小。BP神經(jīng)網(wǎng)絡(luò)模型拓?fù)浣Y(jié)構(gòu)包括輸入層(input)、隱藏層(hide layer)和輸出層(output layer)。神經(jīng)網(wǎng)絡(luò)可以用作分類、聚類、預(yù)測等。神經(jīng)網(wǎng)絡(luò)需要有一定量的歷史數(shù)據(jù),通過歷史數(shù)據(jù)的訓(xùn)練,網(wǎng)絡(luò)可以學(xué)習(xí)到數(shù)據(jù)中隱含的知識。在你的問題中,首先要找到某些問題的一些特征,以及對應(yīng)的評價(jià)數(shù)據(jù),用這些數(shù)據(jù)來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。雖然BP網(wǎng)絡(luò)得到了廣泛的應(yīng)用,但自身也存在一些缺陷和不足,主要包括以下幾個(gè)方面的問題。首先,由于學(xué)習(xí)速率是固定的,因此網(wǎng)絡(luò)的收斂速度慢,需要較長的訓(xùn)練時(shí)間。對于一些復(fù)雜問題,BP算法需要的訓(xùn)練時(shí)間可能非常長,這主要是由于學(xué)習(xí)速率太小造成的,可采用變化的學(xué)習(xí)速率或自適應(yīng)的學(xué)習(xí)速率加以改進(jìn)。其次,BP算法可以使權(quán)值收斂到某個(gè)值,但并不保證其為誤差平面的全局最小值,這是因?yàn)椴捎锰荻认陆捣赡墚a(chǎn)生一個(gè)局部最小值。對于這個(gè)問題, 可以采用附加動量法來解決。再次,網(wǎng)絡(luò)隱含層的層數(shù)和單元數(shù)的選擇尚無理論上的指導(dǎo), 一般是根據(jù)經(jīng)驗(yàn)或者通過反復(fù)實(shí)驗(yàn)確定。因此,網(wǎng)絡(luò)往往存在很大的冗余性,在一定程度上也增加了網(wǎng)絡(luò)學(xué)習(xí)的負(fù)擔(dān)。最后,網(wǎng)絡(luò)的學(xué)習(xí)和記憶具有不穩(wěn)定性。也就是說,如果增加了學(xué)習(xí)樣本,訓(xùn)練好的網(wǎng)絡(luò)就需要從頭開始訓(xùn)練,對于以前的權(quán)值和閾值是沒有記憶的。但是可以將預(yù)測、分類或聚類做的比較好的權(quán)值保存。 回顧各種數(shù)據(jù)挖掘預(yù)測算法的發(fā)展,我們可以看到其推廣的瓶頸在于不同的算法需要不同的訓(xùn)練數(shù)據(jù)格式和特殊化的參數(shù)設(shè)置,而且其預(yù)測過程往往需要人為干預(yù)和設(shè)定,預(yù)測時(shí)需要提供大量的輔佐數(shù)據(jù),預(yù)測結(jié)果也不夠直觀,這對于算法的推廣和使用均十分不利。
發(fā)明內(nèi)容
為了克服現(xiàn)有技術(shù)中的缺陷。本發(fā)明提供一種基于BP神經(jīng)網(wǎng)絡(luò)的天氣預(yù)測方法, 包括以下步驟
步驟I、接收原始訓(xùn)練數(shù)據(jù)矩陣和訓(xùn)練時(shí)長參數(shù);
步驟2、初始化數(shù)據(jù),包括設(shè)定學(xué)習(xí)速率、期望誤差、訓(xùn)練的最大次數(shù)、慣性系數(shù)、隱含層和輸出層各神經(jīng)元輸出初值,根據(jù)原始數(shù)據(jù)動態(tài)得到矩陣行列數(shù)據(jù)PO ;
步驟3、獲取每列訓(xùn)練數(shù)據(jù)的最大值maxv(j)與最小值minv(j)后對數(shù)據(jù)進(jìn)行歸一化處理,使原始數(shù)據(jù)規(guī)范到O到I之間;
步驟4、根據(jù)原始訓(xùn)練數(shù)據(jù)得到訓(xùn)練樣本的輸入矩陣和輸出矩陣;
步驟5、隨機(jī)初始化權(quán)值矩陣wki和wi j, wki表示隱藏層到輸入層的權(quán)值矩陣,wij表示輸入層到隱藏層的權(quán)值矩陣;
步驟6、計(jì)算隱藏層各神經(jīng)元、輸出層各神經(jīng)元的輸出;
步驟7、計(jì)算每個(gè)輸出和隱藏神經(jīng)元計(jì)算輸出的誤差,反向傳播更新網(wǎng)絡(luò)中的權(quán)值; 步驟8、重復(fù)步驟6,直到滿足終止條件為止,該算法的終止條件為誤差小于期望誤差或訓(xùn)練次數(shù)大于最大設(shè)定值。
步驟9、根據(jù)訓(xùn)練后得到的權(quán)值矩陣和訓(xùn)練時(shí)的參數(shù),以最后一條實(shí)際數(shù)據(jù)作為初始輸入進(jìn)行預(yù)測,再將預(yù)測結(jié)果作為下一天的實(shí)際數(shù)據(jù)再次進(jìn)行預(yù)測,直到滿足預(yù)測天數(shù)參數(shù),預(yù)測過程同步驟6;
步驟10、將得到的預(yù)測結(jié)果矩陣進(jìn)行恢復(fù),即將歸一化后的值恢復(fù)到實(shí)際數(shù)值。一個(gè)非限制性的實(shí)施方式中,所述將歸一化后的值恢復(fù)到實(shí)際數(shù)值的方法為,Res (i, j) =PredictRes (j, i) * (maxv (j) -minv (j)) +minv (j),其中,PredictRes (j, i)表不未還原的預(yù)測結(jié)果,Res (i, j)表示已還原的預(yù)測結(jié)果。所述步驟3 中,歸一使用 p(i, j) = (p0(i, j) - minv (j)) / (maxv (j) - minv(j)); 其中P(i,j)為i行j列的歸一結(jié)果,P0(i,j)為第i行j列的歷史數(shù)據(jù),minv(j)為第j列的最小值,maxv(j)為第j列的最大值。一個(gè)優(yōu)選的實(shí)施方式中,所述原始訓(xùn)練數(shù)據(jù)為連續(xù)幾日的最高溫度和最低溫度, 所述預(yù)測時(shí)長為7天。另一個(gè)可選的實(shí)施方式中,步驟6中,隱藏層輸出計(jì)算公式為0=(ea-e_a)/ (ea+e_a),輸出層的輸出計(jì)算公式為0=1/(l+e_a),其中a表示神經(jīng)元的輸入值。步驟7中,誤差計(jì)算函數(shù)為
若為輸出神經(jīng)元,則誤差Erri = Oi (I — Oi) (Ti — Oi),
Oi是輸出神經(jīng)元i的輸出,Ti是該輸出神經(jīng)元的實(shí)際值;
若為隱藏神經(jīng)元,則誤差Erri = Oi (I — Oi) Σ J-ErrjWij,
Oi是隱藏神經(jīng)元i的輸出,該神經(jīng)元有j個(gè)到下層的輸出,所述Errj是神經(jīng)元j的誤差,Wij是這兩個(gè)神經(jīng)元之間的權(quán)值。所述調(diào)整權(quán)值函數(shù)為Wij = Wij + 1*ΕΓΓ^0 ; I為學(xué)習(xí)速度。本發(fā)明還提供另一種類似的天氣預(yù)測方法,包括以下步驟
步驟I,提供N行2列的氣溫信息值,所述兩列氣溫信息值分別為最高氣溫和最低氣溫的歷史值;
步驟2,將所述N行2列的氣溫信息值歸一化為O到I之間的數(shù)值;
步驟3,建立訓(xùn)練樣本的輸入輸出矩陣,即,將第I到N-I條數(shù)據(jù)作為輸入矩陣,第2到 N條數(shù)據(jù)作為輸出矩陣;
步驟4,基于所述輸出矩陣,利用神經(jīng)網(wǎng)絡(luò)進(jìn)行天氣預(yù)測。更進(jìn)一步,步驟4包括
步驟4-1,對所述神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練;
步驟4-2,將訓(xùn)練樣本的最后一條記錄作為已知條件計(jì)算輸出,并將輸出結(jié)果作為已知;然后利用已知數(shù)據(jù)迭代進(jìn)行預(yù)測,得到從最后一條訓(xùn)練數(shù)據(jù)開始到預(yù)測時(shí)長前一單位階段的預(yù)測結(jié)果,此時(shí)I條實(shí)際數(shù)據(jù)與η-I條預(yù)測數(shù)據(jù)在同一臨時(shí)結(jié)果集中;利用上述臨時(shí)結(jié)果集中的數(shù)據(jù)和權(quán)值矩陣作為已知,計(jì)算得到所有的預(yù)測結(jié)果矩陣;
步驟4-3,得到預(yù)測結(jié)果矩陣之后 ,模型進(jìn)入最后反歸一化的階段,即將歸一化后的結(jié)果數(shù)據(jù)恢復(fù)成正常的溫度值。更為詳細(xì)的實(shí)施方式中,所述步驟4-1中,利用神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練進(jìn)一步包括以下步驟
步驟4-1-1,先隨機(jī)初始化輸入層到隱藏層、隱藏層到輸出層的權(quán)值矩陣;步驟4-1-2,計(jì)算隱藏層各神經(jīng)元、輸出層各神經(jīng)元的輸出,計(jì)算每個(gè)輸出神經(jīng)元和隱藏神經(jīng)元輸出的誤差,所述誤差為神經(jīng)元的輸出與實(shí)際數(shù)據(jù)比較所得到的誤差,并反向傳播更新網(wǎng)絡(luò)中的權(quán)值,當(dāng)誤差小于既定的期望誤差或訓(xùn)練次數(shù)超、過既定的最大訓(xùn)練次數(shù)時(shí)完成所述訓(xùn)練步驟,記錄權(quán)值矩陣。本發(fā)明提供的方法使用相對靈活的訓(xùn)練數(shù)據(jù)格式,算法可自動進(jìn)行歸一化、樣本建立等工作,避免了因數(shù)據(jù)格式混亂而導(dǎo)致的算法失效等問題;另外,預(yù)測不需要提供任何輔佐數(shù)據(jù),僅僅根據(jù)原始訓(xùn)練數(shù)據(jù)即可進(jìn)行多屬性的連續(xù)預(yù)測。且BP神經(jīng)網(wǎng)絡(luò)算法本身可適用于多種復(fù)雜情境,靈活性高。并且可自動判別原始訓(xùn)練數(shù)據(jù)模式,并對其進(jìn)行樣本建立和歸一化。預(yù)測方法使用迭代預(yù)測,不需要提供輔助數(shù)據(jù)完成預(yù)測。預(yù)測結(jié)果可恢復(fù)至與原始訓(xùn)練數(shù)據(jù)相對應(yīng)的數(shù)值范圍。
圖I為神經(jīng)網(wǎng)絡(luò)基本算法示意圖。圖2為本發(fā)明提供的基于BP神經(jīng)網(wǎng)絡(luò)的預(yù)測裝置的功能流程圖。
具體實(shí)施例方式以下結(jié)合具體的實(shí)施方式來描述本發(fā)明。在一個(gè)非限制性的實(shí)施方式中,在天氣預(yù)報(bào)方面,利用本發(fā)明的方法,只需提供一段時(shí)間內(nèi)的最高溫度、最低溫度等數(shù)字化的歷史數(shù)據(jù),就可以預(yù)測出未來的最高溫度和最低溫度等信息,而且在此過程中無需提供其它額外數(shù)據(jù)輔助,預(yù)測結(jié)果也能直觀體現(xiàn)。以溫度預(yù)測舉例,提供N行2列的氣溫信息,列屬性分別為最高溫度和最低溫度。 裝置接收到此原始數(shù)據(jù)后開始進(jìn)行預(yù)處理,即將N行2列的原始溫度數(shù)據(jù)歸一化為O到I之間的數(shù)值;然后自動建立訓(xùn)練樣本的輸入輸出矩陣,即將第I到N-I條數(shù)據(jù)作為輸入矩陣, 第2到N條數(shù)據(jù)作為輸出矩陣,至此數(shù)據(jù)的預(yù)處理階段完成。此后裝置進(jìn)入算法學(xué)習(xí)階段,首先隨機(jī)初始化輸入層到隱藏層、隱藏層到輸出層的權(quán)值矩陣,然后計(jì)算隱藏層各神經(jīng)元、輸出層各神經(jīng)元的輸出,計(jì)算每個(gè)輸出神經(jīng)元和隱藏神經(jīng)元輸出的誤差(與實(shí)際數(shù)據(jù)比較),并反向傳播更新網(wǎng)絡(luò)中的權(quán)值,當(dāng)誤差小于既定的期望誤差或訓(xùn)練次數(shù)超過既定的最大訓(xùn)練次數(shù)時(shí)完成算法學(xué)習(xí)階段的工作,記錄權(quán)值矩陣進(jìn)入下一階段。裝置進(jìn)入迭代預(yù)測階段,首先,將訓(xùn)練樣本的最后一條記錄作為已知條件,利用上一步得到的權(quán)值矩陣計(jì)算輸出,并將結(jié)果作為已知;然后利用已知數(shù)據(jù)迭代進(jìn)行預(yù)測,得到從最后一條訓(xùn)練數(shù)據(jù)開始到預(yù)測時(shí)長前一單位階段的預(yù)測結(jié)果,此時(shí)I條實(shí)際數(shù)據(jù)與n-1 條預(yù)測數(shù)據(jù)在同一臨時(shí)結(jié)果集中;最后,利用上述臨時(shí)結(jié)果集中的數(shù)據(jù)和權(quán)值矩陣作為已知,計(jì)算得到所有的預(yù)測結(jié)果矩陣。得到預(yù)測結(jié)果矩陣之后,裝置進(jìn)入最后反歸一化的階段,即將歸一化后的結(jié)果數(shù)據(jù)恢復(fù)成正常的溫度值。此 裝置可以處理的數(shù)據(jù)需要滿足條件
1)所有屬性均可數(shù)值化;
2)歷史數(shù)據(jù)具有一定的時(shí)序性。
為了更進(jìn)一步公開本發(fā)明的技術(shù)方案,以下介紹本發(fā)明所提出的方法的理論基礎(chǔ)
定義 I :歸一化函數(shù)為R(i, j) = (r(i, j) - minv (j))/(maxv (j) - minv(j));
其中R(i,j)為i行j列的歸一結(jié)果,r(i,j)為第i行j列的歷史數(shù)據(jù),minv(j)為第 j列的最小值,maxv (j)為第j列的最大值。定義2 :算法可根據(jù)神經(jīng)元類型的不同計(jì)算神經(jīng)元的輸出值
如果當(dāng)前是隱藏神經(jīng)元,則采用tanh函數(shù)0=(ea-e_a)/(ea+e_a);
如果當(dāng)前是輸出神經(jīng)元,貝1J采用sigm oid函數(shù)0=1/(l+ea);
其中a是輸入值,O是輸出值。定義3 :誤差計(jì)算函數(shù)為
如果當(dāng)前是輸出神經(jīng)元=Erri = 0“1 — Oi) (Ti — Oi)
(Oi是輸出神經(jīng)元i的輸出,Ti是該輸出神經(jīng)元的實(shí)際值。)
如果當(dāng)前是隱藏神經(jīng)元=Erri = Oi (I — Oi) Σ J-ErrjWij
(Oi是隱藏神經(jīng)元i的輸出,該神經(jīng)元有j個(gè)到下層的輸出。Errj是神經(jīng)元j的誤差, Wij是這兩個(gè)神經(jīng)元之間的權(quán)值。)
神經(jīng)網(wǎng)絡(luò)算法示意圖如圖2所示。定義4 :算法的調(diào)整權(quán)值函數(shù)為=Wij = Wij + RErrfOi (I為學(xué)習(xí)速度。)
根據(jù)上述理論,另一個(gè)更為一般性的實(shí)施方式中,一種基于改進(jìn)策略的BP神經(jīng)網(wǎng)絡(luò)預(yù)
測裝置構(gòu)建方法被提出,該裝置分為六個(gè)層次,分別是數(shù)據(jù)接收層、數(shù)據(jù)預(yù)處理層、算法初始化層、算法學(xué)習(xí)層、迭代預(yù)測層和數(shù)據(jù)恢復(fù)層。在一個(gè)非限制性的實(shí)施方式中,上述各層均使用相應(yīng)的硬件或軟件單元來實(shí)現(xiàn), 因此其也被稱為數(shù)據(jù)接收單元、數(shù)據(jù)預(yù)處理單元、初始化單元、學(xué)習(xí)單元、迭代預(yù)測單元和數(shù)據(jù)恢復(fù)單元。其中數(shù)據(jù)接收層是算法外界參數(shù)的接受層;數(shù)據(jù)預(yù)處理層和算法初始化層用于準(zhǔn)備基礎(chǔ)數(shù)據(jù)和參數(shù),以便算法順利執(zhí)行;算法學(xué)習(xí)層對原始數(shù)據(jù)進(jìn)行訓(xùn)練和學(xué)習(xí),目的是找出權(quán)值矩陣;迭代預(yù)測層會根據(jù)訓(xùn)練數(shù)據(jù)來推導(dǎo)預(yù)測結(jié)果;數(shù)據(jù)恢復(fù)層可將歸一化的預(yù)測結(jié)果恢復(fù)到原始值。更為詳細(xì)的實(shí)施方式中,對上述六個(gè)層次進(jìn)行了如下非限制性的描述。數(shù)據(jù)接收層本層的主要功能是接收該預(yù)測裝置所必需的原始訓(xùn)練數(shù)據(jù)和預(yù)測時(shí)長參數(shù)。其中原始訓(xùn)練數(shù)據(jù)要以N*N (列為屬性,行與行之間存在時(shí)間關(guān)系)行列式的原始形式輸入到該裝置中作為原始訓(xùn)練數(shù)據(jù),該數(shù)據(jù)不需要經(jīng)過任何特殊處理;預(yù)測時(shí)長的單位應(yīng)與原始訓(xùn)練數(shù)據(jù)采集時(shí)的時(shí)間單位基本保持一致,如天、小時(shí)、分鐘等等。數(shù)據(jù)預(yù)處理層本層的主要功能是將上層接收到的原始訓(xùn)練數(shù)據(jù)進(jìn)行自動的歸一化處理,并建立訓(xùn)練樣本的輸入輸出矩陣,整個(gè)過程無需人為干預(yù)和設(shè)定,由裝置自動判斷和處理。裝置會先獲得原始訓(xùn)練數(shù)據(jù)的行數(shù)列數(shù),然后通過雙重循環(huán)來完成歸一化工作,之后再次利用雙重循環(huán)來建立樣本的輸入輸出矩陣。算法初始化層本層的主要功能是初始化BP神經(jīng)網(wǎng)絡(luò)算法的各項(xiàng)參數(shù),如學(xué)習(xí)速率、期望誤差最小值、慣性系數(shù)、最大訓(xùn)練次數(shù)、隱藏層和輸出層各神經(jīng)元初值等。算法學(xué)習(xí)層本層的主要功能是利用算法對訓(xùn)練樣本進(jìn)行學(xué)習(xí),通過學(xué)習(xí)的過程不斷調(diào)整隱藏層和輸出層的加權(quán)系數(shù),當(dāng)誤差小于最小期望誤差或達(dá)到最大訓(xùn)練次數(shù)時(shí), 學(xué)習(xí)過程結(jié)束。本層的最終目的是得到權(quán)值矩陣。迭代預(yù)測層本層的主要功能是根據(jù)算法學(xué)習(xí)的成果和訓(xùn)練樣本進(jìn)行迭代預(yù)測, 該層的特點(diǎn)是將最后的訓(xùn)練樣本作為已知,通過學(xué)習(xí)到的各層加權(quán)系數(shù)進(jìn)行運(yùn)算得出第一個(gè)預(yù)測結(jié)果,再以此預(yù)測結(jié)果作為已知并推算出下一個(gè)預(yù)測結(jié)果,以此類推,迭代完成所有預(yù)測。數(shù)據(jù)恢復(fù)層本層的主要功能是將歸一形式的預(yù)測結(jié)果恢復(fù)成與原始訓(xùn)練數(shù)據(jù)一致的數(shù)值范圍,使預(yù)測結(jié)果具有實(shí)際意義。下面論述該裝置的實(shí)現(xiàn)方案
BP神經(jīng)網(wǎng)絡(luò)是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò),BP神經(jīng)網(wǎng)絡(luò)能學(xué)習(xí)和存貯大量的輸入-輸出模式映射關(guān)系,而無需事前揭示描述這種映射關(guān)系的數(shù)學(xué)方程。它的學(xué)習(xí)規(guī)則是使用最速下降法,通過反向傳播來不斷調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,使網(wǎng)絡(luò)的誤差平方和最小。BP神經(jīng)網(wǎng)絡(luò)裝置拓?fù)浣Y(jié)構(gòu)包括輸入層、隱藏層和輸出層。每個(gè)神經(jīng)元有一個(gè)或多個(gè)輸入但只有一個(gè)輸出,神經(jīng)網(wǎng)絡(luò)算法使用加權(quán)和(每個(gè)輸入值乘以與它關(guān)聯(lián)的權(quán)值,然后對乘積求和)的方法組合多個(gè)輸入值,然后根據(jù)神經(jīng)元類型的不同計(jì)算神經(jīng)元的輸出值(激活)
若是隱藏神經(jīng)元,則采用tanh函數(shù)0 = (ea — e_a) / (ea + e_a);
若是輸出神經(jīng)元,貝1J采用sigmoid函數(shù)0 = I / (I + ea);
其中a是輸入值,O是輸出值。圖I顯示了神經(jīng)元內(nèi)部進(jìn)行組合和輸出的計(jì)算過程,即首先使用加權(quán)和的方法組合輸入值1、2和3,然后根據(jù)神經(jīng)元類型的不同選擇tanh或sigmoid函數(shù)得到輸出結(jié)果。 最后計(jì)算每個(gè)輸出和隱藏神經(jīng)元計(jì)算輸出的誤差(與實(shí)際數(shù)據(jù)比較),反向傳播更新網(wǎng)絡(luò)中的權(quán)值,直到滿足算法的終止條件。其中,誤差計(jì)算函數(shù)為
若為輸出神經(jīng)元=Erri = OiQ — Oi) (Ti — Oi)
(Oi是輸出神經(jīng)元i的輸出,Ti是該輸出神經(jīng)元的實(shí)際值。)
若為隱藏神經(jīng)元=Erri = Oi (I — Oi) Σ J-ErrjWij
(Oi是隱藏神經(jīng)元i的輸出,該神經(jīng)元有j個(gè)到下層的輸出。Errj是神經(jīng)元j的誤差, Wij是這兩個(gè)神經(jīng)元之間的權(quán)值。)
調(diào)整權(quán)值函數(shù)為=Wij = Wij + I^Errj=IiOi (I為學(xué)習(xí)速度。)
在改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)算法中,實(shí)現(xiàn)步驟如下
步驟I、接收原始訓(xùn)練數(shù)據(jù)矩陣和訓(xùn)練時(shí)長參數(shù),以天氣預(yù)測為例,原始數(shù)據(jù)可為連續(xù)幾日的最高溫度和最低溫度,預(yù)測時(shí)長為7天。步驟2、初始化數(shù)據(jù),包括設(shè)定學(xué)習(xí)速率、期望誤差、訓(xùn)練的最大次數(shù)、慣性系數(shù)、隱含層和輸出層各神經(jīng)元輸出初值,根據(jù)原始數(shù)據(jù)動態(tài)得到矩陣行列數(shù)據(jù)PO。步驟3、獲取每列訓(xùn)練數(shù)據(jù)的最大值maxv(j)與最小值minv(j)后對數(shù)據(jù)進(jìn)行歸一化處理,使原始數(shù)據(jù)規(guī)范到O到I之間,歸一使用P (i, j) = (p0(i, j) - minv (j))/(maxv (j) -minv(j));。其中p(i,j)為i行j列的歸一結(jié)果,p0(i,j)為第i行j列的歷史數(shù)據(jù),minv(j)為第j列的最小值,maxv(j)為第j列的最大值。步驟4、根據(jù)原始訓(xùn)練數(shù)據(jù)得到訓(xùn)練樣本的輸入矩陣和輸出矩陣。for i=l: count_sumC for j = I:count_sumL_l
X(i, j)= p(j, i);
T(i, j) = p(j+l, i);
end
end 其中,count_sumC表示矩陣列的數(shù)量,count_sumL表示矩陣行的數(shù)量,X為輸入樣本, T為輸出樣本,P為歸一化后的訓(xùn)練樣本。步驟5、隨機(jī)初始化權(quán)值矩陣wki和wij。其中,wki表示隱藏層到輸入層的權(quán)值矩陣,wij表示輸入層到隱藏層的權(quán)值矩陣。步驟6、計(jì)算隱藏層各神經(jīng)元、輸出層各神經(jīng)元的輸出,隱藏層輸出計(jì)算公式為 0=(ea-e_a)/(ea+e_a),輸出層的輸出計(jì)算公式為0=l/(l+e_a)。其中a表示神經(jīng)元的輸入值。步驟7、計(jì)算每個(gè)輸出和隱藏神經(jīng)元計(jì)算輸出的誤差(與實(shí)際數(shù)據(jù)比較),反向傳播更新網(wǎng)絡(luò)中的權(quán)值。其中,誤差計(jì)算函數(shù)為
若為輸出神經(jīng)元=Erri = OiQ — Oi) (Ti — Oi)
(Oi是輸出神經(jīng)元i的輸出,Ti是該輸出神經(jīng)元的實(shí)際值。)
若為隱藏神經(jīng)元=Erri = Oi (I — Oi) Σ J-ErrjWij
(Oi是隱藏神經(jīng)元i的輸出,該神經(jīng)元有j個(gè)到下層的輸出。Errj是神經(jīng)元j的誤差, Wij是這兩個(gè)神經(jīng)元之間的權(quán)值。)
調(diào)整權(quán)值函數(shù)為=Wij = Wij + I^Errj=IiOi (I為學(xué)習(xí)速度。)
步驟8、重復(fù)步驟6,直到滿足終止條件為止,該算法的終止條件為誤差小于期望誤差或訓(xùn)練次數(shù)大于最大設(shè)定值。步驟9、根據(jù)訓(xùn)練后得到的權(quán)值矩陣和訓(xùn)練時(shí)的參數(shù),以最后一條實(shí)際數(shù)據(jù)作為初始輸入進(jìn)行預(yù)測,再將預(yù)測結(jié)果作為下一天的實(shí)際數(shù)據(jù)再次進(jìn)行預(yù)測,直到滿足預(yù)測天數(shù)參數(shù)。預(yù)測過程同步驟6。步驟10、將得到的預(yù)測結(jié)果矩陣進(jìn)行恢復(fù),即將歸一化后的值恢復(fù)到實(shí)際數(shù)值R es (i, j) =PredictRes (j, i) * (maxv (j) -minv (j)) +minv (j)。其中,PredictRes (j, i)表不未還原的預(yù)測結(jié)果,Res (i, j)表示已還原的預(yù)測結(jié)果。現(xiàn)以溫度預(yù)測舉例,提供N行2列的氣溫信息,列屬性分別為最高溫度和最低溫度。裝置接收到此原始數(shù)據(jù)后開始進(jìn)行預(yù)處理工作,即將N行2列的原始溫度數(shù)據(jù)利用公式 p(i,j) = (p0(i, j) - minv (j))/(maxv (j) - minv (j))歸一化為 0 到 I 之間的數(shù)值;然后自動建立訓(xùn)練樣本的輸入輸出矩陣,即將第I到N-I條數(shù)據(jù)作為輸入矩陣,第2到 N條數(shù)據(jù)作為輸出矩陣,至此數(shù)據(jù)的預(yù)處理階段完成。裝置進(jìn)入算法學(xué)習(xí)階段,首先隨機(jī)初始化輸入層到隱藏層、隱藏層到輸出層的權(quán)值矩陣,然后利用公式O= (ea-e_a) / (ea+e_a)計(jì)算隱藏層各神經(jīng)元輸出,利用公式0=1/ (l+e_a) 計(jì)算輸出層各神經(jīng)元的輸出,之后再計(jì)算每個(gè)輸出神經(jīng)元和隱藏神經(jīng)元輸出的誤差(與實(shí)際數(shù)據(jù)比較),并反向傳播更新網(wǎng)絡(luò)中的權(quán)值,當(dāng)誤差小于既定的期望誤差或訓(xùn)練次數(shù)超過既定的最大訓(xùn)練次數(shù)時(shí)完成算法學(xué)習(xí)階段的工作,記錄權(quán)值矩陣進(jìn)入下一階段。裝置進(jìn)入迭代預(yù)測階段,首先,將訓(xùn)練樣本的最后一條記錄作為已知條件,利用上一步得到的權(quán)值矩陣用公式0= (ea_e_a) / (ea+e_a)或0=1/ (l+e_a)計(jì)算輸出,并將結(jié)果作為已知;然后利用已知數(shù)據(jù)迭代進(jìn)行預(yù)測,得到從最后一條訓(xùn)練數(shù)據(jù)開始到預(yù)測時(shí)長前一單位階段的預(yù)測結(jié)果,此時(shí)I條實(shí)際數(shù)據(jù)與η-I條預(yù)測數(shù)據(jù) 在同一臨時(shí)結(jié)果集中;最后,利用上述臨時(shí)結(jié)果集中的數(shù)據(jù)和權(quán)值矩陣作為已知,計(jì)算得到所有的預(yù)測結(jié)果矩陣。得到預(yù)測結(jié)果矩陣之后,裝置進(jìn)入最后反歸一化的階段,即將歸一化后的結(jié)果數(shù)據(jù)利用公式 Res (i, j) =PredictRes (j, i) * (maxv (j) -minv (j)) +minv (j)恢復(fù)成正常的溫度值。改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)的算法流程圖如圖2所示。本發(fā)明技術(shù)方案具有以下優(yōu)勢
BP神經(jīng)網(wǎng)絡(luò)算法本身可適用于多種復(fù)雜情境,靈活性高。該裝置使用的改進(jìn)算法可自動判別原始訓(xùn)練數(shù)據(jù)模式,并對其進(jìn)行樣本建立和歸一化。預(yù)測方法使用迭代預(yù)測,不需要提供輔助數(shù)據(jù)完成預(yù)測。預(yù)測結(jié)果可恢復(fù)至與原始訓(xùn)練數(shù)據(jù)相對應(yīng)的數(shù)值范圍。BP神經(jīng)網(wǎng)絡(luò)算法可適用于各種復(fù)雜的情況,但其受數(shù)據(jù)形式的影響較大,且解釋結(jié)果較為困難,這種基于改進(jìn)策略的BP神經(jīng)網(wǎng)絡(luò)預(yù)測裝置構(gòu)建方法可在很大程度上削弱人對數(shù)據(jù)的控制力,并將其用于多種環(huán)境下。經(jīng)過恢復(fù)的預(yù)測結(jié)果通過不同的工具和技術(shù)可衍生出多種結(jié)果形式,如折線圖、 餅狀圖、柱狀圖等,甚至特殊領(lǐng)域的相關(guān)圖形,如交通流量圖、氣溫變化圖等。
權(quán)利要求
1.一種基于BP神經(jīng)網(wǎng)絡(luò)的天氣預(yù)測方法,包括以下步驟 步驟I、接收原始訓(xùn)練數(shù)據(jù)矩陣和訓(xùn)練時(shí)長參數(shù); 步驟2、初始化數(shù)據(jù),包括設(shè)定學(xué)習(xí)速率、期望誤差、訓(xùn)練的最大次數(shù)、慣性系數(shù)、隱含層和輸出層各神經(jīng)元輸出初值,根據(jù)原始數(shù)據(jù)動態(tài)得到矩陣行列數(shù)據(jù)PO ; 步驟3、獲取每列訓(xùn)練數(shù)據(jù)的最大值maxv(j)與最小值minv(j)后對數(shù)據(jù)進(jìn)行歸一化處理,使原始數(shù)據(jù)規(guī)范到O到I之間; 步驟4、根據(jù)原始訓(xùn)練數(shù)據(jù)得到訓(xùn)練樣本的輸入矩陣和輸出矩陣; 步驟5、隨機(jī)初始化權(quán)值矩陣wki和wi j, wki表示隱藏層到輸入層的權(quán)值矩陣,wij表示輸入層到隱藏層的權(quán)值矩陣; 步驟6、計(jì)算隱藏層各神經(jīng)元、輸出層各神經(jīng)元的輸出; 步驟7、計(jì)算每個(gè)輸出和隱藏神經(jīng)元計(jì)算輸出的誤差,反向傳播更新網(wǎng)絡(luò)中的權(quán)值;步驟8、重復(fù)步驟6,直到滿足終止條件為止,該算法的終止條件為誤差小于期望誤差或訓(xùn)練次數(shù)大于最大設(shè)定值。
2.如權(quán)利要求I所述的基于BP神經(jīng)網(wǎng)絡(luò)的天氣預(yù)測方法,其特征在于 進(jìn)一步包括 步驟9、根據(jù)訓(xùn)練后得到的權(quán)值矩陣和訓(xùn)練時(shí)的參數(shù),以最后一條實(shí)際數(shù)據(jù)作為初始輸入進(jìn)行預(yù)測,再將預(yù)測結(jié)果作為下一天的實(shí)際數(shù)據(jù)再次進(jìn)行預(yù)測,直到滿足預(yù)測天數(shù)參數(shù),預(yù)測過程同步驟6; 步驟10、將得到的預(yù)測結(jié)果矩陣進(jìn)行恢復(fù),即將歸一化后的值恢復(fù)到實(shí)際數(shù)值。
3.如權(quán)利要求2所述的基于BP神經(jīng)網(wǎng)絡(luò)的天氣預(yù)測方法,其特征在于 所述將歸一化后的值恢復(fù)到實(shí)際數(shù)值的方法為,Res (i, j) =PredictRes (j, i) * (maxv (j) -minv (j)) +minv (j),其中,PredictRes (j, i)表示未還原的預(yù)測結(jié)果,Res (i, j)表示已還原的預(yù)測結(jié)果。
4.如權(quán)利要求I所述的基于BP神經(jīng)網(wǎng)絡(luò)的天氣預(yù)測方法,其特征在于 所述步驟 3 中,歸一使用 P (i, j) = (p0(i, j) - minv (j))/(maxv (j) -minv(j));其中P(i,j)為i行j列的歸一結(jié)果,P0(i,j)為第i行j列的歷史數(shù)據(jù),minv(j)為第j列的最小值,maxv(j)為第j列的最大值。
5.如權(quán)利要求I所述的基于BP神經(jīng)網(wǎng)絡(luò)的天氣預(yù)測方法,其特征在于 所述原始訓(xùn)練數(shù)據(jù)為連續(xù)幾日的最高溫度和最低溫度,所述預(yù)測時(shí)長為7天。
6.如權(quán)利要求I所述的基于BP神經(jīng)網(wǎng)絡(luò)的天氣預(yù)測方法,其特征在于 步驟6中,隱藏層輸出計(jì)算公式為0=(ea-e-a)/(ea+e-a),輸出層的輸出計(jì)算公式為0=1/(l+e_a),其中a表示神經(jīng)元的輸入值。
7.如權(quán)利要求I所述的基于BP神經(jīng)網(wǎng)絡(luò)的天氣預(yù)測方法,其特征在于 步驟7中,誤差計(jì)算函數(shù)為 若為輸出神經(jīng)元,則誤差Erri = Oi (I — Oi) (Ti — Oi), Oi是輸出神經(jīng)元i的輸出,Ti是該輸出神經(jīng)元的實(shí)際值; 若為隱藏神經(jīng)元,則誤差Erri = Oi (I — Oi) Σ J-ErrjWij, Oi是隱藏神經(jīng)元i的輸出,該神經(jīng)元有j個(gè)到下層的輸出,所述Errj是神經(jīng)元j的誤差,Wij是這兩個(gè)神經(jīng)元之間的權(quán)值;所述調(diào)整權(quán)值函數(shù)為Wij = Wij + 1*=KErrj*Oi, 1為學(xué)習(xí)速度。
8.一種天氣預(yù)測方法,其特征在于,包括以下步驟步驟I,提供N行2列的氣溫信息值,所述兩列氣溫信息值分別為最高氣溫和最低氣溫的歷史值;步驟2,將所述N行2列的氣溫信息值歸一化為O到1之間的數(shù)值;步驟3,建立訓(xùn)練樣本的輸入輸出矩陣,即,將第I1到N-1條數(shù)據(jù)作為輸入矩陣,第2到 N條數(shù)據(jù)作為輸出矩陣;步驟4,基于所述輸出矩陣,利用神經(jīng)網(wǎng)絡(luò)進(jìn)行天氣預(yù)測。
9.如權(quán)利要求8所述的天氣預(yù)測方法,其特征在于所述步驟4進(jìn)一步包括步驟4-1,對所述神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練;以及,步驟4-2,將訓(xùn)練樣本的最后一條記錄作為已知條件計(jì)算輸出,并將輸出結(jié)果作為已知;然后利用已知數(shù)據(jù)迭代進(jìn)行預(yù)測,得到從最后一條訓(xùn)練數(shù)據(jù)開始到預(yù)測時(shí)長前一單位階段的預(yù)測結(jié)果,此時(shí)I條實(shí)際數(shù)據(jù)與n-Ι條預(yù)測數(shù)據(jù)在同一臨時(shí)結(jié)果集中;利用上述臨時(shí)結(jié)果集中的數(shù)據(jù)和權(quán)值矩陣作為已知,計(jì)算得到所有的預(yù)測結(jié)果矩陣;步驟4-3,得到預(yù)測結(jié)果矩陣之后,模型進(jìn)入最后反歸一化的階段,即將歸一化后的結(jié)果數(shù)據(jù)恢復(fù)成正常的溫度值。
10.如權(quán)利要求9所述的天氣預(yù)測方法,其特征在于所述步驟4-1中,利用神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練進(jìn)一步包括以下步驟步驟4-1-1,先隨機(jī)初始化輸入層到隱藏層、隱藏層到輸出層的權(quán)值矩陣;步驟4-1-2,計(jì)算隱藏層各神經(jīng)元、輸出層各神經(jīng)元的輸出,計(jì)算每個(gè)輸出神經(jīng)元和隱藏神經(jīng)元輸出的誤差,所述誤差為神經(jīng)元的輸出與實(shí)際數(shù)據(jù)比較所得到的誤差,并反向傳播更新網(wǎng)絡(luò)中的權(quán)值,當(dāng)誤差小于既定的期望誤差或訓(xùn)練次數(shù)超、過既定的最大訓(xùn)練次數(shù)時(shí)完成所述訓(xùn)練步驟,記錄權(quán)值矩陣。
全文摘要
本發(fā)明公開了天氣預(yù)測方法,通過提供氣溫信息值,將氣溫信息值歸一化,建立訓(xùn)練樣本的輸入輸出矩陣,基于所述輸出矩陣,利用神經(jīng)網(wǎng)絡(luò)進(jìn)行天氣預(yù)測等步驟實(shí)現(xiàn)天氣預(yù)測。使用的改進(jìn)算法可自動判別原始訓(xùn)練數(shù)據(jù)模式,并對其進(jìn)行樣本建立和歸一化。該方法可適用于多種復(fù)雜情境,靈活性高,不需要提供輔助數(shù)據(jù)完成預(yù)測,預(yù)測結(jié)果可恢復(fù)至與原始訓(xùn)練數(shù)據(jù)相對應(yīng)的數(shù)值范圍。
文檔編號G06F17/30GK102622515SQ20121003911
公開日2012年8月1日 申請日期2012年2月21日 優(yōu)先權(quán)日2012年2月21日
發(fā)明者周林, 易璐璐, 李萃華, 王汕汕, 翟云, 邱正強(qiáng), 馬楠 申請人:北京聯(lián)合大學(xué)