年龄的神经网络序数分类
Posted
技术标签:
【中文标题】年龄的神经网络序数分类【英文标题】:Neural Network Ordinal Classification for Age 【发布时间】:2016-11-17 10:35:53 【问题描述】:我创建了一个简单的神经网络(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)
这个解决方案感觉不太理想。有没有更好的方法是在神经网络中实现序数分类,还是有更好的机器学习方法可以实现? (例如逻辑回归)
【问题讨论】:
你可以看看this paper。它描述了一种使用 NNets 设置序数回归的方法。 不幸的是,该链接不起作用,我不确定它是否与大学访问权限有关。你有它的名字吗? @gobrewers14 - 链接已损坏。你能发布标题或其他链接以找到它 @MiloMinderbinder updated link 我将添加标题和作者以防万一链接断开:序数回归的神经网络方法Jianlin Cheng、Zheng Wang 和 Gianluca Pollastri 【参考方案1】:这个问题出现在之前的Kaggle competition(这个帖子引用了我在cmets中提到的论文)。
这个想法是,假设您有 5 个年龄组,其中 0
[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]
然后网络将学习排序。希望这会有所帮助。
【讨论】:
拥有单个输出神经元并将每个类设为 0.2 个间隔是不是一个坏主意? @jinawee 是的,它也不好用。我已经为许多不同的问题使用了类似类型的网络,并且您描述的方法总是比 gobrewers14 描述的有序编码更糟糕。我不知道我是否会说“坏主意”,但肯定会说“不太好的主意”。任何阅读这篇文章的人,100% 同意这个答案以上是关于年龄的神经网络序数分类的主要内容,如果未能解决你的问题,请参考以下文章
基于Tensorflow卷积神经网络(CNN)的人脸年龄和性别检测系统
基于Tensorflow卷积神经网络(CNN)的人脸年龄和性别检测系统