Normalization

如何將無界變量表示為 0 到 1 之間的數字

  • August 2, 2010

我想將變量表示為 0 到 1 之間的數字。該變量是一個非負整數,沒有固有界限。我將 0 映射到 0,但我可以將什麼映射到 1 或 0 到 1 之間的數字?

我可以使用該變量的歷史來提供限制。這意味著如果最大值增加,我必須重述舊的統計數據。我必須這樣做還是我應該知道其他技巧?

這樣做的一個非常常見的技巧(例如,在聯結主義建模中)是使用雙曲正切 tanh作為“擠壓函數”。它會自動將所有數字擬合到 -1 和 1 之間的區間內。在你的情況下,這限制了從0 到 1。輸入rmatlab您可以通過tanh().

另一個壓縮函數是邏輯函數(感謝 Simon 的名字),由,它將範圍限制在 0 到 1(0 映射到 0.5)。因此,您必須將結果乘以 2 並減去 1 以使您的數據適合 0 和 1 之間的區間。

這是一些簡單的 R 代碼,它繪製了這兩個函數(紅色為 tanh,藍色為邏輯),因此您可以看到兩者是如何壓縮的:

x <- seq(0,20,0.001)
plot(x,tanh(x),pch=".", col="red", ylab="y")
points(x,(1 / (1 + exp(-x)))*2-1, pch=".",col="blue")

引用自:https://stats.stackexchange.com/questions/1112

comments powered by Disqus

相關問答