2016-09-25 327 views
0

我對機器學習相當陌生,並且正在使用線性特徵縮放來預處理我的訓練數據。特徵縮放/歸一化中的最小值和最大值?

我的問題是,給定一個.csv文件,其中每列數據代表一個功能,minX和maxX值應該是我的數據規範化?

更具體地說,我應該分別規範化每個特徵(使用每列中的minX/maxX值),一次標準化所有數據(從整個數據集中查找minX/maxX,檢查所有特徵),或者標準化逐個輸入的基礎?

回答

0

你想要所有的特徵都在線性分類器的相同範圍內(而不僅僅是它們!也適用於神經網絡!)。在繼續前進之前,你想要擴展的原因應該很清楚。看看這個主題上的Andrew Ng's lecture,以便直觀地解釋發生了什麼。

一旦清楚,你應該對你的問題有個答案:單獨規範每個特徵。例如,如果你有3行的表:

row | F1 | F2 
1 | 1 | 1000 
2 | 2 | 2000 
3 | 3 | 3000 

你想利用其最大值(3)和最小值(1)規模F1。 F2將分別爲3000和1000分別做最大值和最小值。

這就是所謂的MinMax縮放。您也可以根據均值和方差進行縮放,或者完全按照另一種方法進行,即考慮您通常在計算資源方面擁有「預算」,並且希望將其最大化。在這種情況下,類似Histogram Equalization可能是一個不錯的選擇。最後一點:如果你正在使用決策樹(作爲一個獨立的分類器,或者在一個決策森林或一個增強的集合中),那麼不要打擾正常化,它不會改變一件事情。

+0

我瞭解訓練數據的特徵標準化功能,但是當我開始進行預測時,輸入數據如何呢?例如,如果我有一組輸入:{F1:12,F2:19,F3:8},我應該用訓練數據中的minX/maxX值還是數組中的其他值對每個值進行歸一化? –

+0

當然。您已經訓練的分類器是函數f(V),其中V是您的特徵向量。如果通過其他函數g(V)對V進行歸一化,則需要將相同的函數應用於預測數據。因此,例如,如果使用minmax標準化,則需要存儲最小值和最大值,以便可以將相同的標準化應用於預測數據。注意:如果您的預測數據具有小於最小值或大於最大值的特徵,只需將其分別設置爲MIN或MAX(分別)即可。 – Tex

1

分別標準化每個功能。你想要的是在一個定義好的時間間隔內限制每個特徵的範圍(即[0,1])。 僅使用來自訓練數據集的數據。

如果你使用Min-Max縮放,你將會有一個較小的STD,這並不壞。如果使用Min-Max或標準化(mu = 0,std = 1)取決於您需要執行的應用程序。

+0

好的,所以當我輸入一組特徵{F1:12,F2:19,F3:-80}到我的神經網絡中時,是否使用過去的minX/maxX數據(來自訓練數據)來標準化每個特徵?或者我使用來自輸入數組的minX/maxX值對它進行規格化? –

+0

如果訓練數據集足夠好,您的輸入數據應該使用來自它的最小最大值在[0,1]範圍內。如果這沒有發生,這不是一件好事。無論如何,使用訓練數據集中的最小最大值。 – ozw1z5rd

相關問題