1. 程式人生 > >資料處理之標準化/歸一化方法

資料處理之標準化/歸一化方法

歸一化是一種簡化計算的方式,即將有量綱的表示式,經過變換,化為無量綱的表示式,成為純量。歸一化是為了加快訓練網路的收斂性,可以不進行歸一化處理

歸一化的具體作用是歸納統一樣本的統計分佈性。歸一化在0-1之間是統計的概率分佈,歸一化在-1--+1之間是統計的座標分佈。歸一化有同一、統一和合一的意思。無論是為了建模還是為了計算,首先基本度量單位要同一,神經網路是以樣本在事件中的統計分別機率來進行訓練(概率計算)和預測的,歸一化是同一在0-1之間的統計概率分佈;SVM是以降維後線性劃分距離來分類和模擬的,因此時空降維歸一化是統一在-1--+1之間的統計座標分佈。

當所有樣本的輸入訊號都為正值時,與第一隱含層神經元相連的權值只能同時增加或減小,從而導致學習速度很慢。為了避免出現這種情況,加快網路學習速度,可以對輸入訊號進行歸一化,使得所有樣本的輸入訊號其均值接近於0或與其均方差相比很小。

歸一化是因為sigmoid函式的取值是0到1之間的,網路最後一個節點的輸出也是如此,所以經常要對樣本的輸出歸一化處理。所以這樣做分類的問題時用[0.9 0.1 0.1]就要比用要好。

但是歸一化處理並不總是合適的,根據輸出值的分佈情況,標準化等其它統計變換方法有時可能更好。

主要是為了資料處理方便提出來的,把資料對映到0~1範圍之內處理,更加便捷快速,應該歸到數字訊號處理範疇之內。 歸一化方法(Normalization Method)

1。把數變為(0,1)之間的小數 主要是為了資料處理方便提出來的,把資料對映到0~1範圍之內處理,更加便捷快速,應該歸到數字訊號處理範疇之內。

2 。把有量綱表示式變為無量綱表示式歸一化是一種簡化計算的方式,即將有量綱的表示式,經過變換,化為無量綱的表示式,成為純量。

比如,複數阻抗可以歸一化書寫:Z = R + jωL = R(1 + jωL/R) ,複數部分變成了純數量了,沒有量綱。

標準化方法(Normalization Method)

        資料的標準化是將資料按比例縮放,使之落入一個小的特定區間。由於信用指標體系的各個指標度量單位是不同的,為了能夠將指標參與評價計算,需要對指標進行規範化處理,通過函式變換將其數值對映到某個數值區間。

關於神經網路(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

矩陣歸一化

歸一化化定義:我是這樣認為的,歸一化化就是要把你需要處理的資料經過處理後(通過某種演算法)限制在你需要的一定範圍內。首先歸一化是為了後面資料處理的方便,其次是保正程式執行時收斂加快。

在matlab裡面,用於歸一化的方法共有三中,(1)premnmx、postmnmx、tramnmx(2)prestd、poststd、trastd(3)是用matlab語言自己程式設計。premnmx指的是歸一到[-1 1],prestd歸一到單位方差和零均值。(3)關於自己程式設計一般是歸一到[0.1 0.9]

為什麼要用歸一化呢?首先先說一個概念,叫做奇異樣本資料,所謂奇異樣本資料資料指的是相對於其他輸入樣本特別大或特別小的樣本向量。

下面舉例:

m=[0.11 0.15 0.32 0.45 30;

0.13 0.24 0.27 0.25 45];

其中的第五列資料相對於其他4列資料就可以成為奇異樣本資料(下面所說的網路均值bp)。奇異樣本資料存在所引起的網路訓練時間增加,並可能引起網路無法收斂,所以對於訓練樣本存在奇異樣本資料的資料集在訓練之前,最好先進形歸一化,若不存在奇異樣本資料,則不需要事先歸一化。

一個小程式:

p=[1.3711 1.3802 1.3636 1.3598 1.3502 1.3404 1.3284 1.3160 1.3118 1.3032 1.2989 1.2945 1.2923 1.2923 1.2856 1.2788 1.2742 1.2672 1.2577 1.2279 1.1903 1.0864 0.9956 ];
t=[0 1.38 1.68 1.98 2.08 2.23 2.53 2.83 2.93 3.13 3.23 3.33 3.43 3.53 3.63 3.73 3.83 3.93 4.03 4.13 4.23 4.33 4.43];
u=p;
tt=t;
p=(p-min(p))/(max(p)-min(p));%g歸一化
t=(t-min(t))/(max(t)-min(t));
net=newff(minmax(p),[23 1],{'tansig' 'purelin'},'traingdx');
net.trainParam.epochs=1000;
net.trainParam.goal=0.001;
net.trainParam.show=10;
net.trainParam.lr=0.05;
[net,tr,Y,E]=train(net,p,t);
a=sim(net,p);
out=a*(max(tt)-min(tt))+min(tt);%反歸一化
x=u;
y=tt;
figure(1)
plot(x,y,'k*',x,y,'-k',u,out,'ko')
title('70°EPDM的壓縮永久變形')
legend('*試驗資料 o預測結果')
xlabel('壓縮變形保持率')
ylabel('時間的對數log10(t)')
grid on