目标空间的一种热编码

数据挖掘 数据清理 预处理 分类器
2021-09-15 19:53:53

几天前,我参加了一个数据科学家工作的面对面面试。我被问到的问题之一是:在分类器从 4 个可能品牌中的某些特征(价格、尺寸、规格……)预测电视品牌的情况下,您如何对品牌变量进行编码?我的回答是one hot encoding,它被接受了,但后来他们要求我明确地这样做,我画了一些类似的东西:

brand A -> [1,0,0,0]
brand B -> [0,1,0,0]
brand C -> [0,0,1,0]
brand D -> [0,0,0,1]

然后,我在这些列不独立的原因下进行了纠正。并且解决方案应该是三个二进制列。

后来我突然想到我不知道为什么需要独立,而且三个二进制变量不是独立的。两个会。

有人可以提供一些解释来帮助我解决困惑吗?

1个回答

对于某些模型,确保输入是线性独立的可能很重要。我很确定输出永远不会出现这种情况。如果我们有两个以上的类,如果我们在输出向量中没有每个类的特定维度,那么输出类概率是非常困难的,如果不是不可能的话。换句话说,你的建议比你的面试官的建议具有更多的解释力,这解决了一些模型的输入上存在的问题,而不是输出上的问题。

在多类问题中,正如您所建议的,每个类在输出向量中都有自己的维度确实是常态。要么面试官试图让输入和输出编码看起来聪明而混乱(这仍然只适用于某些模型系列),要么你没有正确记住面试的事件。如果您确信面试如您所描述的那样进行,您应该考虑向您的联系人抱怨您因给出正确答案而受到批评。

随意引用以下作为多类分类器的流行/规范示例:

返回:形状数组 = [n_samples, n_classes]

当使用 categorical_crossentropy 损失时,你的目标应该是分类格式(例如,如果你有 10 个类,每个样本的目标应该是一个 10 维向量,它是全零的,期望在对应于类的索引处为 1样品)