【问题标题】:NN training - using one hot encoding vs having artificial featuresNN 训练 - 使用一种热编码与人工特征
【发布时间】:2017-10-21 18:19:51
【问题描述】:

我正在尝试使用 NN 进行回归 - 我的设置有 2 个隐藏层。

我拥有的输入数据具有以下结构 - 特征 A、B、C、D 是数字的(可以采用从 -500k 到 500k 的值),特征 E 是分类的,F 是我想要的因变量预测。 A、B、C、D 会因国家/地区而异(因此我将国家/地区列为单独的特征)。

我在训练时尝试了两种不同的方法来表达特征 E:

  1. 一种热编码
  2. 使用现有的 A、B、C、D 功能

我附上了训练数据(组成值)的截图以及我的两种方法。

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

选项 (2) 效果很好(就 r^2 和单个预测的准确性而言),而 (1) 效果很差。

我还尝试在使用 one-hot-encoding 时对 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

【问题讨论】:

    标签: machine-learning tensorflow neural-network deep-learning feature-extraction


    【解决方案1】:

    我还尝试在使用 one-hot-encoding 时对 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

    【讨论】:

    • 嗯,我确实使用了 sklearn 的 StandardScaler - 它减去平均值并除以每个特征的标准差(因此,按列) - 你认为这还不够吗?
    猜你喜欢
    • 2017-12-11
    • 1970-01-01
    • 2020-03-29
    • 2019-06-18
    • 2016-05-08
    • 2021-01-23
    • 2018-03-12
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多