Ⅰ 神經網路bp演算法可以對樣本進行預測,具體是預測什麼
關於神經網路(matlab)歸一化的整理
由於採集的各數據單位不一致,因而須對數據進行[-1,1]歸一化處理,歸一化方法主要有如下幾種,供大家參考:(by james)
1、線性函數轉換,表達式如下:
y=(x-MinValue)/(MaxValue-MinValue)
說明:x、y分別為轉換前、後的值,MaxValue、MinValue分別為樣本的最大值和最小值。
2、對數函數轉換,表達式如下:
y=log10(x)
說明:以10為底的對數函數轉換。
3、反餘切函數轉換,表達式如下:
y=atan(x)*2/PI
歸一化是為了加快訓練網路的收斂性,可以不進行歸一化處理
歸一化的具體作用是歸納統一樣本的統計分布性。歸一化在0-1之間是統計的概率分布,歸一化在-1--+1之間是統計的坐標分布。歸一化有同一、統一和合一的意思。無論是為了建模還是為了計算,首先基本度量單位要同一,神經網路是以樣本在事件中的統計分別幾率來進行訓練(概率計算)和預測的,歸一化是同一在0-1之間的統計概率分布;
當所有樣本的輸入信號都為正值時,與第一隱含層神經元相連的權值只能同時增加或減小,從而導致學習速度很慢。為了避免出現這種情況,加快網路學習速度,可以對輸入信號進行歸一化,使得所有樣本的輸入信號其均值接近於0或與其均方差相比很小。
歸一化是因為sigmoid函數的取值是0到1之間的,網路最後一個節點的輸出也是如此,所以經常要對樣本的輸出歸一化處理。所以這樣做分類的問題時用[0.9 0.1 0.1]就要比用[1 0 0]要好。
但是歸一化處理並不總是合適的,根據輸出值的分布情況,標准化等其它統計變換方法有時可能更好。
關於用premnmx語句進行歸一化:
premnmx語句的語法格式是:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T)
其中P,T分別為原始輸入和輸出數據,minp和maxp分別為P中的最小值和最大值。mint和maxt分別為T的最小值和最大值。
premnmx函數用於將網路的輸入數據或輸出數據進行歸一化,歸一化後的數據將分布在[-1,1]區間內。
我們在訓練網路時如果所用的是經過歸一化的樣本數據,那麼以後使用網路時所用的新數據也應該和樣本數據接受相同的預處理,這就要用到tramnmx。
下面介紹tramnmx函數:
[Pn]=tramnmx(P,minp,maxp)
其中P和Pn分別為變換前、後的輸入數據,maxp和minp分別為premnmx函數找到的最大值和最小值。
(by terry2008)
matlab中的歸一化處理有三種方法
1. premnmx、postmnmx、tramnmx
2. restd、poststd、trastd
3. 自己編程
具體用那種方法就和你的具體問題有關了
(by happy)
pm=max(abs(p(i,:))); p(i,:)=p(i,:)/pm;
和
for i=1:27
p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end 可以歸一到0 1 之間
0.1+(x-min)/(max-min)*(0.9-0.1)其中max和min分別表示樣本最大值和最小值。
這個可以歸一到0.1-0.9
Ⅱ 如何用神經網路實現連續型變數的回歸預測
神經網路最開始是機器學習的一種模型,但其訓練的時間和其他幾種模型相比不佔優勢,且結果也不盡人意,所以一直沒有被廣泛使用。但隨著數學的深入研究以及計算機硬體質量的提高,尤其是GPU的出現,給深度學習的廣泛應用提供了基礎。GPU最初是為了給游戲玩家帶來高質量的視覺體驗,由於其處理矩陣運算的能力特別優秀,也被用於深度學習中模型的訓練,以往數十天才能訓練好的模型在GPU上訓練幾天就可以訓練好,大大減少了深度學習的訓練時間,因而深度學習的應用越來越多。
通常使用Python來搭建神經網路,Python自帶深度學習的一些庫,在進行回歸預測時,我們只需用調用函數,設定幾個參數,如隱藏層層數和神經元個數等,剩下的就是等模型自行訓練,最終便能完成回歸預測,非常的方便。
Ⅲ 建立BP神經網路地面沉降預測模型
基坑降水引起地面沉降的BP神經網路預測模型建模過程如下:
(1)樣本選擇
因基坑降水引起的地面沉降量和距離基坑的距離關系密切,因此建模選用「基坑降水引起沉降工程數據(第二類)」(見表4.1)中的相關數據作為樣本進行學習訓練和檢驗。
(2)BP神經網路結構設計
對於BP網路,對於任何在閉區間內的一個連續函數都可以用單隱層的BP網路逼近,因而一個三層BP網路就可以完成任意的n維到m維的映射。根據網路結構簡單化的原則,確定採用三層BP網路結構,即輸入層為沉降點距基坑的距離L(m)、等效壓縮模量E(MPa)、水位降深H(m)和支護剛度n四個參數,輸出層為地面累積沉降量(mm),隱層層數為1層。隱層的神經元數目選擇是一個十分復雜的問題,往往需要根據設計者的經驗和多次實驗來確定,因而不存在一個理想的解析式來表示。隱單元的數目與問題的要求,與輸入、輸出單元的數目有直接的關系。隱單元數目太多會導致學習時間過長,誤差不一定最佳,也會導致容錯性差、不能識別以前沒有看到的樣本,因此一定存在一個最佳的隱單元數。研究通過一次編程比較了隱層神經元個數分別為5、10、15、20、25、30、40時訓練速度及檢驗精度。
圖4.2 BP神經網路程序框圖
(3)網路訓練及檢驗
BP網路採用梯度下降法來降低網路的訓練誤差,考慮到基坑降水地面沉降范圍內沉降量變化幅度較小的特點,訓練時以訓練目標取0.001為控制條件,考慮到網路的結構比較復雜,神經元個數比較多,需要適當增加訓練次數和學習速率,因此初始訓練次數設為10000次,學習速率取0.1,中間層的神經元傳遞函數採用S型正切函數tansig,傳輸函數採用logsig,訓練函數採用trainlm,選用38組數據中的33組作為訓練樣本,5組作為檢驗樣本。
(4)網路實現及檢驗效果
使用MATLAB6.0編程建立基於BP神經網路的基坑降水地面沉降預測模型(程序代碼見附件1),其訓練誤差及檢驗效果如下:
圖4.3 訓練誤差曲線
圖4.4 預測誤差曲線
由圖4.3、圖4.4可見:樣本數據收斂,訓練誤差較小,中間層神經單元個數為10時預測精度較好,誤差小於20%,誤差滿足工程需求。
Ⅳ 利用RBF神經網路做預測
在命令欄敲nntool,按提示操作,將樣本提交進去。
還有比較簡單的是用廣義RBF網路,直接用grnn函數就能實現,基本形式是y=grnn(P,T,spread),你可以用help grnn看具體用法。GRNN的預測精度是不錯的。
廣義RBF網路:從輸入層到隱藏層相當於是把低維空間的數據映射到高維空間,輸入層細胞個數為樣本的維度,所以隱藏層細胞個數一定要比輸入層細胞個數多。從隱藏層到輸出層是對高維空間的數據進行線性分類的過程,可以採用單層感知器常用的那些學習規則,參見神經網路基礎和感知器。
注意廣義RBF網路只要求隱藏層神經元個數大於輸入層神經元個數,並沒有要求等於輸入樣本個數,實際上它比樣本數目要少得多。因為在標准RBF網路中,當樣本數目很大時,就需要很多基函數,權值矩陣就會很大,計算復雜且容易產生病態問題。另外廣RBF網與傳統RBF網相比,還有以下不同:
1.徑向基函數的中心不再限制在輸入數據點上,而由訓練演算法確定。
2.各徑向基函數的擴展常數不再統一,而由訓練演算法確定。
3.輸出函數的線性變換中包含閾值參數,用於補償基函數在樣本集上的平均值與目標值之間的差別。
因此廣義RBF網路的設計包括:
1.結構設計--隱藏層含有幾個節點合適
2.參數設計--各基函數的數據中心及擴展常數、輸出節點的權值。