PCA降低了我神经网络的准确性并导致过拟合

我正在尝试为手写数字分类问题实现一个神经网络。

我总共有42,000个带标签的图像样本和28,000个未标记的图像样本需要预测。每个图像是28×28的,因此总共有784个像素或特征。

首先,我使用sci-kit-learn的MinMaxScaler对数据样本进行归一化处理,并训练我的神经网络。该网络有9个隐藏层和590个隐藏节点,我使用的是ReLu激活函数。我的得分是97.399%,所以我认为这是不错的表现。

之后,我想应该使用PCA来降低数据的维度,从而加快训练过程。

我将数据的维度降低到100-300之间。

但是PCA降低了神经网络的准确性,并且还导致了过拟合。

使用PCA后,我的准确率低于50%。

我尝试更改隐藏层的数量和隐藏节点的数量,但准确率仍然低于50%。

那么我应该怎么办呢?


回答:

是的,这不会奏效,因为降低分辨率后的图像质量很差(没有用于预测的有用/良好特征)。

  • 尽管PCA不会丢弃所有其他像素,它只会转换数据以保留重要特征,但将维度降低到100-200个特征可能太低了。你无法用这么少的特征来表示一个好的图像。

  • 你必须选择维度的数量,以保留最大方差的方式进行。因此,对于图像来说,最大方差可以通过可视化图像来判断。

  • 在像素作为特征的图像中降低维度,意味着对图像进行降采样。所以如果你将特征(像素)的数量从784个特征(像素)减少到100-200个,那么大部分重要的特征可能会消失,导致性能不佳。

  • 尝试在降维后可视化图像,并将其与784像素的图像进行比较,你会看到其中的差异。

  • 如果你仍然想使用PCA并降低维度,你可以将其降低到一个你可以视觉上认可的水平,使图像具有足够的特征供算法使用。

希望这对你有帮助!

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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