问题:
目前时序分类准确率是40%,哪怕混入测试集,也只能达到55%,并且还是layer24,全参数的情况下,另外这个模型也在别的类似的任务和数据上测过没问题,那是为什么呢?
分析方法:
于是本人开始对这个进行实验对比,发现使用在别的数据上奏效的模型,结果换个类似数据集,结果使用小参数和全参数效果都不好,那是为什么呢?
仔细分析,考虑到是数据集的问题,然后将数据集中的5维数据换成了具有代表性的2维,其他三维直接抛弃,这时候发现准确率有了质的提升,直接在极小参数下,10个epoch之内三个验证集的准确率就达到了0.98,测试集准确率提升到了85%,这时候才发现了问题所在:也就是数据的问题,只应该使用含有噪声的5维数据,而是应该使用具有明显特征区分性的某1维或者2维,没有了其他几维的噪声之后,准确率立马接近100%。
中间也发现数据量特别少,但是经过复制补充数据量后,准确率也没有提升,这时候就判断出跟数据数量是没有问题的。于是就不用再数据增强了。
经过上面处理,在最终测试集上,准确率提升到了85%,后面我是如何提升到100%的呢?
后面我又尝试由之前的1维,再添加一维也有明显特征的数据用于训练,然后将准确率提升到了90%。
然后我是通过打印测试集中pred和true的标签,发现模型将标签15弄混淆成了16,我看了一下,在训练集和测试集中,**这两个标签的数据有问题,人工都无法判别,这才是导致错分的原因。**通过修补这两个类别的数据,将准确率提升到了100%。
这里还有一个思路:后处理方法,如果是15和16混淆,这时候可以设置规则,如果规则匹配到的16标签的超过判定为15的数量,就判定为16,否则判定为15。
也就是说在该任务上,准确率跟数据量无关,还是跟数据质量和数据处理方法及使用方法有关,跟用高质量还是低质量的数据有关,用了5维数据准确率最高是0.55,用了1维具有区分性的数据,准确率就能达到85%,用了两维具有区分性的数据,准确率就达到90%。再分析并修复最后错误的10%数据,准确率就达到了100%!!!
总结:
对数据的处理和使用特别重要,这个是影响准确率的绝对因素: 包括原始数据的质量,数据的处理方法,数据在代码中的使用,数据多个维度的重要性排名(这里推荐根据经验选择区分性强的维度,去除没有区分性的维度,否则准确率会一直上不去)
如果训练时发现准确率上不去,在模型没问题的情况下,首先要仔细检查一下数据是否有问题,人是否能否区分数据,如果人就无法区分,那么交给数据就肯定也不行,这时候就要提升数据质量了。