应对高方差或继续训练
cope with high variance or keep training
我构建了一个维度层数 = [203,100,100,100,2] 的神经网络。所以我有 203 个特征并得到两个 classes 作为结果。我认为,就我而言,没有必要有两个 classes。我的结果是客户退出合同的预测。所以我想一个 class 就足够了(1 退出,0 留下)。我用两个 classes 构建了网络,以保持它的灵活性,如果我想在将来添加更多输出 -classes。
我放了 dropout、batch_normalization 和权重衰减。我正在使用 Adam 优化器进行训练。一天结束的时候,我想出了
precision: 0.7826087, recall: 0.6624 on test-data.
precision: 0.8418698, recall: 0.72445 on training-data
这意味着如果我预测客户会退出,我有 78% 的把握认为他真的会退出。
反之,如果他解约,我预测他会解约的概率是66%
所以我的 classifier 不能很好地工作。有一件事一直困扰着我:我怎么知道是否还有机会做得更好?换句话说:是否有可能计算我的设置确定的贝叶斯误差?或者更清楚地说:如果我的训练误差和测试误差的差异如此之高,我可以肯定地得出结论,我遇到了方差问题吗?还是我必须应对无法提高测试准确性的事实?
还有什么我可以尝试更好地训练?
我放了更多的训练数据。现在我使用 70000 条记录而不是 45000 条。
我的结果:
precision: 0.81765974, recall: 0.65085715 on test-data
precision: 0.83833283, recall: 0.708 on training-data
我非常有信心这个结果是最好的。感谢阅读
我构建了一个维度层数 = [203,100,100,100,2] 的神经网络。所以我有 203 个特征并得到两个 classes 作为结果。我认为,就我而言,没有必要有两个 classes。我的结果是客户退出合同的预测。所以我想一个 class 就足够了(1 退出,0 留下)。我用两个 classes 构建了网络,以保持它的灵活性,如果我想在将来添加更多输出 -classes。
我放了 dropout、batch_normalization 和权重衰减。我正在使用 Adam 优化器进行训练。一天结束的时候,我想出了
precision: 0.7826087, recall: 0.6624 on test-data.
precision: 0.8418698, recall: 0.72445 on training-data
这意味着如果我预测客户会退出,我有 78% 的把握认为他真的会退出。 反之,如果他解约,我预测他会解约的概率是66%
所以我的 classifier 不能很好地工作。有一件事一直困扰着我:我怎么知道是否还有机会做得更好?换句话说:是否有可能计算我的设置确定的贝叶斯误差?或者更清楚地说:如果我的训练误差和测试误差的差异如此之高,我可以肯定地得出结论,我遇到了方差问题吗?还是我必须应对无法提高测试准确性的事实?
还有什么我可以尝试更好地训练?
我放了更多的训练数据。现在我使用 70000 条记录而不是 45000 条。 我的结果:
precision: 0.81765974, recall: 0.65085715 on test-data
precision: 0.83833283, recall: 0.708 on training-data
我非常有信心这个结果是最好的。感谢阅读