我训练了一个神经网络来对数据进行分类。我的数据集由大约 75% 的 1 类数据和 25% 的 2 类数据组成。经过训练,网络显示出 84.4% 的准确率。由于这些类不包含等量的数据,我还决定查看 ROC 曲线。我网络的最后一层使用了 softmax,因此我可以将输出解释为概率。
您可以在下图中的蓝线中找到它。
此外,我在那里绘制了网络的准确性与阈值的关系。所以 x 和 y 轴在这里必须有意义:对于蓝色曲线,x 和 y 轴分别是假阳性率和真阳性率。对于绿色曲线,x 轴是阈值,y 轴是网络的准确度。
如果选择阈值,蓝点表示阈值/准确度 (FPR/TPR). 我还标记了这个点,它标记了最高的准确率,即 85.1%(红色)。当您最小化 ROC 曲线与点 (0,1) 之间的距离时,您会得到灰点。它对应的准确率为 82.2%。
现在的问题:
- 改变阈值以最大限度地提高准确性是否在某种意义上有意义,还是应该始终坚持 0.5?
- 如果是这样,应该怎么做?如果要调整阈值,我假设这必须使用保留的数据集而不是测试集来完成。在此示例中,标准“最小化到 (0,1) 的距离”提供的结果比标准的 0.5 阈值差。仅仅寻找一个可以提高准确率的阈值一开始似乎是个好主意,但后来它与 ROC 曲线无关。这条曲线是如何发挥作用的?
- 如果我使用随机森林,解释会有什么变化?当我尝试它时,曲线看起来非常相似,即略高于 0.5 的阈值会产生更高的准确度。
- roc曲线下的面积如何帮助我提高精度?为什么看它甚至很有趣?最后,分类器中有一个固定阈值,那么为什么我对其他阈值的表现感兴趣呢?
