年龄的神经网络序数分类

Neural Network Ordinal Classification for Age

我创建了一个简单的神经网络(Python,Theano)来根据他们在不同商店的消费历史来估计一个人的年龄。不幸的是,它不是特别准确。

准确度可能会因为网络不知道序数这一事实而受到影响。对于网络,年龄分类之间没有关系。它目前正在从softmax输出层中选择概率最高的年龄。

我考虑过将输出分类更改为每个年龄的加权概率的平均值。

例如给定年龄概率:(10 岁:20%,20 岁:20%,30 岁:60%)

Rather than output: Age 30 (Highest probability)
Weighted Average: Age 24 (10*0.2+20*0.2+30*0.6 weighted average)

这个解决方案感觉不是最优的。在神经网络中实现序数分类是否更好,或者是否有更好的机器学习方法可以实现? (例如逻辑回归)

这个问题出现在之前的Kaggle competition(这个帖子引用了我在评论中提到的论文)。

想法是,假设你有 5 个年龄组,其中 0 < 1 < 2 < 3 < 4,而不是对它们进行单热编码并使用 softmax objective 函数,你可以对它们进行编码进入 K-1 类 并使用 sigmoid objective。因此,例如,您的编码将是

[0] -> [0, 0, 0, 0]
[1] -> [1, 0, 0, 0]
[2] -> [1, 1, 0, 0]  
[3] -> [1, 1, 1, 0]
[4] -> [1, 1, 1, 1]

然后网络将学习排序。