为什么使用 OneHotEncoding 可以更好地执行 NN?

Why performs the NN better with OneHotEncoding?

我有一个关于一般情况的问题。所以我正在使用 poker-hand-dataset,它有 10 个可能的输出,从 0-9,每个数字给出一个扑克手,例如皇家同花顺。

所以我在互联网上读到,有必要在多类问题中使用 OHE,因为如果不这样做,就会出现人为的顺序,例如,如果你处理城市。但在我的情况下,扑克手有一个订单,从一对超过同花顺到皇家同花顺,对吗?

尽管我的 nn 在 OHE 下表现更好,但在没有 OHE 的情况下它也能工作(但很糟糕)。 那么,为什么它与 OHE 配合使用效果更好呢?我做了一个有 2 个隐藏层的密集网络。

简短回答 - 根据 classification 中功能的使用以及您使用的 classifier 的实现,您决定是否使用 OHE。如果该特征是一个类别,以至于排名没有意义(例如,卡片的花色 1=梅花,2=红心...)那么您应该使用 OHE(对于需要分类区分的框架),因为排名它没有任何意义。如果该特征具有排名意义,关于class化,则保持原样(例如,获得某手牌的概率)。

因为你没有指定你正在使用 NN 的任务,也没有指定损失函数和许多其他东西 - 我只能假设当你说“......我的 nn 在 OHE 上表现更好”时你想要class 将组合确定为 class 手牌,在这种情况下,数据仅向学习者呈现 class 以区分它们(作为类别 不是 作为排名)。您可以添加概率 and/or 手的强度等特征,这将是一个排名特征 - 至于结果 classifier,如果添加它会改善与否,那就是另一个话题了(意思是class化性能的特征数量)。

希望我理解正确。

注意 - 这是一个大问题,有很多人在挥手,但这是范围。