0

我試圖用一個神經網絡的迴歸 - 我的設置有2個隱含層。NN訓練 - 用一個熱碼VS具有人工功能

我輸入的數據具有以下結構 - 特徵A,B,C,D是數值的(可以取-500k到500k之間的值),特徵E是分類的,F是我試圖解釋的因變量預測。 A,B,C,D會因國而異(因此爲什麼我將國家作爲一項單獨功能)。

我曾嘗試兩種不同的方法來表達特徵Ê當訓練:

  1. 一個炎熱編碼
  2. 利用現有A,B,C,d設有

我已附加一個截圖顯示了培訓數據的外觀(構成值)以及我的兩種方法。

[data][1] 
[Option1][2] 
[Option2][3] 

選擇(2)工作得非常好(以R^2和準確性個別預測而言),而(1)工程相當嚴重。

我還試圖歸一化A,B,C,d(-mean/STD)使用一個熱編碼-但它並沒有太大的幫助時。值得注意的是 - 選項(2)工作得很好,即使是沒有正常化。

我的問題是 - 我怎麼能理解爲什麼是這樣?我認爲一個熱門的編碼應該可以正常工作,但看起來好像沒有。爲什麼NN從方法(2)更好地理解分類?

感謝

[1]: https://i.stack.imgur.com/sixHw.png 
[2]: https://i.stack.imgur.com/VMw8O.png 
[3]: https://i.stack.imgur.com/5eQxk.png 

回答

0

我也嘗試使用一個熱碼 - 正火時A,B,C,d,但它並沒有太大的幫助。

我建議你進一步檢驗這一點。這將是最好的事情。因爲如果數據在01的範圍內,神經網絡將更好地接近函數,因爲這符合激活函數。

但你總要歸所有數據同樣。爲了標準化數字,例如A = 346,則必須將其除以346或更高的數字,但也高於數據集中A的所有值。

如果A,B,C,d是相似的特點,可以歸他們所有的相同。如果它們具有完全不同的特性,請針對每個特性(A,B,C和D)執行相同的操作。

所以以下數據集:

{ A: 212, B: 1241, C: 321, D: 2, country: Germany } 
{ A: 72, B: 412, C: 545, D: 345, country: UK} 
{ A: 43, B: 123, C: 4, D: 977, country: Netherlands} 

你要分A,B,C和d由相同數量的正常化他們。這些國家應該是獨一無二的,就像你已經做過的那樣。

所以對於最高值A,B,C,d是1241,所以我將用這個值除以所有數字:

{ A: 0.17, B: 1, C: 0.26, D: 0, DE: 1, UK: 0, NL: 0 } 
{ A: 0.06, B: 0.33, C: 0.44, D: 0.28, DE: 0, UK: 1, NL: 0 } 
{ A: 0.03, B: 0.10, C: 0, D: 0.79, DE: 0, UK: 0, NL: 1} 

數字四捨五入

更多信息here

+0

嗯,我確實使用了sklearn中的StandardScaler - 它將每個特徵的stdev減去平均值和除數(所以,列式) - 您認爲這是不夠的嗎? – user80564

相關問題