我正在尝试为手写数字分类问题实现一个神经网络。
我总共有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并降低维度,你可以将其降低到一个你可以视觉上认可的水平,使图像具有足够的特征供算法使用。
希望这对你有帮助!