Neural network neuralnet结果中的MSE和结果的roc曲线

Neural network neuralnet结果中的MSE和结果的roc曲线,neural-network,Neural Network,嗨,我的问题有点长,请把它读到最后 我正在做一个有30人参加的项目。我们有两种类型的数据集(第一个数据集有30行和160列,第二个数据集有30行和200列,作为输出=y,这些输出是独立的),我想做的是使用第一个数据集并预测第二个数据集的输出。因为第一个数据集是矩形的,并且具有高维,所以我使用了因子分析,现在有19个因子,覆盖了98%的方差。现在我想用这19个因子来预测第二个数据集的输出 我正在使用neuralnet和backpropogation,一切都很顺利,我的结果非常接近输出 我的问题是:

嗨,我的问题有点长,请把它读到最后

我正在做一个有30人参加的项目。我们有两种类型的数据集(第一个数据集有30行和160列,第二个数据集有30行和200列,作为输出=y,这些输出是独立的),我想做的是使用第一个数据集并预测第二个数据集的输出。因为第一个数据集是矩形的,并且具有高维,所以我使用了因子分析,现在有19个因子,覆盖了98%的方差。现在我想用这19个因子来预测第二个数据集的输出

我正在使用neuralnet和backpropogation,一切都很顺利,我的结果非常接近输出

我的问题是:

1-由于我的输入是因子(它们介于-1和1之间),而我的输出比例介于4到10000和整数之间,我是否应该在运行神经网络之前对它们进行比例调整

2-我缩放数据(输入和输出),然后用neuralnet进行预测,然后检查MSE误差,误差高达6000,而我的预测和实际输出非常接近。但是如果我重新缩放预测和输出,然后检查MSE是否接近零。重新缩放然后检查MSE是否公平

3-我读到最好不要从一开始就缩放输出,但如果我只缩放输入,我所有的预测都是1。不按比例调整输出是否正确

4-如果我想绘制ROC曲线,我该怎么做。因为我的结果永远不等于实际产出

感谢您阅读我的问题

[编辑#1]:有一本关于如何使用神经网络结果生成ROC曲线的出版物

1) 您可以缩放您的值(例如,使用minmax)。但只缩放您的训练数据集。保存缩放过程中使用的参数(在“最小-最大”中,它们将是缩放数据所依据的最小值和最大值)。只有这样,才能使用从训练数据集中获得的最小值和最大值来缩放测试数据集。记住,对于测试数据集,您试图模拟对不可见数据进行分类的过程。使用测试数据集中的缩放参数缩放未看到的数据

2) 当谈到错误时,一定要提到错误是根据哪个数据集计算的。您可以在训练数据集上计算一个误差函数(事实上,有不同的误差函数,其中一个是均方误差或MSE),另一个用于测试数据集

4) 想想看:假设你用测试数据集训练一个网络,它在输出层只有一个神经元。然后,将其与测试数据集一起呈现。根据您在输出层中使用的传递函数(激活函数),您将获得每个示例的值。假设您使用的是一个sigmoid传递函数,其中最大值和最小值分别为1和0。这意味着预测值将限制在1到0之间

我们还假设您的目标标签(“真值”)只包含0和1的离散值(指示示例属于哪个类)

你如何解释这一点? 可以应用硬限制函数,使NNprediction向量仅包含离散值0和1。假设您使用的阈值为0.5:

NNprediction_thresh_0.5 = [0 1 0 0 0 1 0];
vs. 
targetLabels             =[0 1 0 0 0 1 0];
利用这些信息,您可以计算假阳性、FN、TP和TN(以及一系列额外的衍生指标,如真阳性率=TP/(TP+FN))

如果你有一条ROC曲线显示假阴性率与真阳性率,这将是图中的一个点。但是,如果更改硬限制函数中的阈值,则可以获得完整曲线所需的所有值

有道理吗?查看一个进程对其他进程的依赖关系

NNprediction_thresh_0.5 = [0 1 0 0 0 1 0];
vs. 
targetLabels             =[0 1 0 0 0 1 0];