如何在具有低特征的训练集上安装高精度的分类器?

时间:2016-05-08 09:29:34

标签: machine-learning classification octave supervised-learning

我在范围(0,1)中输入(r,c)作为图像像素的坐标,其颜色仅为1或2。

我有大约6,400像素。 我尝试拟合X =(r,c)和y =颜色是失败的,准确度不会高于70%。

这是图片:an anime character

第一个是实际图像,第二个是我用来训练的图像,它只有2种颜色。最后一个是神经网络生成的图像,大约有500次重量训练,50次迭代。输入层是2,一个大小为100的隐藏层,输出层是2.(对于这样的二进制分类,我可能只需要一个输出层,但我只是准备进行多类分类)

分类器无法适应训练集,为什么?我尝试生成这两个特征的高多项式项,但它没有帮助。我尝试在图片上使用高斯内核和随机20-100个地标来添加更多功能,也获得了类似的输出。我尝试使用逻辑回归,但没有帮助。

请帮我提高准确度。

以下是输入:input.txt (you can load it into Octave the variable is coordinate (r,c features) and idx (color)

您可以先尝试绘制它,以确保您理解输入,然后尝试对其进行训练并告诉我您是否获得更好的结果。

1 个答案:

答案 0 :(得分:1)

您的问题很难建模。你正在尝试适应从R ^ 2到R的函数,它有很多复杂性 - 很多"尖峰",许多不连续区域(与其余区域完全分离的像素)。这不是一个简单的问题,也不是一个有用的问题。为了使你的网络过度适应这种设置,你需要足够的隐藏单位。那么,有哪些选择呢?

问题中缺少的一般事项,并且很重要

  1. 如果您通过交叉熵成本(对数似然)拟合网络,则输出变量应为{0,1},您应将其用于分类。
  2. 50次迭代(如果你在谈论一些小批量迭代)是数量级到小,除非你的意思是50个时期(迭代整个训练集)。
  3. 实际情况,可能需要完成(至少下面之一):

    1. 我假设您正在使用ReLU激活(或Tanh,很难说看输出) - 您可以使用RBF激活,并将隐藏神经元的数量增加到~5000,
    2. 如果你不想使用RBF,那么你将需要1-2个额外的隐藏层来适应这种复杂性的功能。尝试使用100-100-100型的架构。
    3. 如果上述情况失败 - 增加隐藏单位的数量,这就是你所需要的 - 足够的容量。
    4. 通常:神经网络不适用于处理低维数据集。这是来自网络的一个很好的例子,你可以学习pix-pos到颜色的映射,但它完全是人为的,似乎实际上伤害了人们的直觉。