我正在尝试使用NN进行回归 - 我的设置有2个隐藏层。
我输入的数据具有以下结构 - 特征A,B,C,D是数字(可以取-500k到500k的值),特征E是分类的,F是我想要的因变量预测。 A,B,C,D将因国家而异(因此我将国家列为单独的特征)。
我在训练时尝试过两种不同的方法来表达特征E:
我附上了培训数据的样子(组成值)以及我的两种方法的屏幕截图。
[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 :(得分:0)
我还尝试在使用单热编码时对A,B,C,D进行标准化,但它没有多大帮助。
我建议你进一步测试。这将是最好的事情。因为如果数据在0
到1
的范围内,神经网络将更好地逼近函数,因为这非常适合激活函数。
但您必须始终将所有数据标准化。标准化数字,例如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