为了更多地了解机器学习算法,我正在玩我自己收集的一些数据,但是当我使用神经网络算法时,我有一种奇怪的行为......
我的数据集由分为3个不同类别的数据组成(比如A是数据集的5%,B是数据集的5%,C是数据集的90%)。
当我尝试使用“小”训练集(约1800个条目)时,我的训练集准确度接近100%(A:99%B:100%C:100% - >非常正常),但我的交叉验证设置和测试集准确性非常差。
所以我尝试使用更大的训练集(~12000个条目),我的训练集准确度急剧下降(A:18%,B:28%,C:99%),测试集的准确性确实如此还是不好。
然后我尝试了中等训练集(~5500个条目),正如预期的那样,训练集在两个先前的结果之间(A:45%,B:78%,C:99%)和测试 - 设定准确度显然很糟糕。
你知道这样结果可能是什么原因吗?我的数据集是否缺少可以帮助它区分A,B和C三个类别的定性特征,还是可以解释这些结果的另一个潜在原因?
配置我当前的神经网络,以防它提供一些提示:
答案 0 :(得分:1)
你对C级过度拟合,因为三个训练集的维度非常不平衡(5%,5%和90%)。这首先解释了交叉验证和测试集的低精度。然后,当训练集大小增加时,由于拥有如此多的C项,训练集的准确性也会下降,如果你使用较小的学习率,它们也会大幅修改网络权重。
换句话说,由A类和B类培训引起的权重修改基本上被网络“忘记”,因为C类培训引起的修改更为重要。