如何在低特征情况下使分类器在训练集上达到高准确性?

我的输入是范围在(0, 1]内的(r,c),表示图像像素的坐标,其颜色仅为1或2。

我有大约6,400个像素。我尝试拟合X=(r,c)和y=颜色,结果失败了,准确率始终无法超过70%。

这是图像: 一个动漫角色

第一张是实际图像,第二张是我用于训练的图像,仅有两种颜色。最后一张是神经网络生成的图像,经过了500个权重和50次迭代的训练。输入层为2,一个隐藏层大小为100,输出层为2。(对于这种二元分类,我可能只需要一个输出层,但我正在为多类分类做准备)

分类器未能拟合训练集,这是为什么?我尝试生成这两个特征的高次多项式项,但没有帮助。我尝试使用高斯核和在图片上随机选择20-100个地标来增加更多特征,结果也类似。我还尝试了逻辑回归,同样没有帮助。

请帮助我提高准确率。

这是输入:input.txt(你可以将其加载到Octave中,变量为坐标(r,c特征)和idx(颜色))

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


回答:

你的问题难以建模。你试图拟合从R^2到R的函数,这个函数具有很多复杂性——很多“尖峰”,很多不连续区域(与其他部分完全分离的像素)。这不是一个容易的问题,也不是一个有用的问题。为了使你的网络过拟合到这种设置,你将需要大量的隐藏单元。那么,有哪些选项可以做到这一点呢?

问题中缺少的但很重要的一般内容

  1. 如果你是通过交叉熵成本(对数似然)来拟合你的网络,那么你的输出变量应该是{0, 1},这是你应该用于分类的成本函数。
  2. 50次迭代(如果你指的是某种小批量迭代)数量级太小,除非你是指50个周期(对整个训练集的迭代)。

实际需要做的可能的事情(至少需要做以下一项):

  1. 我假设你使用的是ReLU激活函数(或者Tanh,从输出来看很难说)——你可以改用RBF激活函数,并将隐藏神经元的数量增加到约5000个,
  2. 如果你不想使用RBF,那么你将需要1-2个额外的隐藏层来拟合这种复杂度的函数。尝试使用100-100-100这样的架构。
  3. 如果上述方法失败——增加隐藏单元的数量,这就是你所需要的——足够的容量。

总的来说:神经网络并不是为处理低维数据集而设计的。这是网络上一个很好的例子,你可以学习像素位置到颜色的映射,但它完全是人为的,似乎实际上损害了人们的直觉。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注