年龄的神经网络序数分类

时间:2016-07-14 13:19:38

标签: machine-learning neural-network classification regression theano

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

网络不了解普通性这一事实可能会损害准确性。对于网络,年龄分类之间没有关系。它目前正在从softmax输出层中选择概率最高的年龄。

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

E.g给定年龄概率:(年龄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)

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

1 个答案:

答案 0 :(得分:15)

此问题出现在之前的Kaggle competition中(此主题引用了我在评论中提到的论文)。

这个想法是,假设你有5个年龄组,其中0 <0。 1&lt; 2&lt; 3&lt; 4,您可以将它们编码为K-1类并使用sigmoid目标,而不是对它们进行单热编码并使用softmax目标函数。所以,举个例子,你的编码就是

[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]

然后网将学习排序。希望这会有所帮助。